Помощь в кодировании - страница 522

 

Привет всем,

Я хотел бы знать, является ли это правильным способом вычисления значения индикатора в цикле for (по всем доступным барам):

int OnCalculate(...)

{

//...

ArraySetAsSeries(SignalLine,false);

//...

for(int i=0; i<Bars; i++)

{

double ma=iMA(NULL,0,MaPeriod,0,MaMethod,MaPrice,i);

//...

SignalLine=ma;

}

//...

}

//...

return rates_total

}

P.S. Логически в этом простом случае я хотел бы представить и построить репликацию MA с помощью объекта iMA. Но я не уверен в том, как я задаю цикл. Я получаю небольшую разницу по сравнению с тем, что рассчитывается с помощью встроенного MT4. Я не могу понять, почему!

Спасибо

 
har:
Привет всем,

Я хочу знать, является ли это правильным способом вычисления значения индикатора в цикле for (по всем доступным барам):

int OnCalculate(...)

{

//...

ArraySetAsSeries(SignalLine,false);

//...

for(int i=0; i<Bars; i++)

{

double ma=iMA(NULL,0,MaPeriod,0,MaMethod,MaPrice,i);

//...

SignalLine=ma;

}

//...

}

//...

return rates_total

}

P.S. Логически в этом простом случае я хотел бы представить и построить репликацию MA с помощью объекта iMA. Но я не уверен в том, как я задаю цикл. Я получаю небольшую разницу по сравнению с тем, что рассчитывается с помощью встроенного MT4. Я не могу понять, почему!

Спасибо

Когда вы используете iMA(), порядок не имеет значения.

Но правильный способ должен быть for(int i=Bars-1; i>=0; i--) - так вы избежите ошибок во многих случаях.

 

Спасибо, mladen. Итак, если я устанавливаю ArraySetAsSeries(SignalLine,false), я должен выполнить итерацию с

for (int i = 0; i < Bars; i++)

в то время как, наоборот, если ArraySetAsSeries(SignalLine,true), я должен итерировать с

for (int = Bars - 1; i >= 0; i--)

Это правильно?

 
har:
Спасибо, mladen. Это потому, что мы используем функцию ArraySetAsSeries(), тогда мы должны делать обратный итерационный переход по массиву, правильно? Спасибо!

Это ничего не меняет - вы получите элемент 0 с текущим значением, а когда придет новое текущее значение, этот элемент 0 SignalLine будет перезаписан новым значением.

Если SignalLine является буфером, просто не используйте ArraySetAsSeries(SignalLine,false) ;

 

Здравствуйте mladen mr tools и Igorad

Сердечное спасибо за мудрость, которой вы поделились, и предложенную помощь.

Я тоже обращаюсь к вам за помощью снова после долгого периода беременности, так что надеюсь, что привлеку ваше внимание, ваш индикатор T3 adaptive ma _ica.mq4 является моим любимым инди для торговли, хотя визуально хорошо трудно следовать вручную из-за отсутствия времени, поэтому я хотел бы, чтобы кто-нибудь помог мне в кодировании советника с этим индикатором стрелки как сигналы на покупку продажу принимать ордера с обычными удобствами советника, как трейлинг, bep и sl,tp наряду с размером лота.

Mladen и Igorad должны быть заняты - если они могут помочь, то я одарен, если нет, то кто-то, кто готов помочь, может помочь мне с этим. Если вам нужно, я могу прикрепить индикатор тоже. Это страница, где находится индикатор T3 adaptive ma"https://c.mql5.com/forextsd/forum/167/t3_adaptive_ma_i-ca_2.01_alerts_nmc.mq4

Я могу также запросить другие инди с t3 cci, но каждый инди работает отдельно в одном советнике с использованием true или false опции.Между всеми, кто заинтересован в lukas стрелки и кривые индикатор на основе EA- все еще нуждается в улучшении в анализе реальной кривой разворота цены, так как он основан на ma, цена не анализируется, но это все ОГРАНИЧЕННЫЕ в Форекс иначе каждый будет миллионером по выбору.

Надеюсь, это для живой торговли в кратчайшие сроки с помощью друзей форума.Я пытался закодировать его, но я не программист, так что все осталось тщетным, поэтому я поднимаю просьбу о помощи здесь.Без навыков кодирования определенно трудно придать очень сложные индикаторы, такие как T3 адаптивный с супер мозгом mladen.Трудно кодировать для новичка и не технаря.

Мечта велика, но то, что в руках - крошечное.

 

О, ок... Спасибо!

В C++ таких проблем не было...

 

Здравствуйте Младен

Надеюсь, вы рассмотрите эту помощь, пожалуйста, взгляните на это сообщение -#5118 одним сообщением выше вашего сообщения #5220.

Это был бы лучший подарок для меня с четкими руками, как у вас.

 
har:
О, ок... Спасибо! В C++ таких проблем не было...

Поскольку я всегда работаю с массивами в режиме, подобном C/C++, индексация в этих массивах идет от 0 (самый старый) до Bars-1 (самый новый) бар. Если вы используете индекс 0 для самого нового бара, он всегда будет переписывать 0-й элемент.

Если вы хотите использовать это как в C/C++, используйте массив, проверьте, равен ли его размер Bars, если нет, измените размер до размера Bars, а затем присвойте значения элементам, используя Bars-i-1 в качестве индекса.

Если это буфер, то индексация инвертируется по сравнению с C/C++ способом, и тогда вам не нужно ничего менять в этом цикле - просто удалите часть, которая устанавливает массив как серию в false.

 

Да, я видел! Я тоже догадался... В любом случае, просто небольшие различия между MQL и C++. В MQL очень много C, насколько я видел! Но мне определенно нравится MQL.

Я хочу поделиться своим индикатором, когда он будет готов (и если я смогу понять, полезен ли он) и дать руку вам, ребята!

 
har:
Ага, я видел! Я тоже догадался... В любом случае, между MQL и C++ есть небольшие различия. В MQL много C, насколько я видел! Но мне определенно нравится MQL Я хочу поделиться своим индикатором, когда он будет готов (и если я смогу понять, полезен ли он) и дать руку вам, ребята!

Даже если они выглядят похожими, они далеко не похожи, когда вы их запускаете. ex4 - это P-код. Его скорость выполнения по крайней мере в 100 раз ниже, чем у равноценного аналога на C/C++.

Если вы можете, напишите важные части в C/C++ dll - это будет намного быстрее.

Причина обращения: