포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 200

 
Vinin :

삭제된 이유 그대로 두면 모든 것이 작동할 것입니다.

이 신비한 기호를 넣었는데 .. . . . 결과는 똑같습니다 ... 기능이 작동하지 않습니다

 bool isCloseLastPosByStop( string sy, int op, int mn, double &  ll) 
{
   double    pt;
   datetime t;
   int        dg, i, j=- 1 , k=OrdersHistoryTotal()- 1 ;

   for (i=k; i>= 0 ; i--) 
   {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) 
     {
         if (OrderMagicNumber()!=mn)   continue ;   // если магик не тот, переходим к следующему
         if (OrderSymbol()!=sy)         continue ;   // если символ не тот, переходим к следующему
         if (OrderType()!=op)           continue ;   // если тип не тот, переходим к следующему
         if (t<OrderCloseTime()) 
         {
            t=OrderCloseTime();
            j=i;
            }
         }
      }
      
   if ( OrderSelect (j, SELECT_BY_POS, MODE_HISTORY)) 
   {
      dg=MarketInfo(OrderSymbol(), MODE_DIGITS);       // количество знаков в цене символа ордера
      pt=MarketInfo(OrderSymbol(), MODE_POINT);       // размер пункта инструмента в валюте котировки ордера
       if ( MathAbs (OrderClosePrice()-OrderStopLoss())< 0.5 *pt) // Если закрыт по стопу
      { 
         ll=OrderLots();                               // записываем количество лотов в ордере, закрытом по стопу
         return ( true );                                 // возвращаем истину
         }
      }
      
   return (False);                                     // возвращаем ложь (позиции нету, либо не по стопу)
}
 
solnce600 :
.....이 표시가 무엇을 의미하는지 .... 교과서에서 그것에 대해 아무 것도 기억하지 못합니다.


참조로 전달하면 매개변수를 수정(변경)할 수 있습니다.
 
Vinin :

참조로 전달하면 매개변수를 수정(변경)할 수 있습니다.

감사합니다 앞으로 잘 기억하겠습니다.

그런데 왜 기능이 작동하지 않습니까?

올바른 길로 인도해 주시면 감사하겠습니다.
 
solnce600 :

감사합니다 앞으로 잘 기억하겠습니다.

그런데 왜 기능이 작동하지 않습니까?

올바른 길로 인도해 주시면 감사하겠습니다.

최소 로트 반환
 
Vinin :

최소 로트 반환

돌아왔다.

이제 컴파일할 때 Lot 변수가 정의되지 않았다는 .... 오류가 발생합니다.

' ' - 변수가 정의되지 않았습니다. C:\Program Files\Alpari NZ MT4\experts\Previous CANDLE.mq4 (47, 39)
http://clip2net.com/s/61vFZH

시작 전에 정의되었지만.


 double   Magic, Lot ;

int start()
  {
        

  
 double Price=iOpen ( Symbol (), 0 , 0 );
 

          
 int last_order_bar = 0 ;                                                                                                                        
 int ot = OrdersTotal ();                                                                                                                        
                                                                                                                        
 if (ot> 0 ) //если есть ордера в рынке                                                                                                                   
 {                                                                                                                      
   if ( OrderSelect (ot- 1 ,SELECT_BY_POS))                                                                                                                        
       if (OrderType ()==OP_BUY || OrderType ()==OP_SELL )                                                                                                                       
         last_order_bar = iBarShift ( Symbol (), 0 ,OrderOpenTime ());                                                                                                             
 }                                                                                                                      
                                                                                                                        
 int last_hist_order_bar = 0 ;                                                                                                                   
 int oht = OrdersHistoryTotal();                                                                                                                        
                                                                                                                
 if (oht> 0 )                                                                                                                     
 {                                                                                                                      
   if ( OrderSelect (oht- 1 ,SELECT_BY_POS, MODE_HISTORY))                                                                                                                         
       if (OrderType ()==OP_BUY || OrderType ()==OP_SELL)                                                                                                                        
         last_hist_order_bar = iBarShift ( Symbol (), 0 ,OrderOpenTime ());
                                                                                                        
        }

                                                                                                        
if (ot== 0 )
        
                                                                                                                        
 //if (ot==0 || last_order_bar>0) //если ордеров нет либо последний открыт не на текущем баре                                                                                                                   
 //   if (oht==0 || last_hist_order_bar>0) 
 if (Bid ==Price)
//=============================================================== 
  
if (((Open[ 1 ]-Close[ 1 ])> 100 * Point )&&((Open[ 1 ]-Close[ 1 ])< 120 * Point ))
if (((High[ 1 ]-Open[ 1 ])> 40 * Point )&&((High[ 1 ]-Open[ 1 ])< 60 * Point ))
if (((Close[ 1 ]-Low[ 1 ])> 40 * Point )&&((Close[ 1 ]-Low[ 1 ])< 60 * Point ))

//============================================================
Lot= MarketInfo( Symbol (), MODE_MINLOT);    
if (isCloseLastPosByStop( Symbol (), OP_BUY, Magic, Lot))
{
Lot=Lot* 2 ;
OrderSend ( Symbol (),OP_SELL,Lot,Bid, 1 ,Ask+ 1500 * Point ,Ask- 300 * Point , "jfh" , 123 );
}
else
{

Lot= 0.1 ;        
OrderSend ( Symbol (),OP_SELL, 1 ,Bid,Lot,Ask+ 1500 * Point ,Ask- 300 * Point , "jfh" , 123 );
}
   return ( 0 );
  }
//============================================================  
bool isCloseLastPosByStop( string sy, int op, int mn, double &ll) 
{
   double    pt;
   datetime t;
   int        dg, i, j=- 1 , k=OrdersHistoryTotal()- 1 ;

   for (i=k; i>= 0 ; i--) 
   {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) 
     {
         if (OrderMagicNumber()!=mn)   continue ;   // если магик не тот, переходим к следующему
         if (OrderSymbol()!=sy)         continue ;   // если символ не тот, переходим к следующему
         if (OrderType()!=op)           continue ;   // если тип не тот, переходим к следующему
         if (t<OrderCloseTime()) 
         {
            t=OrderCloseTime();
            j=i;
            }
         }
      }
      
   if ( OrderSelect (j, SELECT_BY_POS, MODE_HISTORY)) 
   {
      dg=MarketInfo(OrderSymbol(), MODE_DIGITS);       // количество знаков в цене символа ордера
      pt=MarketInfo(OrderSymbol(), MODE_POINT);       // размер пункта инструмента в валюте котировки ордера
       if ( MathAbs (OrderClosePrice()-OrderStopLoss())< 0.5 *pt) // Если закрыт по стопу
      { 
         ll=OrderLots();                               // записываем количество лотов в ордере, закрытом по стопу
         return ( true );                                 // возвращаем истину
         }
      }
      
   return (False);                                     // возвращаем ложь (позиции нету, либо не по стопу)
}
 
solnce600 :

돌아왔다.

이제 컴파일할 때 Lot 변수가 정의되지 않았다는 .... 오류가 발생합니다.

' ' - 변수가 정의되지 않았습니다. C:\Program Files\Alpari NZ MT4\experts\Previous CANDLE.mq4 (47, 39)
http://clip2net.com/s/61vFZH

시작 전에 정의되었지만.




모든 코드가 필요합니다
 
Vinin :

모든 코드가 필요합니다
 
 double  Magic, Lot;

int start()
  {
        

  
 double Price=iOpen (Symbol (),0,0);
 

          
 int last_order_bar = 0;                                                                                                                        
 int ot = OrdersTotal();                                                                                                                        
                                                                                                                        
 if (ot>0) //если есть ордера в рынке                                                                                                                   
 {                                                                                                                      
   if (OrderSelect (ot-1,SELECT_BY_POS))                                                                                                                        
      if (OrderType ()==OP_BUY || OrderType ()==OP_SELL )                                                                                                                       
         last_order_bar = iBarShift (Symbol (),0,OrderOpenTime ());                                                                                                             
 }                                                                                                                      
                                                                                                                        
 int last_hist_order_bar = 0;                                                                                                                   
 int oht = OrdersHistoryTotal();                                                                                                                        
                                                                                                                
 if (oht>0)                                                                                                                     
 {                                                                                                                      
   if (OrderSelect (oht-1,SELECT_BY_POS, MODE_HISTORY))                                                                                                                         
      if (OrderType ()==OP_BUY || OrderType ()==OP_SELL)                                                                                                                        
         last_hist_order_bar = iBarShift (Symbol (),0,OrderOpenTime ());
                                                                                                        
        }

                                                                                                        
if (ot==0)
        
                                                                                                                        
 //if (ot==0 || last_order_bar>0) //если ордеров нет либо последний открыт не на текущем баре                                                                                                                   
 //   if (oht==0 || last_hist_order_bar>0) 
 if (Bid ==Price)
//=============================================================== 
  
if(((Open[1]-Close[1])>100*Point)&&((Open[1]-Close[1])<120*Point))
if(((High[1]-Open[1])>40*Point)&&((High[1]-Open[1])<60*Point))
if(((Close[1]-Low[1])>40*Point)&&((Close[1]-Low[1])<60*Point))

//============================================================
Lot= MarketInfo(Symbol(), MODE_MINLOT);   
if (isCloseLastPosByStop(Symbol(), OP_BUY, Magic, Lot))
{
Lot=Lot*2;
OrderSend(Symbol(),OP_SELL,Lot,Bid,1,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
else
{

Lot=0.1;        
OrderSend(Symbol(),OP_SELL,1,Bid,Lot,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
   return(0);
  }
//============================================================  
bool isCloseLastPosByStop(string sy, int op, int mn, double &ll) 
{
   double   pt;
   datetime t;
   int       dg, i, j=-1, k=OrdersHistoryTotal()-1;

   for (i=k; i>=0; i--) 
   {
     if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) 
     {
         if (OrderMagicNumber()!=mn)   continue;   // если магик не тот, переходим к следующему
         if (OrderSymbol()!=sy)        continue;   // если символ не тот, переходим к следующему
         if (OrderType()!=op)           continue;   // если тип не тот, переходим к следующему
         if (t<OrderCloseTime()) 
         {
            t=OrderCloseTime();
            j=i;
            }
         }
      }
      
   if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) 
   {
      dg=MarketInfo(OrderSymbol(), MODE_DIGITS);      // количество знаков в цене символа ордера
      pt=MarketInfo(OrderSymbol(), MODE_POINT);       // размер пункта инструмента в валюте котировки ордера
      if (MathAbs(OrderClosePrice()-OrderStopLoss())< 0.5*pt) // Если закрыт по стопу
      { 
         ll=OrderLots();                              // записываем количество лотов в ордере, закрытом по стопу
         return(true);                                // возвращаем истину
         }
      }
      
   return(False);                                     // возвращаем ложь (позиции нету, либо не по стопу)
}
 
Vinin :

모든 코드가 필요합니다

스톱으로 주문을 마감한 후 마지막으로 스톱으로 마감된 볼륨과 동일한 볼륨으로 다음 주문을 열어야 합니다.

주문 곱하기 2

그리고 LAST 주문이 다른 이유로 마감된 경우(정지가 아님) - 포지션 볼륨 은 0.1이어야 합니다.
 
solnce600 :

돌아왔다.

이제 컴파일할 때 Lot 변수가 정의되지 않았다는 .... 오류가 발생합니다.

' ' - 변수가 정의되지 않았습니다. C:\Program Files\Alpari NZ MT4\experts\Previous CANDLE.mq4 (47, 39)
http://clip2net.com/s/61vFZH

시작 전에 정의되었지만.

컴파일 중. 거기에 당신의 논리가 완전히 절름발이 인 것 같습니다 ... 물론, 나는 그것을 보지 않았습니다. 오류만 확인했습니다.

 double   Magic, Lot;

int start() {

   double Price=iOpen( Symbol (), 0 , 0 );
          
   int last_order_bar= 0 ; 
   int ot= OrdersTotal ();
   if (ot> 0 )  {
       if ( OrderSelect (ot- 1 ,SELECT_BY_POS))
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) last_order_bar=iBarShift( Symbol (), 0 ,OrderOpenTime());
      }

   int last_hist_order_bar= 0 ;
   int oht=OrdersHistoryTotal(); 

   if (oht> 0 ) {
       if ( OrderSelect (oht- 1 ,SELECT_BY_POS, MODE_HISTORY))
         if (OrderType ()==OP_BUY || OrderType ()==OP_SELL) last_hist_order_bar=iBarShift( Symbol (), 0 ,OrderOpenTime())
      }

   if (ot== 0 )
       if (Bid==Price)
   //=============================================================== 
         if (((Open[ 1 ]-Close[ 1 ])> 100 * Point )&&((Open[ 1 ]-Close[ 1 ])< 120 * Point ))
             if (((High[ 1 ]-Open[ 1 ])> 40 * Point )&&((High[ 1 ]-Open[ 1 ])< 60 * Point ))
               if (((Close[ 1 ]-Low[ 1 ])> 40 * Point )&&((Close[ 1 ]-Low[ 1 ])< 60 * Point ))
   //============================================================
                  Lot=MarketInfo( Symbol (), MODE_MINLOT);   
                   if (isCloseLastPosByStop( Symbol (), OP_BUY, Magic, Lot)) {
                     Lot=Lot* 2 ;
                     OrderSend ( Symbol (),OP_SELL,Lot,Bid, 1 ,Ask+ 1500 * Point ,Ask- 300 * Point , "jfh" , 123 );
                     }
                   else {
                     Lot= 0.1 ;        
                     OrderSend ( Symbol (),OP_SELL, 1 ,Bid,Lot,Ask+ 1500 * Point ,Ask- 300 * Point , "jfh" , 123 );
                     }
   return ( 0 );
}
//+----------------------------------------------------------------------------+
bool isCloseLastPosByStop( string sy, int op, int mn, double &ll) {
   double    pt;
   int       t, dg, i, j=- 1 , k=OrdersHistoryTotal()- 1 ;

   for (i=k; i>= 0 ; i--) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) {
         if (OrderMagicNumber()!=mn)   continue ;   // если магик не тот, переходим к следующему
         if (OrderSymbol()!=sy)         continue ;   // если символ не тот, переходим к следующему
         if (OrderType()!=op)           continue ;   // если тип не тот, переходим к следующему
         if (t<OrderCloseTime()) {
            t=OrderCloseTime();
            j=i;
            }
         }
      }
   if ( OrderSelect (j, SELECT_BY_POS, MODE_HISTORY)) {
      dg=MarketInfo(OrderSymbol(), MODE_DIGITS);       // количество знаков в цене символа ордера
      pt=MarketInfo(OrderSymbol(), MODE_POINT);       // размер пункта инструмента в валюте котировки ордера
       if ( MathAbs (OrderClosePrice()-OrderStopLoss())< 0.5 *pt) { // Если закрыт по стопу
         ll=OrderLots();                               // записываем количество лотов в ордере, закрытом по стопу
         return ( true );                                 // возвращаем истину
         }
      }
   return (False);                                     // возвращаем ложь (позиции нету, либо не по стопу)
}
//+----------------------------------------------------------------------------+

날짜 시간은 동일한 int입니다.