Es difícil enviar los pedidos. - página 2

 
"2014.04.02 00:19:50.590 2010.10.15 00:00:00 falló la compra de divisas 0.07 GBPUSD a 1.60082[Volumen no válido]"

 
MetaNt:
"2014.04.02 00:19:50.590 2010.10.15 00:00:00 falló la compra de divisas 0.07 GBPUSD a 1.60082 [Volumen no válido]"

Por favor, ejecute este pequeño script en un gráfico de GBPUSD, e informe del resultado.

void OnStart()
  {
   printf("Volume min = %f, volume step = %f for symbol %s.",
          SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN),
          SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP),
          _Symbol);

  }
 
angevoyageur:

Por favor, ejecute este pequeño script en un gráfico de GBPUSD, y reportar el resultado.

Lo siento, no vi el post. Estaba tratando algunos de los problemas que había estado teniendo con la versión mql4 de esto en el modo de demostración.

Voy a ejecutar el script gracias

 

Informe

"2014.04.02 15:11:27.158 Lote (GBPUSD,D1) Volumen min = 0.010000, volumen step = 0.010000 para el símbolo GBPUSD."

 
MetaNt:

Informe

"2014.04.02 15:11:27.158 Lote (GBPUSD,D1) Volumen min = 0.010000, volumen step = 0.010000 para el símbolo GBPUSD."

Es raro. ¿Puedes publicar todo el código relevante, incluyendo la llamada a la orden y el procesamiento de errores (impresión)?
 
angevoyageur:
Es raro. ¿Puedes publicar todo el código relevante, incluyendo la llamada a ordersend y el procesamiento de errores (impresión)?

Sí, está abajo como se pidió

Lot=LotSize/8;


MqlTradeResult StageOneBuyRes={0};
MqlTradeRequest StageOneBuy={0};

StageOneBuy.action=TRADE_ACTION_DEAL;  
StageOneBuy.magic=MagicNumber;  
StageOneBuy.symbol=_Symbol;            // symbol
StageOneBuy.volume=Lot;
StageOneBuy.price=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
StageOneBuy.sl=0;                  // Stop Loss is not specified
StageOneBuy.tp=0;                 // Take Profit is not specified 
StageOneBuy.deviation =7;  
StageOneBuy.type=ORDER_TYPE_BUY; // order type
StageOneBuy.type_filling = ORDER_FILLING_FOK;
StageOneBuy.comment = "test";
 

MqlTradeResult StageOneSellRes={0};
MqlTradeRequest StageOneSell={0};

StageOneSell.action=TRADE_ACTION_DEAL;  
StageOneSell.magic=MagicNumber;  
StageOneSell.symbol=_Symbol;            // symbol
StageOneSell.volume=Lot;
StageOneSell.price=SymbolInfoDouble(_Symbol,SYMBOL_BID);
StageOneSell.sl=0;                  // Stop Loss is not specified
StageOneSell.tp=0;                 // Take Profit is not specified 
StageOneSell.deviation =7;  
StageOneSell.type=ORDER_TYPE_SELL; // order type
StageOneSell.type_filling = ORDER_FILLING_FOK;
StageOneSell.comment = "test";

if(SymbolInfoInteger(_Symbol,SYMBOL_SESSION_DEALS)==0){if(OrderSend(StageOneBuy,StageOneBuyRes))buyticket1=(int)OrderGetInteger(ORDER_POSITION_ID);}
       if(buyticket1>0){Print("Order Placed ","Order Ticket ", buyticket1," Order Lots ",OrderGetDouble(ORDER_VOLUME_INITIAL));return;}else{Print("Order Placement Unsuccessful ", GetLastError());return;}

if(SymbolInfoInteger(_Symbol,SYMBOL_SESSION_DEALS)==0){if(OrderSend(StageOneSell,StageOneSellRes))sellticket1=(int)OrderGetInteger(ORDER_POSITION_ID);}
       if(sellticket1>0){Print("Order Placed ","Order Ticket ", sellticket1," Order Lots ", OrderGetDouble(ORDER_VOLUME_INITIAL));return;}else{Print("Order Placement Unsuccessful ", GetLastError());return;}
 
MetaNt:

Sí, está abajo como se pide


Este código no es correcto, no puedes usarlo como lo haces.

buyticket1=(int)OrderGetInteger(ORDER_POSITION_ID);

Tienes que utilizar la estructura StageOneBuyRes para obtener información sobre tu pedido/acuerdo. Principalmente tienes que comprobar el retcode, por favor mira la documentación o busca en el sitio para ver ejemplos del uso de OrderSend(), no funciona como con mql4.

Tu código probablemente está devolviendo un error donde no lo hay. ¿Revisaste el terminal para ver si una posición estaba abierta o aumentada?

Como nota al margen, pero no relacionada con este tema, el siguiente código probablemente no haga lo que crees que hace.

SymbolInfoInteger(_Symbol,SYMBOL_SESSION_DEALS)
 

Correcto, lo modificaré.

No estoy seguro de lo que quieres decir con la comprobación de la terminal, no hay ningún resultado de backtesting se muestra allí.

 
MetaNt:

Correcto, lo modificaré.

No estoy seguro de lo que quieres decir con la comprobación de la terminal, no hay ningún resultado de backtesting se muestra allí.

Ah ok, no me di cuenta de que era un backtesting.
 
angevoyageur:

Este código no es correcto, no puedes usarlo como lo haces.

Tienes que utilizar la estructura StageOneBuyRes para obtener información sobre tu pedido/acuerdo. Principalmente tienes que comprobar el retcode, por favor mira la documentación o busca en el sitio ejemplos del uso de OrderSend(), no funciona como con mql4.


Por cierto, ¿cómo se produce el error?