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

 
MakarFX:

utilice las lecturas para construir la lógica de su indicador

No, no funciona así.

aquí . El indicador 1 siempre muestra un número - 2147483647. en cuanto se recibe una señal, muestra un número diferente en uno de los búferes. Esto lo he descubierto.

Pero el segundo indicador siempre muestra 0 o 2147483647 en 2 buffers simultáneamente

Archivos adjuntos:
 
Creo que lo he descubierto. Se supone que es así
  
     if (in1b<2147483647 && in2b>0 && in2b<2147483647)
           Sell[i]=low[i];
     if (in1s<2147483647 && in2s>0 && in2s<2147483647)
            Buy[i]=high[i];
 
jarikn:
Creo que lo he descubierto. Debería ser así

en este caso no se necesita ninguna especificación, es decir, sólo si >0

 
MakarFX:

en este caso no se necesitan las especificaciones, es decir, sólo si >0

pero que hay en los buffers cuando no hay señal. no creo que >0 funcione aquí. pero lo intentaré ahora

Archivos adjuntos:
 
jarikn:

Pero esto es lo que hay en los buffers cuando no hay señal. No creo que >0 funcione aquí. pero lo probaré ahora

el primer indicador tiene el valor EMPTY_VALUE cuando no hay señal

ir así

   if(iCustom(NULL,0,"in1",1,i)>0&&iCustom(NULL,0,"in1",1,i)<Bid*2&&iCustom(NULL,0,"in2",0,i)>0) // индикатор стрелка вниз

   if(iCustom(NULL,0,"in1",0,i)>0&&iCustom(NULL,0,"in1",0,i)<Bid*2&&iCustom(NULL,0,"in2",1,i)>0) // индикатор стрелка вверх
 

Por favor, ayúdenme a resolver este problema con el probador. Estoy probando la apertura de posiciones para CME en los futuros del EUR/USD

En la subida del mercado en el probador abro una posición larga en la ruptura con mi stop y la operación obtiene un ticket #2. El mercado sube y la siguiente posición se abre con un stop y la operación obtiene el ticket #3 en el probador.

Cuando el mercado va en contra de la posición #3 y llega a su stop, lo ideal es que la #3 cierre en el stop, y la #2 se quede allí, esperando que el precio llegue al stop #2. Pero por alguna razón, cuando la parada #3 se dispara, el probador cierra la posición #2 también.

El código de mql5 es

MqlTradeRequest request={};
MqlTradeResult  result={};
                                 
request.action = TRADE_ACTION_DEAL; //Вход рынку
request.symbol = Symbol();
request.volume = 1.0; //Кол-во фьючей
request.type   = ORDER_TYPE_BUY; //Купить
request.price  = SymbolInfoDouble(Symbol(),SYMBOL_ASK);   
request.sl     = NormalizeDouble(sl,5); // Стоп

bool check     = OrderSend(request,result);


 
NastyaMaley:

Por favor, ayúdenme a resolver este problema con el probador. Estoy probando la apertura de posiciones para CME en los futuros del EUR/USD

En la subida del mercado en el probador abro una posición larga en la ruptura con mi stop y la operación obtiene el número 2. El mercado subió y la siguiente posición se abre con un stop, la operación obtiene el número 3 en el probador.

Cuando el mercado va en contra de la posición #3 y llega a su stop, la idea es que la #3 cierre en el stop y la #2 se quede ahí, esperando que el precio llegue al stop #2. Pero por alguna razón, cuando la parada #3 se dispara, el probador cierra la posición #2 también.

El código de mql5 es


No conozco mql5, pero no veo donde hay una opción de orden de cierre
 
MakarFX:

el primer indicador tiene un valor de EMPTY_VALUE cuando no hay señal

debe hacerse así

Sí, así es. Eso es todo. Muchas gracias.

 

Creo que el motivo del comportamiento del probador ha quedado claro. El tipo de cuenta de demostración en la que el robot está probando es de tipo Netting. Por lo tanto, si se activa el stop especificado al abrir la posición nº 3, se cerrará todo el volumen de la posición. Por lo tanto, en la parada de la #3, cierra la #2 también, aunque tenía su propia parada separada establecida para ella cuando se abrió.

Con el tipo de cuenta Hedging, todo funcionaría como en el viejo mql4.

 
NastyaMaley:

Por favor, ayúdenme a resolver este problema con el probador. Estoy probando la apertura de posiciones para CME en los futuros del EUR/USD

En la subida del mercado en el probador abro una posición larga en la ruptura con mi stop y la operación obtiene un ticket #2. El mercado sube y la siguiente posición se abre con un stop y la operación obtiene el ticket #3 en el probador.

Cuando el mercado va en contra de la posición #3 y llega a su stop, lo ideal es que la #3 cierre en el stop, y la #2 se quede allí, esperando que el precio llegue al stop #2. Pero por alguna razón, cuando la parada #3 se dispara, el probador cierra la posición #2 también.

El código de mql5 es el siguiente

No debes usar paradas. En lugar de utilizar stops, deberíamos colocar órdenes pendientes de la dirección opuesta.