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

 

좋은 저녁이에요.

거래 주의 마지막에 모든 포지션의 청산과 모든 주문의 삭제를 추가하는 방법을 알려주시겠습니까?

고맙습니다!

 
Antonius :

좋은 저녁이에요.

거래 주의 마지막에 모든 포지션의 청산과 모든 주문의 삭제를 추가하는 방법을 알려주시겠습니까?

고맙습니다!

그러한 스크립트를 작성한 다음 모든 것을 닫고 삭제해야 할 때 차트에 던지십시오. 델로프...

물론이죠!

 
artmedia70 :

그러한 스크립트를 작성한 다음 모든 것을 닫고 삭제해야 할 때 차트에 던지십시오. 델로프...

물론이죠!



감사합니다 :) 요청을 명확히 하고 있습니다.

거래 주의 마지막에 모든 주문과 포지션을 마감할 코드를 어드바이저에 추가해야 합니다.

이 코드를 작성할 수 있습니까?

 
Antonius :


감사합니다 :) 요청을 명확히 하고 있습니다.

거래 주의 마지막에 모든 주문과 포지션을 마감할 코드를 어드바이저에 추가해야 합니다.

이 코드를 작성할 수 있습니까?

저 할 수 있어요. 괜찮아요. 스스로 한 일이 있습니까? 이 브랜치는 공짜로 준비하기 위한 것이 아니라 스스로 코딩을 하려는 사람들을 돕기 위한 것입니다.
 
artmedia70 :
저 할 수 있어요. 괜찮아요. 스스로 한 일이 있습니까? 이 브랜치는 공짜로 준비하기 위한 것이 아니라 스스로 코딩을 하려는 사람들을 돕기 위한 것입니다.


여기에서 보았습니다 https://book.mql4.com/en/trading/orderclose

포럼에서 Google에서 검색했습니다. 찾지 못했습니다. 아마도 제가 요청을 잘못 쓰고 있는 것 같습니다.

초보자를 위한 주제로 질문하기로 결정했습니다.

 

처방하는 방법?

스크립트를 실행하는 방법:

"일반" 및 "입력 매개변수" 탭이 있는 창이 표시됩니다.

입력 매개변수에 날짜를 입력해야 합니다.

스크립트가 실행될 때 날짜 창이 단순히 표시되고 날짜를 입력하고 확인을 클릭하면 모든 것이 작동하는 것이 가능합니까?

그리고 스크립트가 내가 마지막으로 입력한 날짜를 기억하게 할 수 있습니까?

 
artmedia70 :

stop으로 마지막 닫힘 위치를 결정하는 함수에는 bool 유형이 있으며 이중 유형을 반환하려고 합니다. 따라서 0 또는 1을 반환합니다.

글쎄, 나는 당신이 그것을 참조하여 한 변수의 전송을 추가해야한다고 썼습니다.

이제 예를 들어 마지막 구매를 확인합니다.

대충 이정도...


정말 감사합니다.
 
artmedia70 :

stop으로 마지막 닫힌 위치를 결정하는 함수는 bool 유형을 가지고 있으며 이중 유형을 반환하려고 합니다. 따라서 0 또는 1을 반환합니다.

글쎄, 나는 당신이 그것을 참조하여 한 변수의 전송을 추가해야한다고 썼습니다.

이제 예를 들어 마지막 구매를 확인합니다.

대충 이정도...


말씀하신대로 다 했습니다. 모든 것이 컴파일됩니다 ...... 그러나 어드바이저를 테스트 할 때 기능이 작동하지 않습니다 ..... 어드바이저 는 모든 위치를 0.1 랏을 엽니 다.

 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 ))

//============================================================
                                                                           // задавать минимальное значение лота я не стал ,мне кажется для тестера это не обязательно
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 )       // у Вас перед названием формального  параметра  11 стоял знак &- я его убрал.
{
   double    pt;
   datetime t;                                                       // у вас тип переменной t был int - я сделал datetime
   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);                                     // возвращаем ложь (позиции нету, либо не по стопу)
}

제 실수가 무엇인지 알려주세요.

그런 순간을 이해할 수 없습니다. 올바르게 언급했듯이 함수는 bool 유형 값을 반환하고 함수 호출에서 함수는 bool 유형 값을 넣어야 합니다.

다른 값 유형을 지정하는 것이 좋습니다.

고맙습니다.

 
solnce600 :

말씀하신대로 다 했습니다. 모든 것이 컴파일됩니다 ...... 그러나 어드바이저를 테스트 할 때 기능이 작동하지 않습니다 ..... 어드바이저는 모든 위치를 0.1 랏을 엽니 다.

제 실수가 무엇인지 알려주세요.

그런 순간을 이해할 수 없습니다. 올바르게 언급했듯이 함수는 bool 유형 값을 반환하고 함수 호출에서 함수는 bool 유형 값을 넣어야 합니다.

다른 유형의 값을 지정하는 것이 좋습니다.

고맙습니다.


 bool isCloseLastPosByStop( string sy, int op, int mn, double ll)       //у Вас перед названием формального  параметра  11 стоял знак &- я его убрал.

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

 
Vinin :

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

.....이 표시가 무엇을 의미하는지 .... 교과서에서 그것에 대해 아무 것도 기억하지 못합니다.