Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Узнай, как социальный трейдинг увеличит твой доход
Alexey Klenov
1865
Alexey Klenov 2013.12.05 10:58 

Добрый день

Есть ДЦ (пока не буду называть его) у него хотел войти на новости

несколько терминалов вошли с проскальзыванием (это как и ожидалось) но три не вошли хотя была реквота с ценой ниже чем бы при максимальном проскальзывании.

Вот часть эксперта по открытию

extern double LotNormal=0.1;     // Лот для безопасной торговли
extern int sleeppageNormal=15;         // слип на исполнение 
extern int  tp_Ot_pr_open_posNormal=50;                // профит от цены открытия ордера
int mult=1;

//+------------------------------------------------------------------+
int init()
   {
   MathSrand(TimeLocal());
   magic=MathRand()+1;
   maxPipsThenNotTradeNormal=sleeppageNormal;
   maxPipsThenNotTradeAgress=sleeppageAgress;
   globalTicket=0;
   BUModifyOk=false;
   if(Digits==3 || Digits==5){mult=10;}

      return(0);
   }






bool ОткрытиеОрдеров(int type,double inLot, int prolet, int profit,int sleepp)
   {
         double pr_open,_TP,_SL;
         //int ticket=0;
         
         int startOpenMS=0,openMS=0,startmodyMS=0,modyMS=0;
         
         //while(ticket==0)      // так как открываем один только раз реквоты смысла нет отыгрывать
            {
               if (!IsTradeContextBusy())
                  {
                     RefreshRates();
                     if (type==0){pr_open=NormalizeDouble(Ask,Digits);}
                     if (type==1){pr_open=NormalizeDouble(Bid,Digits);}
                     //Print (MathAbs(Open[0]-pr_open)," ",maxPipsThenNotTrade*Point*mult);
                     if ((type==0 && (pr_open-Close[1])>prolet*Point*mult) || //  текущий аск еще не ускакал вверх при покупке
                         (type==1 && (Close[1]-pr_open)>prolet*Point*mult))   // текущий бид еще не упал вниз при продаже                 
                       // уже поздно входить
                        {
                           Print (pr_open," ",Close[1]," ",pr_open-Close[1]," "," Цена пролетела ",MathAbs(Close[1]-pr_open)/Point/mult,"  настройка=",prolet," пунктов");
                           return(false);
                        }
                     startOpenMS=GetTickCount();
                     globalTicket=OrderSend(Symbol(),type,inLot,pr_open,sleepp*mult,0.0,0.0,"",magic,0,DarkOrange);
                     openMS=GetTickCount();
                     if (globalTicket<0){Print("Ошибка открытия ордера",  GetLastError());} 
                     
                     if (globalTicket>0)
                        {
                           startmodyMS=GetTickCount();
                           OrderSelect(globalTicket,SELECT_BY_TICKET,MODE_TRADES);
                           if (type==0){_TP=OrderOpenPrice()+profit*Point*mult;_SL=OrderOpenPrice()-SL_Ot_pr_open_pos*Point*mult;}
                           if (type==1){_TP=OrderOpenPrice()-profit*Point*mult;_SL=OrderOpenPrice()+SL_Ot_pr_open_pos*Point*mult;}
                           OrderModify(globalTicket,OrderOpenPrice(),_SL,_TP,0,Aqua);
                           modyMS=GetTickCount();
                        }
                     Print("cmd=",type," хотели по цене=",DoubleToStr(pr_open,Digits)," а исполнили по цене=",DoubleToStr(OrderOpenPrice(),Digits)," _SL=",DoubleToStr(_SL,Digits)," _TP=",DoubleToStr(_TP,Digits), " lot=",inLot);                  
                     Print("время на открытие =", openMS-startOpenMS, " время на модификацию=",modyMS-startmodyMS); 
                     priceOpenNewsBar=Open[0];                 
                  }
              //else {break;}    
            }
           //bars=Time[1];
      return(0);   
   }
//********************************************************************************************

... вызов и start
            if(buyNormal)
               {
                  //timestartsend=GetTickCount();
                  ОткрытиеОрдеров(0,LotNormal,maxPipsThenNotTradeNormal,tp_Ot_pr_open_posNormal,sleeppageNormal);
                  Print("Отправили запрос по безопасному бай по цене ",Ask," ",hread[1]," ",GetTickCount()-hread[1], " общее время на открытие и модификацию брокером=",GetTickCount()-timestartsend);
                  lastSignalIsTrade=true;
                  buyNormal=false;
               }


Вот лог терминала

16:30:01 '*******': instant order buy 3.00 USDJPY at 98.87 sl: 0.00 tp: 0.00
16:30:01 '*******': request was accepted by server
16:30:02 '*******': requote 98.89 / 98.91 for open buy 3.00 USDJPY at 98.87 sl: 0.00 tp: 0.00

А вот лог эксперта

16:06:57 _tradeBuySell_mt4_v2-02 USDJPY,M1 inputs: LotNormal=3; LotAgress=3; sleeppageNormal=13; sleeppageAgres-s=10; tp_Ot_pr_open_posNormal=50; tp_Ot_pr_open_posAgress=35; SL_Ot_pr_open_pos=30; Kogda_stavit_BU=8; point_BU=1; ReversInputSignal=false; 
16:30:02 _tradeBuySell_mt4_v2-02 USDJPY,M1: Ошибка открытия ордера138
16:30:02 _tradeBuySell_mt4_v2-02 USDJPY,M1: cmd=0 хотели по цене=98.87 а исполнили по цене=1.67 _SL=0.00 _TP=0.00 lot=3
16:30:02 _tradeBuySell_mt4_v2-02 USDJPY,M1: время на открытие =358 время на модификацию=0
16:30:02 _tradeBuySell_mt4_v2-02 USDJPY,M1: Отправили запрос по безопасному бай по цене 98.87 -1006854429 374 общее время на открытие и модификацию брокером=358

Из лога видно что терминал запускался с параметрами слипа 13 пунктов

по коду эксперта приказ уходит с параметром слипа 13*1

но в итоге получаю реквтоту по цене заказанная + 4п целых, то есть укладывается с запасом в проскальзывание

и еще почему то функция при таком "глюке"

DoubleToStr(OrderOpenPrice(),Digits)

возвращает значение 1,67 ну никак к баксене эта цена не прикручивается.

на другом счете этого же брокера данный эксперт отправил приказ по цене 98,87 а открыли по 99,00 то есть уложился в 13п целых ровно счет так же инстант исполнение

16:30:03 _tradeBuySell_mt4_v2-02 USDJPY,M1: open #27662910 buy 2.00 USDJPY at 99.00 ok
16:30:04 _tradeBuySell_mt4_v2-02 USDJPY,M1: modify #27662910 buy 2.00 USDJPY at 99.00 sl: 98.70 tp: 99.50 ok
16:30:04 _tradeBuySell_mt4_v2-02 USDJPY,M1: cmd=0 хотели по цене=98.87 а исполнили по цене=99.00 _SL=98.70 _TP=99.50 lot=2
16:30:04 _tradeBuySell_mt4_v2-02 USDJPY,M1: время на открытие =1170 время на модификацию=1060
16:30:04 _tradeBuySell_mt4_v2-02 USDJPY,M1: Отправили запрос по безопасному бай по цене 98.87 -1006854351 2246 общее время на открытие и модификацию брокером=2230

В чем подвох ?

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий