Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1239

 
BarCloseB1 = iClose(nameSym,xPeriod,xshiftBar);
BarCloseB1Signal = iClose(nameSymSignal,xPeriod,xshiftBar)

¡Buenos días!

Aprendo el valor de cierre del instrumento actual y el otro (el de la señal de la barra actual) al abrir una nueva barra horaria.

Pero en realidad el valor para el instrumento actual corresponde, mientras que el valor para el instrumento de señal toma el valor de la barra anterior, es decir, si xshiftBar = 1, entonces tomaxshiftBar=2 para el de señal, es decir, una barra más

 
Vitaly Muzichenko:

Sólo puedes retirar lo que has ganado con este recurso, que es la venta de software, señales y potencia informática. Lo que se ingresa sólo puede gastarse en este recurso.

Vitaly, lo has entendido mal. Primero tienes que retirar, y luego, cuando y si lo necesitas, puedes depositarlo.

 
Yerkin Sagandykov:

¡Buenos días!

Aprendo el valor de cierre del instrumento actual y el otro (el de la señal de la barra actual) al abrir una nueva barra horaria.

Pero en realidad el valor para el instrumento actual corresponde, mientras que el valor para el instrumento de señal toma el valor de la barra anterior, es decir, si xshiftBar = 1, entonces tomaxshiftBar=2 para el de señal, es decir, una barra más

Para comprobarlo, sustituye las variables por los valores 1 y 2. Entonces sabrá dónde está el error.

 
Alekseu Fedotov:

Con iCustom

Gracias, pero ¿podría decirme por qué los niveles dibujados bajan demasiado rápido?
Archivos adjuntos:
snake.mq4  16 kb
 
Alexey Viktorov:

Para comprobarlo, pon los valores 1 y 2 en lugar de las variables. Entonces sabrá dónde está el error.

El problema no está en los valores de las variables en mi opinión. Simplemente tengo un recálculo en mi código a la llegada de una nueva hora. y resulta que por el símbolo actual aparece una nueva barra y calcula el valor de la barra =1, pero por el símbolo de la señal es una nueva barra aún no se ha formado o algo así y calcula los valores de la barra =2

 if  ( iTime(nameSym, LPeriod, 0 ) == counted_bar ) return; 
Обработчик события "новый бар"
Обработчик события "новый бар"
  • www.mql5.com
Для создателей индикаторов и экспертов всегда был актуален вопрос написания экономичного кода с точки зрения времени выполнения. Можно подойти к решению этой задачи с разных сторон. Из этой обширной темы в данной статье будет затронут, казалось бы уже решенный вопрос: проверка появления нового бара. Это достаточно популярный способ ограничения...
 
Yerkin Sagandykov:

El problema no está en los valores de la variable en mi opinión. Acabo de hacer un recálculo en mi código, y resulta que para el símbolo actual aparece una nueva barra y calcula la barra =1, pero para el símbolo de la señal aún no se ha formado una nueva barra y calcula los valores de la barra =2

Quiero que sea exacto y no "según mi opinión". Así podré decir con certeza que la nueva barra aparece en el símbolo de la señal. Y de alguna manera esperar a este nuevo bar. Hay varias opciones, depende de ti decidir cuál usar.

 

Saludos. ¿Podría darme una pista, por favor?

Necesito calcular el máximo drawdown de las órdenes de un determinado EA.

Si cuento por todos los órdenes, entonces lo hago, y encaja con los resultados de la propia MT:

      if(AccountEquity()>max_equity){
         max_equity=AccountEquity();
      }   
      if(max_drawdown_total<max_equity-AccountEquity()){
         max_drawdown_total=max_equity-AccountEquity();
      } 

Lo calculo así para un Asesor Experto:

      if(MoneyCount()>max_equity_1){
         max_equity_1=MoneyCount();
      }   
      if(max_drawdown_total_1<max_equity_1-MoneyCount()){
         max_drawdown_total_1=max_equity_1-MoneyCount();
      }

double MoneyCount(){
   double count=0;
   for(int i=OrdersTotal()-1; i>=0; i--){
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic){
            count+=(OrderProfit()+OrderSwap()+OrderCommission()); //
         }   
      }
   }
   return count;
}

Creo que los resultados deberían ser los mismos en el probador, pero hay una diferencia (no inmediata) de un poco más de un porcentaje. ¿Qué estoy contando mal?

 
Buenas tardes. ¿Podría aconsejar qué idioma preferir mql4 o 5? ¿Y por qué mt4 tiene incorporado un meta-editor 5, o es también para mql4?
 
Hola, ¿podríais aconsejar cómo reflejar los valores de los indicadores en el código cuando uno se superpone a otro, por ejemplo, el ATR se superpone a la MA, es posible en MT4?
 
ZahvatkiN:
Hola, ¿podríais indicar cómo reflejar los valores de los indicadores en el código cuando uno se superpone a otro, por ejemplo, el ATR se superpone a la MA, es posible en MT4?

Para MQL4 utilice iMAOnArray(), para MQL5 - al crear un handle de iMA especifique el handle de un ATR previamente creado en lugar del precio al que se calcula la media móvil