MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 423

 
novichok2018 :

안녕하세요! 상황 해결에 도움: Y1 조건에 따라 위치 1을 열고 Y2 조건에 따라 닫습니다. 그러나 U2가 시작되기 전에 U1이 다시 발생하고 위치 2가 열리면 시작 U2에 반응하지 않고 다음 U2까지, 더욱이 새로운 U1(!) 이후에 중단되고 이 새 위치는 더 이상 존재하지 않습니다. 새 U2에 의해 닫히지만 조건 U1-U2를 기다립니다. 그것을 피하는 방법? 머리가 부었습니다. 고맙습니다.

Y2 조건에 따라 모든 주문의 OrderClose(...)를 닫는 주기가 필요합니다. 최소 100개는 열어야 합니다. 각 틱 에서 하나씩 삭제할 수 있습니다. 그런 다음 다음과 같이하십시오. 1) Y2 조건에 따라 플래그를 올립니다. 2) 플래그가 발생한 경우 - 하나의 주문을 삭제합니다. 3) 명령이 없으면 깃발을 내린다. 그러면 모든 주문이 차례로 삭제됩니다....

 
STARIJ :

Y2 조건에 따라 모든 주문의 OrderClose(...)를 닫는 루프가 필요합니다. 최소 100개를 엽니다.


나에게도 사이클이 있다. 문제가 있습니까?

 void ClosePoz()
  { int total= OrdersTotal ();
   if (total> 1 )
   {
       for ( int i= 0 ;i< OrdersTotal ();i++)
      {
       if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )== false ) 
      { Print ( "позиция для закрытия не найдена" );
         break ;
      }
       if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
         { double WPR0 = iWPR ( NULL , PERIOD_M5 ,bars, 0 );
         if ( OrderType ()== OP_BUY && MathAbs (WPR0)> 80 )
           OrderClose ( OrderTicket (), OrderLots (), NormalizeDouble ( MarketInfo ( OrderSymbol (), MODE_BID ), int ( MarketInfo ( OrderSymbol (), MODE_DIGITS ))),slippage, clrNONE );                  
         }
      }
    } 
  }   
 
novichok2018 :
나에게도 사이클이 있다. 문제가 있습니까?
이해하지 못했습니다. SRC를 사용하여 코드를 삽입했지만 보이지 않습니다.
거기에서 삽입을 클릭한 다음 추가를 클릭해야 합니다.
 
STARIJ :
거기에서 삽입을 클릭한 다음 추가를 클릭해야 합니다.

위의 경우 필요한 곳은 아니지만 읽을 수 있습니다. 영형! 그리고 이제 어디로. 불가사의!

 
novichok2018 :

귀하의 코드를 올바르게 붙여넣었습니다.

먼저 SRC 버튼을 누른 다음 코드를 창에 붙여넣고 "삽입" 버튼을 누르고 메시지를 보냅니다.

 
tura210577 :

답변 해주셔서 감사합니다!

별말씀을요. 다음 멀티 플랫폼 기능을 사용해 보세요.

 //+------------------------------------------------------------------+
//| Returns specified Open by shift                                  |
//+------------------------------------------------------------------+
double Open ( const string symbol_name, const ENUM_TIMEFRAMES timeframe, const int shift)
  {
   double array[];
   if ( CopyOpen (symbol_name,timeframe,shift, 1 ,array)== 1 ) return array[ 0 ];
   return 0 ;
  }
//+------------------------------------------------------------------+
//| Returns specified High by shift                                  |
//+------------------------------------------------------------------+
double High ( const string symbol_name, const ENUM_TIMEFRAMES timeframe, const int shift)
  {
   double array[];
   if ( CopyHigh (symbol_name,timeframe,shift, 1 ,array)== 1 ) return array[ 0 ];
   return 0 ;
  }
//+------------------------------------------------------------------+
//| Returns specified Low by shift                                   |
//+------------------------------------------------------------------+
double Low ( const string symbol_name, const ENUM_TIMEFRAMES timeframe, const int shift)
  {
   double array[];
   if ( CopyLow (symbol_name,timeframe,shift, 1 ,array)== 1 ) return array[ 0 ];
   return 0 ;
  }
//+------------------------------------------------------------------+
//| Returns specified Close by shift                                 |
//+------------------------------------------------------------------+
double Close ( const string symbol_name, const ENUM_TIMEFRAMES timeframe, const int shift)
  {
   double array[];
   if ( CopyClose (symbol_name,timeframe,shift, 1 ,array)== 1 ) return array[ 0 ];
   return 0 ;
  }
//+------------------------------------------------------------------+
//| Returns specified Time by shift                                  |
//+------------------------------------------------------------------+
datetime Time ( const string symbol_name, const ENUM_TIMEFRAMES timeframe, const int shift)
  {
   datetime array[];
   if ( CopyTime (symbol_name,timeframe,shift, 1 ,array)== 1 ) return array[ 0 ];
   return 0 ;
  }
//+------------------------------------------------------------------+
 
novichok2018 : 이미 주기가 있습니다. 문제가 있습니까?

코드에 2개의 오류가 있습니다. 1) 이 페이지 에서는 주기의 주문을 보는 방법을 설명합니다. 2) break - 루프에서 나가지만 계속 - 건너뛰기

 
Artyom Trishkin :

귀하의 코드를 올바르게 붙여넣었습니다.

먼저 SRC 버튼을 누른 다음 코드를 창에 붙여넣고 "삽입" 버튼을 누르고 메시지를 보냅니다.


고맙습니다. 덕분에 제 글도 웃었습니다. 문제의 본질은 어떻습니까? 주기가 맞습니까?

 
novichok2018 :

고맙습니다. 덕분에 글도 웃었습니다. 문제의 본질은 어떻습니까? 주기가 맞습니까?

당신은 이미 답변을 받았습니다:

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MQL4에 대한 모든 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론

STARIJ , 2018.01.18 20:19

코드에 2개의 오류가 있습니다. 1) 이 페이지 에서는 주기의 주문을 보는 방법을 설명합니다. 2) break - 루프에서 나가지만 계속 - 건너뛰기


 
Artyom Trishkin :

당신은 이미 답변을 받았습니다:



예, 감사합니다. 페이지를 읽었습니다. MKL4에 대한 나의 지식만으로는 내 사이클에서 위치가 0에서 마지막으로 이동하고 예에서는 반대로 마지막에서 0으로 이동한다는 것을 알아차리기에 충분했습니다. 그리고 중단하고 이해하지 못했습니다. 그리고 내가 내 흉상을 반대로 바꾸었을 때, 포지션은 전혀 닫히지 않았습니다 .