Испытываю трудности с отправкой заказов. - страница 2

 
"2014.04.02 00:19:50.590 2010.10.15 00:00:00 failed exchange buy 0.07 GBPUSD at 1.60082[Invalid volume]"

 
MetaNt:
"2014.04.02 00:19:50.590 2010.10.15 00:00:00 failed exchange buy 0.07 GBPUSD at 1.60082 [Invalid volume]".

Пожалуйста, запустите этот небольшой скрипт на графике GBPUSD и сообщите о результате.

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

  }
 
angevoyageur:

Пожалуйста, запустите этот небольшой скрипт на графике GBPUSD и сообщите о результате.

Извините, я не видел этого сообщения. Я решал некоторые проблемы, которые у меня были с версией mql4 в демо-режиме.

Я запущу скрипт, спасибо.

 

Отчет

"2014.04.02 15:11:27.158 Lot (GBPUSD,D1) Volume min = 0.010000, volume step = 0.010000 для символа GBPUSD."

 
MetaNt:

Отчет

"2014.04.02 15:11:27.158 Lot (GBPUSD,D1) Volume min = 0.010000, volume step = 0.010000 для символа GBPUSD."

Это странно. Можете выложить весь соответствующий код, включая вызов ordersend и обработку ошибки (печать)?
 
angevoyageur:
Это странно. Можете ли вы выложить весь соответствующий код, включая вызов ordersend и обработку ошибки (печать)?

Да, ниже, как и просили.

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:

Да, ниже приведено в соответствии с запросом


Этот код неправильный, вы не можете использовать его так, как вы делаете.

buyticket1=(int)OrderGetInteger(ORDER_POSITION_ID);

Вы должны использовать структуру StageOneBuyRes для получения информации о заказе/сделке. В основном вам нужно проверить реткод, пожалуйста, посмотрите документацию или поищите на сайте примеры использования OrderSend(), он не работает как в mql4.

Ваш код, вероятно, возвращает ошибку там, где ее нет. Вы проверяли терминал, чтобы увидеть, была ли позиция открыта или увеличена?

В качестве примечания, но не относящегося к этой теме, следующий код, вероятно, не делает того, о чем вы думаете.

SymbolInfoInteger(_Symbol,SYMBOL_SESSION_DEALS)
 

Хорошо, я изменю это.

Я не уверен, что вы имеете в виду проверку терминала, там не показаны результаты бэктестинга.

 
MetaNt:

Хорошо, я изменю это.

Я не уверен, что вы имеете в виду проверку терминала, там не показаны результаты бэктестинга.

А, хорошо, я не понял, что это бэктестинг.
 
angevoyageur:

Этот код неправильный, вы не можете использовать его так, как вы делаете.

Вы должны использовать структуру StageOneBuyRes для получения информации о вашем заказе/сделке. В основном вам нужно проверить реткод, пожалуйста, посмотрите документацию или поищите на сайте примеры использования OrderSend(), он не работает как в mql4.


Btw как это может привести к появлению ошибки?