[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 1070

 
dzhini:
Pero no funciona :(
Así que no funciona en otros lugares o me estoy perdiendo algo
 
Reshetov:
Así que no funciona en otros lugares o me he perdido algo
¿Puedo llamar a su puerta en persona?
 
dzhini:
¿Puedo llamar a su puerta en persona?
No. Los mensajes privados son sólo para la comunicación personal. Y los errores en el código deben discutirse públicamente, para que otros no cometan los mismos errores, o alguien pueda compartir un enlace a una solución ya hecha.
 

Hola. Este sencillo código funciona con un error. Yo mismo no puedo entender la razón.

La primera orden abre, modifica. La segunda abre y... No se modifica. Lo mantiene hasta que falla.

En el registro dice:

"01:23:22 MarkTrade iniciado para las pruebas

01:23:22 2010.01.29 00:00 MarkTrade EURUSD,H1: open #1 comprar 1.00 EURUSD a 1.3965 ok

01:23:22 2010.01.29 00:00 MarkTrade EURUSD,H1: modificar #1 comprar 1.00 EURUSD a 1.3965 sl: 1.3935 tp: 0.0000 ok

01:23:22 2010.01.29 00:28 Probador: stop loss #1 en 1.3935 (1.3935 / 1.3937)

01:23:22 2010.02.01 00:00 MarkTrade EURUSD,H1: open #2 buy 1.00 EURUSD at 1.3877 ok

01:23:22 2010.05.05 13:17 MarkTrade: parado por Stop Out

01:23:22 2010.05.05 13:17 Probador: la orden #2 está cerrada

¡Me he equivocado! OrderSend devuelve un valor no booleano.

int start()
  {
  int total=OrdersTotal();
  if (total==0)
   {
      if (TimeHour(TimeCurrent())==00&&TimeMinute(TimeCurrent())==00)
      {
      Buy();
      }
   }
return(0);
  }
//////////////////////////
void Buy()
 {
 RefreshRates();
 if (OrderSend(Symbol(), OP_BUY, 1, NormalizeDouble(Ask,Digits), 0,0,0,"",123321,0,Blue)==true)
         {
           Modify();
         }
 }
/////////////////////////////
void Modify()
 {
    int total = OrdersTotal();
      for(int i=total-1;i>=0;i--)
       {
       OrderSelect(i, SELECT_BY_POS,MODE_TRADES);
       if (OrderModify (OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-NormalizeDouble(30*Point,Digits),OrderTakeProfit(),0,CLR_NONE)== false) Modify();
       }
 }
 

buenas tardes

Cómo crear un probador que funcione en diferentes marcos.

y lo recorre a través de la historia.

 

¡Buenos días!

Por favor, aclárese. Al optimizar el Asesor Experto, me di cuenta de que establecer diferentes TPs con el algoritmo genético activado produce diferentes resultados, es decir, si establezco TP=400, optimizo en pasos de 1 a 400, luego establezco 350, y optimizo en pasos de 1 a 350 y así sucesivamente hasta TP=50. ¡Así que resulta que si ejecuto sólo en TR = 400, entonces me "salta" los resultados que están en menor TP y mejor ! ¿Se debe a la genética? (El artículo https://www.mql5.com/ru/articles/1347 (Creado: 25.12.2009 Autor: Rider) dice: "...La genética es ciertamente algo útil, pero dentro de unos límites razonables. La cuestión es que su algoritmo puede gastar una broma cruel: se identificará algún conjunto de parámetros ventajoso, desde su punto de vista, y toda la optimización posterior irá "alrededor de él" hasta el final. Creo que está claro cuáles son las consecuencias. La mayoría de las variantes realmente buenas que funcionarán fuera del área de optimización se quedarán "fuera" y no aparecerán en la tabla de "Resultados de optimización".

Hay varias salidas. Una solución radical es rechazar el uso del algoritmo genético en la optimización. Pero esto no siempre es una buena solución por una u otra razón. Las dos siguientes son medias tintas, pero al menos algo:

- Realice la optimización no una vez, sino dos o más veces. La primera vez, digamos, por "Equilibrio", la siguiente por "Reducción máxima" u otra cosa..."). Entonces, para no obtener el mejor resultado, ¿debo ejecutarlo con diferentes TPs + por diferentes "parámetros optimizables" y además, por ejemplo, 9 pruebas de avance con 9 optimizaciones para cada prueba para la fiabilidad?

 
eddy:

el ciclo no se interrumpe por alguna razón

En su caso, Break desencadena e interrumpe el bucle sólo cuando se cumple la condición. Si la condición no se cumple, el bucle es infinito. Inténtalo de esta manera.

int sec=Seconds();
       while(true) 
        {if(sec!=Seconds())          // new sec
          { int ms=GetTickCount(); }
       break;
        }
 
volshebnik:

break en su caso sólo funciona si se cumple la condición

por eso está en if()
 
¿Cómo puedo cambiar las propiedades de un símbolo en el terminal? Dice que el nivel mínimo de parada es de 300. No puedo probar el EA.
 
Pro

Para cambiar el spread por ejemplo hay un programa TakeMySpread, pero cómo o con qué se puede cambiar el "Stop Level" para probar el EA en diferentes condiciones. ¡Ayuda!
Razón de la queja: