Работа советника с разными парами - страница 3

 

А может, дело тут вовсе не в OrderSymbol() ?

Может, дело в OrderTicket() ?

То есть, я имею ввиду, что вместо 

OrderClose(OrderTicket().................etc

надо писать 

int Ticket_number = OrderTicket();

(.......)

OrderClose(Ticket_number,..................etc  

?

Может, это спасёт???????????

Или, ещё для пущей верности:

int Ticket_number = OrderTicket();

(.......)

if(Ticket_number = OrderTicket()) {OrderClose(Ticket_number,..................etc  

 
Artemij:

А может, дело тут вовсе не в OrderSymbol() ?

Может, дело в OrderTicket() ?

То есть, я имею ввиду, что вместо 

OrderClose(OrderTicket().................etc

надо писать 

int Ticket_number = OrderTicket();

(.......)

OrderClose(Ticket_number,..................etc  

?

Может, это спасёт???????????

Или, ещё для пущей верности:

int Ticket_number = OrderTicket();

(.......)

if(Ticket_number = OrderTicket()) {OrderClose(Ticket_number,..................etc  

А ещё для пущей верности можно так:

int Ticket_numberL = OrderTicket();

int Ticket_numberP = OrderTicket();

(.......)

if(Ticket_numberL == OrderTicket()  && Ticket_numberP == OrderTicket()  && Ticket_numberL == Ticket_numberP ) { OrderClose(Ticket_number,..................etc  


 
Vitaly Muzichenko:

Ну здесь нужно явно смотреть показания не на нулевом баре, а на первом, потому что вы даже не сможете зрительно усмотреть, был-ли сигнал, или его не было, на нулевом баре показания индикатора меняются с каждым тиком

У вас был сигнал, вот и произошло закрытие, потом индикатор перерисовался, и сигнал пропал, поэтому сделан такой вывод. 

Я понимаю, сам с сомнением отношусь к текущим показателям, но тут и рядом ничего не было!

Более того! Как Вам понравятся вот такие две записи??

эксперты:

2017.10.09 19:59:08.859 CLOSE MDCT AUDJPY AUDJPY,M30: close #28564484 buy 1.00 AUDCHF at 0.76064 sl: 0.75830 tp: 0.76245 at price 0.76065

журнал:

2017.10.09 19:59:08.718 '10179109': close order #28564484 buy 1.00 AUDCHF at 0.76064 sl: 0.75830 tp: 0.76245 at price 0.00000

То есть, пришёл сигнал с AUDJPY, а закрылся AUDCHF

AUDJPY, кстати, до сих пор висит открытый!

 
Vitaly Muzichenko:

А ещё для пущей верности можно так:

int Ticket_numberL = OrderTicket();

int Ticket_numberP = OrderTicket();

(.......)

if(Ticket_numberL == OrderTicket()  && Ticket_numberP == OrderTicket()  && Ticket_numberL == Ticket_numberP ) { OrderClose(Ticket_number,..................etc  



ну, ну..............

смейтесь, смейтесь над чужой бедой..........

 
Artemij:

ну, ну..............

смейтесь, смейтесь над чужой бедой..........

В кодобазе примеров более 1000, посмотрите как там реализовано, и не изобретайте, всё придумано до вас.

MQL5 Code Base: Советники
MQL5 Code Base: Советники
  • www.mql5.com
Эксперт предназначен для записи тиковых котировок в текстовом (CSV) и бинарном (BIN) форматах. Файлы записываются в папку MQL4\Files. Советник, основанный на индикаторе OsMA. Советник открывает ордера после полностью сформировавшихся свечей, так как индикатор постоянно переписывается. Закрытие ордеров происходит при появлении противоположного...
 
Vitaly Muzichenko:

В кодобазе примеров более 1000, посмотрите как там реализовано, и не изобретайте, всё придумано до вас.


Тогда зачем этот форум, если всё уже есть в кодобаза?

Можно прям сразу, на все вопросы  отсылать в кодобазу и всё.

 
Artemij:

Тогда зачем этот форум, если всё уже есть в кодобаза?

Можно прям сразу, на все вопросы  отсылать в кодобазу и всё.

Вы не предоставили код, но ждёте помощь. Потратили кучу времени напрасно, за это время можно уже давно найти ответ самому, и написать 3 советника, если код настолько ценен, что его не хотите показывать

 

Вставляйте правильно код

 for(int cnt=total-1; cnt>=0; cnt--)
  {
  if(OrderSelect(cnt, SELECT_BY_POS,MODE_TRADES))
   {
   if(OrderSymbol() == "AUDJPY")
    {


И уберите проверку индикатор с цикла, делайте проверку перед циклом

 
Vitaly Muzichenko:

Вставляйте правильно код


И уберите проверку индикатор с цикла, делайте проверку перед циклом


Индикатор в цикле для того, чтобы СНАЧАЛА выбрать тикет, ПОТОМ понять его символ, ПОТОМ для этого символа посчитать инд. Я думал, что, если считать инд. перед циклом, как раз больше вероятность ошибки и путаницы.

 

сорри..................

//+------------------------------------------------------------------+
//|                                                                  |
//|                      Copyright © 2017, Artemi S. Korochkov       |
//+------------------------------------------------------------------+
#property copyright "Artemi S. Korochkov,2017"

extern int Price_inside_BB = 1;
extern int Close_Main_On_Off = 1;
//---------------------
double CCI;
int cnt;
int Total;
int ticket;
int pause=180000;//(3 min) 
int error;
double Mom;
double Mom_pr;
double STHm;
double SLb,SLs;
double BBl, BBh, BBm;
double ADX,pADX,mADX;
int mAb,mAs;
int newL, newS;
//=======================

//-----------------------------------------------------------------+
int start()
  {//0
   Total = OrdersTotal();
   if(Total>0)
   {//1
for(cnt = Total; cnt >= 0; cnt--) 
   {//2
   if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)==true)
     {//3
     if(OrderSymbol() == "AUDCHF")
        {//4
     
     CCI = 0;
     Mom = 0;
     Mom_pr = 0;
     STHm = 0;
     BBl = 0;
     BBh = 0;
     BBm = 0;
     
     CCI = iCCI("AUDCHF",PERIOD_H1,24,PRICE_TYPICAL,0);

     Mom    = iMomentum("AUDCHF",0,14,PRICE_TYPICAL,1);
     Mom_pr = iMomentum("AUDCHF",0,14,PRICE_TYPICAL,2);
     
     STHm = iStochastic("AUDCHF",0,12,3,3,MODE_SMA,1,MODE_MAIN,1);
     
     BBh = iBands("AUDCHF",0,44,2,0,PRICE_CLOSE,MODE_UPPER,0);
     BBl = iBands("AUDCHF",0,44,2,0,PRICE_CLOSE,MODE_LOWER,0);
     BBm = iBands("AUDCHF",0,44,2,0,PRICE_CLOSE,MODE_MAIN,0);
     
     ADX  = iADX("AUDCHF",0,12,PRICE_TYPICAL, MODE_MAIN,1);
     pADX = iADX("AUDCHF",0,12,PRICE_TYPICAL, MODE_PLUSDI,1);
     mADX = iADX("AUDCHF",0,12,PRICE_TYPICAL, MODE_MINUSDI,1);
//Close-----------------------------------------------
//Close BUY-------------------------------------------
 if(OrderType() == OP_BUY) 
   {//4
   if(newL == 0) {PlaySound("newL.wav"); newL=1;}
 if(STHm > 70) {mAb = 1;}  
   if(OrderProfit() > 0) 
     {//5
      if(mAb == 1       
      && mADX < pADX
      && ADX > 30) 
      {//6
      ticket = OrderClose(OrderTicket(),OrderLots(),Bid,30,White); 
             if(ticket > 0)
             {
             PlaySound("LCS.wav");
             Print("Closed BUY whith Stohastic=",STHm,", Momentum=",Mom," AUDCHF");
             mAb = 0; newL = 0;
             Sleep(pause);
             }
          else       
             {
             PlaySound("MSTK.wav");
             Print("OrderClose failed with error #",GetLastError(), " Bid=",Bid);
             error=GetLastError(); 
             if(error==4107) {RefreshRates();}   
             }       
      }//6
   if(CCI >= 115.0)
     {//7
        ticket = OrderClose(OrderTicket(),OrderLots(),Bid,30,White); 
             if(ticket > 0)
             {
             PlaySound("LCCCI.wav");
             Print("Closed BUY whith Stohastic=",STHm,", Momentum=",Mom,", CCI=",CCI," AUDCHF");
             mAb = 0; newL=0;
             Sleep(pause);
             }
         else       
             {
             PlaySound("MSTK.wav");
             Print("OrderClose failed with error #",GetLastError(), " Bid=",Bid);
             error=GetLastError(); 
             if(error==4107){RefreshRates();}   
             }       
      }//7
    }//5
//Bad Close Buy---------------------------------------      
  else       
     {//8
      if(mAb == 1       
      && mADX < pADX
      && ADX > 35) 
       {//9
      ticket = OrderClose(OrderTicket(),OrderLots(),Bid,30,White); 
             if(ticket > 0)
             {
             PlaySound("LSL.wav");
             Print("Closed BUY whith Stohastic=",STHm,", Momentum=",Mom," AUDCHF");
             mAb = 0; newL = 0;
             Sleep(pause);
             }
          else       
             {
             PlaySound("MSTK.wav");
             Print("OrderClose failed with error #",GetLastError(), " Bid=",Bid);
             error=GetLastError(); 
             if(error==4107) {RefreshRates();}   
             }       
       }//9
     }//8
//Bad Close Buy=======================================
    }//4
//Close BUY===========================================
//Close SELL------------------------------------------
 if(OrderType() == OP_SELL) 
   {//4
   if(newS == 0) {PlaySound("newS.wav"); newS = 1;}
   if(STHm < 20) {mAs = 1;}  
   if(OrderProfit() > 0)
     {//5  
     if(mAs == 1
     && mADX > pADX
     && ADX > 30) 
       {//6   
        ticket = OrderClose(OrderTicket(),OrderLots(),Ask,30,White); 
               if(ticket > 0)
               {
               PlaySound("SCS.wav");
               Print("Closed SELL whith Stohastic=",STHm,", Momentum=",Mom,", AUDCHF");
               mAs = 0; newS = 0;
               Sleep(pause);
               }
            else       
               {            
               PlaySound("MSTK.wav");
               Print("Order CLOSE failed with error #",GetLastError(), " Bid=",Bid);
               error=GetLastError(); 
               if(error==4107){RefreshRates();}   
               }        
       }//6   
   if(CCI <= -115.0)
      {//7   
         ticket = OrderClose(OrderTicket(),OrderLots(),Ask,30,White); 
               if(ticket > 0)
               {
               PlaySound("SCCCI.wav");
               Print("Closed SELL whith Stohastic=",STHm,", Momentum=",Mom,", CCI=",CCI,"AUDCHF");
               mAs = 0; newS = 0;
               Sleep(pause);
               }
            else       
               {            
               PlaySound("MSTK.wav");
               Print("Order CLOSE failed with error #",GetLastError(), " Bid=",Bid);
               error=GetLastError(); 
               if(error==4107) {RefreshRates();}   
               }        
      }//7
   }//5
//Bad Close SELL--------------------------------------
   else       
   {//8
     if(mAs == 1
     && mADX > pADX
     && ADX > 35) 
       {//6   
        ticket = OrderClose(OrderTicket(),OrderLots(),Ask,30,White); 
               if(ticket > 0)
               {
               PlaySound("SSL.wav");
               Print("Closed SELL whith Stohastic=",STHm,", Momentum=",Mom,", AUDCHF");
               mAs = 0; newS = 0;
               Sleep(pause);
               }
            else       
               {            
               PlaySound("MSTK.wav");
               Print("Order CLOSE failed with error #",GetLastError(), " Bid=",Bid);
               error=GetLastError(); 
               if(error==4107){RefreshRates();}   
               }        
       }//6   
   }//8
//Bad Close SELL======================================
  }//4
//Close SELL==========================================
//Close===============================================

//GOOD Modify SL -------------------------------------
///Modify BUY-----------------------------------------   
         if(OrderType() == OP_BUY
         && OrderSymbol() == "AUDCHF"
         && OrderProfit() > 0)
           {//5
            if(( Close[1] >= (OrderOpenPrice() + 150*Point )) //100
            && ( Close[1] >= (OrderStopLoss() + 150*Point )))
               {//7 
               SLb = 0;
               SLb = Close[1] - 120*Point; 
               
ticket = OrderModify(OrderTicket(),OrderOpenPrice(),SLb,OrderTakeProfit(),0,Yellow);
          
if(ticket > 0)
   {
         PlaySound("LM.wav");
         Sleep(pause);
   }
else          
   {       
          PlaySound("MSTK.wav");
          Print("OrderModify failed with error #",GetLastError());
          error=GetLastError(); if(error==4107) {RefreshRates();}   
   }       
          Sleep(pause);
              }//7
//Band Buy----------------------------          
if(Close_Main_On_Off == 220)
   {//8
            if(Bid > BBm 
            &&(OrderStopLoss() < BBm - 110*Point )
            && OrderOpenPrice() < BBm)
               {//7 
               SLb = 0;
               SLb = BBm - 100*Point; 
               
ticket = OrderModify(OrderTicket(),OrderOpenPrice(),SLb,OrderTakeProfit(),0,Yellow);
          
if(ticket > 0)
   {
         PlaySound("LM.wav");
         Sleep(pause);
   }
else          
   {       
          PlaySound("MSTK.wav");
          Print("OrderModify Bnd failed with error #",GetLastError());
          error=GetLastError(); if(error==4107) {RefreshRates();}   
   }       
          Sleep(pause);
              }}//78
//Band Buy============================================
          }//5
///Modify BUY=========================================

///Modify SELL----------------------------------------
         if(OrderType()== OP_SELL 
         && OrderSymbol() == "AUDCHF"
         && OrderProfit() > 0)
           {//5
            if(( Close[1] <= (OrderOpenPrice() - 150*Point )) //100
            && ( Close[1] <= (OrderStopLoss() - 150*Point )))
               {//7 
               SLs = 0;
               SLs = Close[1] + 120*Point; 

ticket = OrderModify(OrderTicket(),OrderOpenPrice(),SLs,OrderTakeProfit(),0,Yellow);
          
if(ticket > 0)
   {
         PlaySound("SM.wav");
         Sleep(pause);
   }
else          
   {       
           PlaySound("MSTK.wav");
          Print("OrderModify failed with error #",GetLastError());
          error=GetLastError(); if(error==4107) {RefreshRates();}   
   }       
          Sleep(pause);
              }//7
//Band Sell---------------------------          
if(Close_Main_On_Off == 220)
   {//8
            if(Bid < BBm 
            &&(OrderStopLoss() > BBm + 110*Point )
            && OrderOpenPrice() > BBm)
               {//7 
               SLs = 0;
               SLs = BBm + 100*Point; 
               
ticket = OrderModify(OrderTicket(),OrderOpenPrice(),SLs,OrderTakeProfit(),0,Yellow);
          
if(ticket > 0)
   {
         PlaySound("SM.wav");
         Sleep(pause);
   }
else          
   {       
          PlaySound("MSTK.wav");
          Print("OrderModify Bnd failed with error #",GetLastError());
          error=GetLastError(); if(error==4107) {RefreshRates();}   
   }       
          Sleep(pause);
               }}//78
//Band Sell===========================================
         }//5
///Modify SELL========================================
//GOOD Modify SL======================================

//Order Delet-----------------------------------------
Total = OrdersTotal();
if(Total > 0)
  {//1
  for(cnt = Total; cnt >= 0; cnt--) 
     {//2
     if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)==true)
       {//3
///Delet BUY-----------------------------------------
       if(OrderType()==OP_BUYSTOP && OrderSymbol() == "AUDCHF")
         {//4
         if((Mom_pr >= 100.16 && Mom_pr > Mom) || (STHm > 70.0)) 
           {//5
            
           ticket = OrderDelete(OrderTicket());

if(ticket > 0)
   {
      PlaySound("OD.wav");  
   }  
else          
   {
      PlaySound("MSTK.wav");
      Print("OrderDelet failed with error #",GetLastError());
      error=GetLastError(); if(error==4107) {RefreshRates();}   
   }       
          Sleep(pause);

           }}//54
///Delet BUY=========================================

///Delet SELL----------------------------------------
       if(OrderType()==OP_SELLSTOP && OrderSymbol() == "AUDCHF")
         {//4
         if((Mom_pr <= 99.88 && Mom_pr < Mom) || (STHm < 20.0))  
           {//5
            
           ticket = OrderDelete(OrderTicket());

if(ticket > 0)
   {
      PlaySound("OD.wav");   
   }     
else          
   {
      PlaySound("MSTK.wav");
      Print("OrderDelet failed with error #",GetLastError());
      error=GetLastError(); if(error==4107) {RefreshRates();}   
   }       
          Sleep(pause);

           }}//54
///Delet SELL========================================
}}}//321
//Order Delet========================================

//Close Band-----------------------------------------
if (Price_inside_BB == 1)
{//Price_inside_BB
   if( Bid < BBl || Bid > BBh)
      {//8
//Close Band Buy-------------------------------------
      if(OrderType() == OP_BUY
      && OrderProfit() > 0)
         {//9
         ticket = OrderClose(OrderTicket(),OrderLots(),Bid,30,White); 
if(ticket > 0)
   {
         PlaySound("LCUB.wav"); 
         mAb = 0; newL = 0;
         Sleep(pause);
   }
else       
   {            
         PlaySound("MSTK.wav");
         Print("OrderClose failed with error #",GetLastError(), " Bid=",Bid);
         error=GetLastError(); 
         if(error==4107) {RefreshRates();}   
   }        
         }//9
//Close Band Buy=====================================   
//Close Band Sell------------------------------------
      if(OrderType() == OP_SELL
      && OrderProfit() > 0)
         {//9
         ticket = OrderClose(OrderTicket(),OrderLots(),Ask,30,White); 
if(ticket > 0)
   {
         PlaySound("SCLB.wav");
         mAs = 0; newS = 0;
         Print("Closed whith Band");
         Sleep(pause);
   }
else       
   {            
         PlaySound("MSTK.wav");
         Print("OrderClose failed with error #",GetLastError(), " Bid=",Bid);
         error=GetLastError(); 
         if(error==4107) 
         {RefreshRates();}   
   }        
         }//9
//Close Band Sell====================================   
      }//8
}//Price_inside_BB
//Close Band=========================================

//Close Band Main------------------------------------
if(Close_Main_On_Off == 1)
   {//8
//Close Band Main Buy--------------------------------
      if(OrderType() == OP_BUY 
      && OrderProfit() > 0
      && OrderOpenPrice() < BBm
      && Bid > BBm)
         {//9
         ticket = OrderClose(OrderTicket(),OrderLots(),Bid,30,White); 
if(ticket > 0)
   {
         PlaySound("LCM.wav");
         mAb = 0; newL = 0;
         Print("Closed Buy whith Band Main");
         Sleep(pause);
   }
else       
   {            
         PlaySound("MSTK.wav");
         Print("OrderClose Band Main failed with error #",GetLastError(), " Bid=",Bid);
         error=GetLastError(); 
         if(error==4107) 
         {RefreshRates();}   
   }        
         }//9
//Close Band Main Buy================================   
//Close Band Main Sell-------------------------------
      if(OrderType() == OP_SELL
      && OrderProfit() > 0
      && OrderOpenPrice() > BBm
      && Bid < BBm)
         {//9
         ticket = OrderClose(OrderTicket(),OrderLots(),Ask,30,White); 
if(ticket > 0)
   {
         PlaySound("SCM.wav");
         mAs = 0; newS = 0;
         Print("Closed Sell whith Band Main");
         Sleep(pause);
   }
else       
   {            
         PlaySound("MSTK.wav");
         Print("OrderClose Band Main failed with error #",GetLastError(), " Bid=",Bid);
         error=GetLastError(); 
         if(error==4107) 
         {RefreshRates();}   
   }        
         }//9
//Close Band Main Sell===============================
    }//8
//Close Band Main====================================

}}}}//4321 

   return(0);
  }//0
//+=================================================================+
Причина обращения: