Советник, который я написал три месяца назад, сейчас не может пройти тестирование стратегии, но два или три месяца назад он работал отлично!!! - страница 3

 

Форум о трейдинге, автоматических торговых системах и тестировании торговых стратегий


angevoyageur, 2014.02.11 17:59

Здравствуйте,

Пожалуйста, используйте кнопку SRC при размещении кода. Спасибо.


В этот раз я отредактировал его для вас.


 
jitanic:

привет

отправка ордера работает на демо счете, но на реальном счете не работает(2014.11.30 18:21:00.062 55 (اخابر,D1) BuyA: ошибка 4756, retcode = 10006)


Почему вы используете такую нотацию, это трудно понять:

   request.action=5;
   request.type=6;
   request.type_filling=2;

использую это вместо этого:

   request.action=TRADE_ACTION_PENDING;
   request.type=ORDER_TYPE_BUY_STOP_LIMIT;
   request.type_filling=ORDER_FILLING_RETURN;  

Кстати, в любом случае это работает для меня.


 

Мне жаль.

пожалуйста, проверьте этот скрипт и укажите мне мою ошибку:

#property description "Expert Advisor for sending trade requests "
" using OrderSendAsync() function.\r\n"
#property description "Handling trading events using"
" OnTrade() and OnTradeTransaction() handler functions is displayed\r\n"
#property description "Expert Advisor parameters allow setting Magic Number"
" (unique ID) "
#property description "and the mode of displaying messages in Experts log. All details are displayed by default.\r\n"
input int  MagicNumber=1234567;      // Expert Advisor ID
input bool DescriptionModeFull=true; // Detailed output mode
input double  Price=2652;
input double  Volume=1000;
input double  stoplimit=2681;
input double  sl=1000;
input double  tp=2681;
//+------------------------------------------------------------------+
int OnInit()
  {
//--- check if autotrading is allowed
   if(!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
     {
      Alert("Autotrading in the terminal is disabled, Expert Advisor will be removed.");
      ExpertRemove();
      //--     return(-1);
     }
   CreateBuySellButtons();
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectDelete(0,"Buy");
   ObjectDelete(0,"Sell");
   ObjectDelete(0,"HALL");
  }
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {

  }
//+------------------------------------------------------------------+
void OnTrade()
  {

  }
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//--- handling CHARTEVENT_CLICK event ("Clicking the chart")
   if(id==CHARTEVENT_OBJECT_CLICK)
     {
      //--- if "Buy" button is pressed, then buy
      if(sparam=="Buy")
        {
         BuyA(Volume);
         //--- unpress the button
         ObjectSetInteger(0,"Buy",OBJPROP_STATE,false);
        }
      //--- if "Sell" button is pressed, then sell
      if(sparam=="Sell")
        {
         SellA(Volume);
         //--- unpress the button
         ObjectSetInteger(0,"Sell",OBJPROP_STATE,false);
        }
      ChartRedraw();
     }
  }
//+------------------------------------------------------------------+
void CreateBuySellButtons()
  {
   ObjectCreate(0,"Buy",OBJ_BUTTON,0,0,0); // create "Buy" button
   ObjectSetInteger(0,"Buy",OBJPROP_CORNER,CORNER_RIGHT_UPPER);
   ObjectSetInteger(0,"Buy",OBJPROP_XDISTANCE,100);
   ObjectSetInteger(0,"Buy",OBJPROP_YDISTANCE,50);
   ObjectSetInteger(0,"Buy",OBJPROP_XSIZE,70);
   ObjectSetInteger(0,"Buy",OBJPROP_YSIZE,30);
   ObjectSetString(0,"Buy",OBJPROP_TEXT,"Buy");
   ObjectSetInteger(0,"Buy",OBJPROP_COLOR,clrRed);
   ObjectCreate(0,"Sell",OBJ_BUTTON,0,0,0); // create "Sell" button
   ObjectSetInteger(0,"Sell",OBJPROP_CORNER,CORNER_RIGHT_UPPER);
   ObjectSetInteger(0,"Sell",OBJPROP_XDISTANCE,100);
   ObjectSetInteger(0,"Sell",OBJPROP_YDISTANCE,100);
   ObjectSetInteger(0,"Sell",OBJPROP_XSIZE,70);
   ObjectSetInteger(0,"Sell",OBJPROP_YSIZE,30);
   ObjectSetString(0,"Sell",OBJPROP_TEXT,"Sell");
   ObjectSetInteger(0,"Sell",OBJPROP_COLOR,clrBlue);
   ObjectCreate(0,"HALL",OBJ_LABEL,0,0,0); // create LABEL
   ObjectSetInteger(0,"HALL",OBJPROP_CORNER,CORNER_RIGHT_UPPER);
   ObjectSetInteger(0,"HALL",OBJPROP_XDISTANCE,100);
   ObjectSetInteger(0,"HALL",OBJPROP_YDISTANCE,150);
   ObjectSetInteger(0,"HALL",OBJPROP_XSIZE,70);
   ObjectSetInteger(0,"HALL",OBJPROP_YSIZE,30);
   ObjectSetString(0,"HALL",OBJPROP_TEXT,_Symbol);
   ObjectSetInteger(0,"HALL",OBJPROP_COLOR,clrBlue);
   ChartRedraw();
  }
//+------------------------------------------------------------------+
void BuyA(double volume)
  {
//--- prepare the request
   MqlTradeRequest request;
   MqlTradeResult  result;
   MqlTradeCheckResult check;
   ZeroMemory(request);
   ZeroMemory(result);
   ZeroMemory(check);
   request.action=TRADE_ACTION_PENDING;
   request.symbol=_Symbol;
   request.volume=1000.00;
  request.price=2652.000;
   request.stoplimit=2652.000;
   request.sl=0;
   request.tp=0;
request.type=ORDER_TYPE_BUY_STOP_LIMIT;
request.type_filling=ORDER_FILLING_RETURN; 
   request.type_time=0;
   request.expiration=0;
  request.magic=0;
request.comment="";
   if(!OrderSend(request,result))
     {
      Print(__FUNCTION__,": error ",GetLastError(),", retcode = ",result.retcode);
     }
//---
  }
//+------------------------------------------------------------------+
void SellA(double volume)
  {
//--- prepare the request
   MqlTradeRequest request;
   request.action=TRADE_ACTION_DEAL;
   request.symbol=_Symbol;
   request.magic=0;
   request.volume=Volume;
   request.type=ORDER_TYPE_SELL;
   request.price=SymbolInfoDouble(request.symbol,SYMBOL_BID);
   request.deviation=10;
   request.comment="Sell using OrderSendAsync()";
   MqlTradeResult  result;
   if(!OrderSendAsync(request,result))
     {
      Print(__FUNCTION__,": error ",GetLastError(),", retcode = ",result.retcode);
     }
  }
//+------------------------------------------------------------------+
 
jitanic:

Мне жаль.

пожалуйста, проверьте этот скрипт и укажите мне мою ошибку:

Он работает для меня. Я использовал TadbirTrader-Server для тестирования.
 
angevoyageur:
Это работает для меня. Я использовал TadbirTrader-Server для тестирования.
у вас есть реальный счет или вы проверяете на демо-счете?!!!
Documentation on MQL5: Standard Constants, Enumerations and Structures / Environment State / Account Properties
Documentation on MQL5: Standard Constants, Enumerations and Structures / Environment State / Account Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Environment State / Account Properties - Reference on algorithmic/automated trading language for MetaTrader 5
 
jitanic:
у вас реальный счет или проверка на демо-счете?!!!

Только на демо-счете.

P.S: Извините, я упустил момент, что это работает на демо-счете для вас тоже.

Какое значение возвращается на ваш реальный счет через :

   printf("expiration=%i",SymbolInfoInteger(_Symbol,SYMBOL_EXPIRATION_MODE));
   printf("filling=%i",SymbolInfoInteger(_Symbol,SYMBOL_FILLING_MODE));
 

у меня работает в демо-версии,

может это ограничение сервера?

 
jitanic:

у меня работает в демо-версии,

может это ограничение сервера?

Очевидно, есть что-то, что ограничивает вас в размещении этого отложенного ордера. Возможно, какие-то другие настройки для этого инструмента на реальном счете (см. мое предыдущее сообщение).

Ошибка 10006 : запрос отклонен - не очень полезное сообщение. Сколько раз вы пытались выставить этот ордер?

Текущие Bid/Ask/Last на демо-счете составляют 2638/2652/2640, на реальном счете они такие же?

 
angevoyageur:

Очевидно, есть что-то, что ограничивает вас в размещении этого отложенного ордера. Возможно, какие-то другие настройки для этого символа на реальном счете (см. мое предыдущее сообщение).

Ошибка 10006 : запрос отклонен - не очень полезное сообщение. Сколько раз вы пытались выставить этот ордер?

Текущие Bid/Ask/Last на демо-счете составляют 2638/2652/2640, на реальном счете они такие же?

спасибо за ответ

Я прикрепляю картинку свойств символа

если это не поможет, скажите мне: где вставить печатный ордер в мой код?

Файлы:
Untitled.png  47 kb
 
jitanic:

спасибо за ответ

Я прикрепляю картинку свойств символа

Если это не поможет, скажите мне: где вставить порядок печати в мой код?

Я не могу понять, почему это не работает.

Вы можете попробовать еще раз, сейчас? Это все еще не работает?