Что такое order_id? - страница 2

 
toi10005doi:

@Raptor:

Да, но я не очень понял, потому что я просто хочу написать советника. Извините за беспокойство.

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

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


Почему вы пытаетесь закрыть свой ордер 4 раза? Два раза на Bid и два раза на Ask?

 
Мое близкое условие - кобинезон. Но когда я написал его, оно не работает. Поэтому яотделил его.
 
toi10005doi:
Мое близкое условие - кобинезон. Но когда я написал его, оно не работает. Поэтому яотделил его.
Но вы пытаетесь закрыть один и тот же ордер (по номеру билета) четыре раза... почему?
 
toi10005doi:

Да! Я понял.

Я исправил свой код, но мой заказ все еще закрывается мгновенно после того, как он стартует. Пожалуйста, покажите мне, что я сделал неправильно.

В цикле, где вы закрываете ордер, выведите эти значения. . DIPlus1 DIMinus1 Main0 Rsi Убедитесь, что вы используете DoubleToStr() для получения правильного количества десятичных знаков.
 
Raptor уже сказал вам, что делать. Добавьте несколько операторов печати с полным значением переменной в ваш цикл, и вы узнаете, почему
 
RaptorUK:
В цикле, в котором вы закрываете Order, выведите эти значения . . DIPlus1 DIMinus1 Main0 Rsi убедитесь, что вы используете DoubleToStr() для получения правильного количества десятичных знаков.

Сделайте это. Что вы получите в журнале?
 
RaptorUK:
Сделайте это. Что вы получите в журнале?

Вы можете показать мне код?

 
toi10005doi:

Можете ли вы показать мне код?

Вы шутите? Это всего лишь одна строчка с использованием Print() и DoubleToStr() ....

Напишите его сами, опубликуйте его здесь, и я бесплатно уделю свое время, чтобы просмотреть его для вас.
 
RaptorUK:
Вы шутите? Это всего лишь одна строка с использованием Print() и DoubleToStr() ....

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

int start()
{
   int i ,times;
   string DIPlus1;
   string DIPlus0;
 
   string DIMinus1;
   string DIMinus0;
   
   string Main1;
   string Main0;
   
   string MACD_main;
   string MACD_signal;
   string Rsi;
   
   string err = 26;
   string x = 70;
   string xx = 30;
   
   double sl = 300;
   double tp = 50;
   
   int MagicNumber1=1234,MagicNumber2=4321;
//----
/*DIPlus1=DoubleToStr(  DIPlus1, 4);
DIPlus0=DoubleToStr(    DIPlus0, 4);
DIMinus1=DoubleToStr(   DIMinus1, 4);
DIMinus0=DoubleToStr(   DIMinus0, 4);
Main1=DoubleToStr(      Main1, 4);
Main0=DoubleToStr(      Main0, 4);
Rsi=DoubleToStr(        Rsi, 4);
//err=DoubleToStr(err,4);
//x=DoubleToStr(x,4);
//xx=DoubleToStr(xx,4);*/

//---
 
DIPlus1=iADX(NULL,0,14,PRICE_CLOSE,MODE_PLUSDI,1);
DIPlus0=iADX(NULL,0,14,PRICE_CLOSE,MODE_PLUSDI,0);
 
DIMinus1=iADX(NULL,0,14,PRICE_CLOSE,MODE_MINUSDI,1);
DIMinus0=iADX(NULL,0,14,PRICE_CLOSE,MODE_MINUSDI,0);

Main1=iADX(NULL,0,14,PRICE_CLOSE,MODE_MAIN,1);
Main0=iADX(NULL,0,14,PRICE_CLOSE,MODE_MAIN,0);

Rsi = iRSI(NULL,0,14,PRICE_CLOSE,0);

times = Minute() % 15 ==0 && Seconds() ==0;

//MACD_main = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0); 
//MACD_signal = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
   
//----
if(Minute() % 15 ==0 && Seconds() ==0)
{
  if( Main0 > err && Main1 < err && DIPlus0 > DIMinus0 && Rsi < x )

    
       OrderSend(Symbol(),OP_BUY,0.03,Ask,5,Ask-sl*Point,Ask+tp*Point,"",1234,0,Blue);
          
   

   if (Main0 > err && Main1 < err && DIPlus0 < DIMinus0  && Rsi > xx)
     
       OrderSend(Symbol(),OP_SELL,0.03,Bid,5,Bid+sl*Point ,Bid-tp*Point,"",4321,0,Red);
}
     
  //---
 int PositionIndex;    
 
int TotalNumberOfOrders;  

TotalNumberOfOrders = OrdersTotal();   

for(PositionIndex = TotalNumberOfOrders - 1; PositionIndex >= 0 ; PositionIndex --)  
   {
   if(  OrderSelect(PositionIndex, SELECT_BY_POS, MODE_TRADES) ) continue;   
   
   if( OrderMagicNumber() == MagicNumber2      
     && OrderSymbol() == Symbol()          
      && OrderType() == OP_BUY         
       || OrderType() == OP_SELL )  
       Print("DIPlus1",DoubleToStr(     DIPlus1, 4));
         Print("DIMinus1",DoubleToStr(  DIPlus1, 4));
          Print("Main0",DoubleToStr(    DIPlus1, 4));
           Print("Rsi",DoubleToStr(     DIPlus1, 4));  
     {if( DIPlus1 > DIMinus1 || Main0 < err || Rsi < xx)
                   OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);
     } 
   if( OrderMagicNumber() == MagicNumber1      
     && OrderSymbol() == Symbol()          
      &&  OrderType() == OP_BUY          
        || OrderType() == OP_SELL )  
        Print("DIPlus1",DoubleToStr(    DIPlus1, 4));
         Print("DIMinus1",DoubleToStr(  DIPlus1, 4));
          Print("Main0",DoubleToStr(    DIPlus1, 4));
           Print("Rsi",DoubleToStr(     DIPlus1, 4));
    { if( DIPlus1 < DIMinus1 || Main0 < err || Rsi > x  )
                   OrderClose(OrderTicket(),OrderLots(),Ask,3,Green);   
   }
      {  if ( ! OrderClose( OrderTicket(), OrderLots(), OrderClosePrice(), 3 ) )               
         Print("Order Close failed, order number: ", OrderTicket(), " Error: ", GetLastError() ); 
    }           
    }
 return(0);
 }
   
Вы имеете в виду это? Но теперь он не закрывает ордер.
 
toi10005doi:
Вы имеете в виду это? Но теперь он не закрывает ордер.
Я сказал добавить одну строку ... это все, что было нужно.

Посмотрите на свой код. ... проследите за ним строка за строкой, посмотрите, что вы добавили, посмотрите, почему вы сломали его... так вы научитесь. Вы понимаете, как работает оператор if? Вы понимаете назначение скобок { }?
Причина обращения: