Encontrando dificuldades para enviar pedidos. - página 2

 
"2014.04.02 00:19:50.590 2010.10.15 00:00:00:00 compra de câmbio falida 0.07 GBPUSD a 1.60082[Volume inválido]".

 
MetaNt:
"2014.04.02 00:19:50.590 2010.10.15 00:00:00:00 compra de câmbio falida 0.07 GBPUSD a 1.60082 [Volume inválido]".

Por favor, execute este pequeno roteiro em um gráfico GBPUSD, e informe o 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, execute este pequeno roteiro em um gráfico GBPUSD, e informe o resultado.

Desculpe, eu não vi o post. Eu estava lidando com alguns problemas que eu estava tendo com a versão mql4 deste em modo de demonstração.

Vou executar o script, obrigado.

 

Relatório

"2014.04.02 15:11:27.158 Lote (GBPUSD,D1) Volume min = 0,010000, etapa de volume = 0,010000 para o símbolo GBPUSD".

 
MetaNt:

Relatório

"2014.04.02 15:11:27.158 Lote (GBPUSD,D1) Volume min = 0,010000, etapa de volume = 0,010000 para o símbolo GBPUSD".

É esquisito. Você pode postar todo o código relevante, incluindo a chamada de pedido e o processamento de erros (impressão) ?
 
angevoyageur:
É esquisito. Você pode postar todo o código relevante, incluindo a chamada de pedido e o processamento de erros (impressão) ?

Sim, está abaixo conforme solicitado

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:

Sim, está abaixo conforme solicitado


Este código não está certo, você não pode usá-lo como você faz.

buyticket1=(int)OrderGetInteger(ORDER_POSITION_ID);

Você tem que usar a estrutura StageOneBuyRes para obter informações sobre seu pedido/problema. Principalmente você tem que verificar o código retcode, consulte a documentação ou procure no site por exemplos do uso do OrderSend(), ele não funciona como no mql4.

Seu código provavelmente está retornando um erro onde não existe. Você verificou o terminal para ver se uma posição estava aberta ou aumentada?

Como nota lateral, mas não relacionado a este tópico, o seguinte código provavelmente não faz o que você acha que ele faz.

SymbolInfoInteger(_Symbol,SYMBOL_SESSION_DEALS)
 

Certo, eu vou emendar isso.

Não tenho certeza do que você quer dizer com a verificação do terminal, não há nenhum resultado de testes anteriores mostrados lá.

 
MetaNt:

Certo, eu vou emendar isso.

Não tenho certeza do que você quer dizer com a verificação do terminal, não há nenhum resultado de testes anteriores mostrados lá.

Ah ok, eu não o peguei foi um retrocesso.
 
angevoyageur:

Este código não está correto, você não pode usá-lo como você faz.

Você tem que usar a estrutura StageOneBuyRes para obter informações sobre seu pedido/problema. Principalmente você tem que verificar o código retcode, consulte a documentação ou procure no site por exemplos do uso do OrderSend(), ele não funciona como no mql4.


Como isso fará com que o erro apareça?