Results 1 to 2 of 2

Thread: Мне нужна помощь, чтобы мой MoneyMaker EA работал быстрее

  1. #1
    Привет, у меня есть вопрос к некоторым действительно хорошим программистам метатрейдеров. В моем советнике я переключаюсь между таймфреймами в зависимости от функции. Если эксперт определяет, что я должен использовать 15-минутные таймфреймы, то он вызывает RangePrefetch () сразу после start (). Если мне нужно использовать 1-часовые графики, то советник вызывает TrendPrefetch () сразу после start (). И RangePrefetch (), и TrendPrefetch () абсолютно одинаковы, за исключением периода, и они определены и сразу после init ().

    Проблема состоит в том, что из-за этого переключения между таймфреймами, для его тестирования и оптимизации требуется значительно больше времени. Поэтому мне интересно, есть ли какой-нибудь способ переупорядочить код или просто кодировать его более эффективным способом, чтобы он работал намного быстрее. большое спасибо.

    Вставленный код extern double JumpWidth_Percen = 0,25; строка Trend, Buy, Sell, TradeComm; двойной Close1, Close2, Close3, Close4, Close5, Close6, Open1, Open2, Open3, Open4, Open5, Open6, Fast1, Fast2, Fast3, Fast3, Fast5, Fast6, Slow1, Slow2, Slow3, Slow4, Slow5, Slow6, Средний , FastW, Currency_momentumA, Currency_momentumB, Currency_momentumC, Trend_momentumFastA, Trend_momentumFastB, Trend_momentumFastC, Trend_momentumFastD, Trend_momentumSlowA, Trend_momentumSlowB, ширина1, ширина2, ширина, ширина, ширина2, ширина-ширина5, ширина-ширина5, ширина-широта, ширина-ширина-ширина-широта int Trendd, MaxpipfromEMA, Ranging, RangingS, TFTime; void TrendPreFetch () {Среднее = iMA (NULL, PERIOD_H1,3,0, MODE_EMA, PRICE_CLOSE, 1); FastW = IMA (NULL, PERIOD_H1, fastma * 3.8,0, MODE_EMA, PRICE_CLOSE, 1); Currency_momentumA = iCustom (NULL, PERIOD_H1, OSMAMA, 4,6, currency_momentum, 1, currency_momentum, 0,1); Currency_momentumB = iCustom (NULL, PERIOD_H1, OSMAMA, 4,6, currency_momentum, 1, currency_momentum, 1,1); Currency_momentumC = iCustom (NULL, PERIOD_H1, OSMAMA, 4,6, currency_momentum, 1, currency_momentum, 0,5); Trend_momentumFastA = iCustom (NULL, PERIOD_H1, OSMAMA, 4,6, trend_momentum, 1, trend_momentum, 0,1); Trend_momentumFastB = iCustom (NULL, PERIOD_H1, OSMAMA, 4,6, trend_momentum, 1, trend_momentum, 0,2); Trend_momentumFastC = iCustom (NULL, PERIOD_H1, OSMAMA, 4,6, trend_momentum, 1, trend_momentum, 0,3); Trend_momentumFastD = iCustom (NULL, PERIOD_H1, OSMAMA, 4,6, trend_momentum, 1, trend_momentum, 1,1); Trend_momentumSlowA = iCustom (NULL, PERIOD_H1, OSMAMA, 6,8, SlowMA * 3, 3 * currency_momentum, currency_momentum * 3,0,1); Trend_momentumSlowB = iCustom (NULL, PERIOD_H1, OSMAMA, 6,8, SlowMA * 3, 3 * currency_momentum, currency_momentum * 3,0,5); } void RangePreFetch () {Среднее = iMA (NULL, PERIOD_M15,3,0, MODE_EMA, PRICE_CLOSE, 1); FastW = IMA (NULL, PERIOD_M15, fastma * 3.8,0, MODE_EMA, PRICE_CLOSE, 1); Currency_momentumA = iCustom (NULL, PERIOD_M15, OSMAMA, 4,6, currency_momentum, 1, currency_momentum, 0,1); Currency_momentumB = iCustom (NULL, PERIOD_M15, OSMAMA, 4,6, currency_momentum, 1, currency_momentum, 1,1); Currency_momentumC = iCustom (NULL, PERIOD_M15, OSMAMA, 4,6, currency_momentum, 1, currency_momentum, 0,5); Trend_momentumFastA = iCustom (NULL, PERIOD_M15, OSMAMA, 4,6, trend_momentum, 1, trend_momentum, 0,1); Trend_momentumFastB = iCustom (NULL, PERIOD_M15, OSMAMA, 4,6, trend_momentum, 1, trend_momentum, 0,2); Trend_momentumFastC = iCustom (NULL, PERIOD_M15, OSMAMA, 4,6, trend_momentum, 1, trend_momentum, 0,3); Trend_momentumFastD = iCustom (NULL, PERIOD_M15, OSMAMA, 4,6, trend_momentum, 1, trend_momentum, 1,1); Trend_momentumSlowA = iCustom (NULL, PERIOD_M15, OSMAMA, 6,8, SlowMA * 3, 3 * currency_momentum, currency_momentum * 3,0,1); Trend_momentumSlowB = iCustom (NULL, PERIOD_M15, OSMAMA, 6,8, SlowMA * 3, 3 * currency_momentum, currency_momentum * 3,0,5);} int start () {double Averagepips, Opentime, Stopip; int i, open, Spike, SpikeW, Buyjump, Selljump, BuyjumpR, SelljumpR, Ticket, Cnt, Can; double SlowTrend = iMA (NULL, PERIOD_H1, замедление, 0, MODE_EMA, PRICE_CLOSE, 1); double FastTrend = iMA (NULL, PERIOD_H1, fastma, 0, MODE_EMA, PRICE_CLOSE, 1); if ((MathAbs (FastTrend-SlowTrend) gt; RangePoint * Point)) {RangingS = 2; } else {RangingS = 1; } if ((TFTime! = iTime (Symbol (), PERIOD_M15,1)) (RangingS == 1)) {RangePreFetch (); MaxpipfromEMA = MaxpipfromEMAM; Ранжирование = 1; TFTime = iTime (Символ (), PERIOD_M15,1); } if ((TFTime! = iTime (Symbol (), PERIOD_H1,1)) (RangingS == 2)) {TrendPreFetch (); MaxpipfromEMA = MaxpipfromEMAH; Ранжирование = 0; TFTime = iTime (Символ (), PERIOD_H1,1); }

  2. #2
    Даже с оптимизацией функция iCustom действительно замедлит работу вашего советника. Тем не менее, у меня есть пара рекомендаций: Рассчитайте эти индикаторы в последний момент. Вместо того, чтобы эти операторы if вызывали RangePreFetch и TrendPreFetch, им нужно установить для переменной периода либо PERIOD_H1, либо PERIOD_M15. Затем вычислите индексы по мере необходимости, используя ваш период var для инди таймфрейма. Вместо того, чтобы вычислять каждый индекс для каждого тика, вы, вероятно, обнаружите, что для большинства тиков вы рассчитываете только два или около того индекса. Оптимизировать индекс. Там обычно много места для оптимизации в пользовательских индикаторах. Если у вас есть источник, дайте ему еще раз. </Р>

Действующие разрешения

  • Вы не можете создавать новые темы
  • Вы не можете размещать ответы
  • Вы не можете использовать вложения
  • Вы не можете редактировать ваши записи
  •  
  • BB-код - Вкл.
  • Смайлики - Вкл.
  • Код [IMG] - Вкл.
  • Код [VIDEO] - Вкл.
  • HTML-код - Выкл.
Веб-сайт использует cookies
Веб-сайт использует cookies, в настоящее время некоторые из них уже установлены. Вы можете ознакомиться с более подробной информацией об использовании нами cookies здесь. Чтобы принять условия использования cookies, пожалуйста, нажмите на кнопку справа. Если вы продолжаете пользоваться веб-сайтом, вы по умолчанию принимаете условия использования cookies.