초보자의 질문 MQL4 MT4 MetaTrader 4 - 페이지 5

 
테스터에게 무슨 일이 일어났는지 알려주세요. 양초 대신 "모든 틱, 가장 정확한 방법" 모드 및 기타 모드에서도 시가 표시됩니다.
MT4 Better Volume도 테스터에서 부족하다
파일:
 

매 틱마다 열리는지 알려주실 수 있나요?

void OnTick ()
  {
   Alert (Sborinfo(Magic));
   if (Sborinfo(Magic)<= 0 )
     {
      MassivPrice(step); 
      tiket= OrderSend ( Symbol (), OP_BUY , 0.01 , Ask , 0 , 0 , 0 , NULL , 0 , 0 ,Blue);
       if (tiket>= 0
         LastPrice= Ask
       else LastPrice=- 1
     }
   MassivPrice(step);
   tiket= OrderSend ( Symbol (), OP_SELL , 0.01 , Bid , 0 , 0 , 0 , NULL , 0 , 0 ,Red);
   if (tiket>= 0 )
      LastPrice= Bid ;
   else LastPrice=- 1 ;
  }
//+------------------------------------------------------------------+
int Sborinfo( int magic)
  {
   for ( int i= 0 ; i< OrdersTotal (); i++)
     {
       Print ( "колличество ордеров " ,kol);
       if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) && OrderMagicNumber ()==magic)
         kol++;
     }
   Print ( "новые ордера " ,kol);
   return (kol);
  }
 
Ibragim Dzhanaev :

매 틱마다 열리는지 알려주세요.

항상 이 모드에서 테스트했기 때문에

void OnTick ()
  {
   Alert (Sborinfo(Magic));
   if (Sborinfo(Magic)<= 0 )
     {
      MassivPrice(step); 
      tiket= OrderSend ( Symbol (), OP_BUY , 0.01 , Ask , 0 , 0 , 0 , NULL , 0 , 0 ,Blue);
       if (tiket>= 0
         LastPrice= Ask
       else LastPrice=- 1
     }
   MassivPrice(step);
   tiket= OrderSend ( Symbol (), OP_SELL , 0.01 , Bid , 0 , 0 , 0 , NULL , 0 , 0 ,Red);
   if (tiket>= 0 )
      LastPrice= Bid ;
   else LastPrice=- 1 ;
  }
//+------------------------------------------------------------------+
int Sborinfo( int magic)
  {
   for ( int i= 0 ; i< OrdersTotal (); i++)
     {
       Print ( "колличество ордеров " ,kol);
       if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) && OrderMagicNumber ()==magic)
         kol++;
     }
   Print ( "новые ордера " ,kol);
   return (kol);
  }
파일:
 
Ibragim Dzhanaev :

매 틱마다 열리는지 알려주실 수 있나요?

코드가 그렇게 작성되었기 때문입니다.

단순화하면 알고리즘은 다음과 같습니다. 주문이 없으면 매수를 열고 각 틱에서 매도를 엽니다.

 
Vitalie Postolache :

코드가 그렇게 작성되었기 때문입니다.

단순화하면 알고리즘은 다음과 같습니다. 주문이 없으면 매수를 열고 각 틱에서 매도를 엽니다.

추가 조건 없이 작동하도록 코드를 변경하는 방법은 무엇입니까?
Alert (Sborinfo(Magic));
   // Closse(Magic);
   if (Sborinfo(Magic)== 0 )
     {
     Print ( "количество ордеров " ,Sborinfo(Magic));
      MassivPrice(step);
       if ( OrdersTotal ()< 2 ) // без таких условий
         tiket= OrderSend ( Symbol (), OP_BUY , 0.01 , Ask ,slippage, 0 , 0 , NULL , 0 , 0 ,Green);
       if (tiket>= 0 )
         LastPrice= Ask ;  
     }

   MassivPrice(step);
   if ( OrdersTotal ()< 2 ) // без таких условий
      tiket= OrderSend ( Symbol (), OP_SELL , 0.01 , Bid ,slippage, 0 , 0 , NULL , 0 , 0 ,Red);
   if (tiket>= 0 )
      LastPrice= Bid ;
  
  }
//+------------------------------------------------------------------+
int Sborinfo( int magic)
  {
  kol= 0 ;
   for ( int i= 0 ; i< OrdersTotal (); i++)
     {
     Print ( " чему ровно кол " , kol );
       if ( OrderSelect (i, SELECT_BY_POS ) && OrderMagicNumber ()==magic)
      {
       Print ( " ордера после " , kol );
      
         // kol++;
         }
     }
   return (kol);
  }
 
Ibragim Dzhanaev :
추가 조건 없이 작동하도록 코드를 변경하는 방법은 무엇입니까?

그러나 방법이 없습니다. 사고 팔고 심지어 그 수를 제한해야 하는 경우. 그러나 나는 OrdersTotal ()을 보지 않고 현재 시장에 얼마나 많은 구매와 판매가 있는지 계산할 것입니다.

그리고 다시, OrdersTotal ()을 사용한다면 이 " if (Sborinfo(Magic)== 0 )" 이 왜 필요한가요 ???

 
Vitalie Postolache :

그러나 방법이 없습니다. 사고 팔고 심지어 그 수를 제한해야 하는 경우. 그러나 나는 OrdersTotal ()을 보지 않고 현재 시장에 얼마나 많은 구매와 판매가 있는지 계산할 것입니다.

그리고 다시, OrdersTotal ()을 사용한다면 이 " if (Sborinfo(Magic)== 0 )" 이 왜 필요한가요 ???

이런 뜻인가요? 다른 더 쉬운 옵션이 있습니까?
{
  CloseFirst(Magic);
   int b= 0 ;
   int s= 0 ;
   for ( int i= 0 ; i<= OrdersTotal (); i++)
       if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )== true && OrderMagicNumber ()==Magic && OrderSymbol ()== _Symbol )
        {
         if ( OrderType ()== OP_BUY )
            b++;
         if ( OrderType ()== OP_SELL )
            s++;
        }
   if (b== 0 )
      tiket= OrderSend ( Symbol (), OP_BUY , 0.01 , Ask ,slippage, 0 , 0 , NULL ,Magic, 0 ,Green);
   if (s== 0 )
      tiket= OrderSend ( Symbol (), OP_SELL , 0.01 , Bid ,slippage, 0 , 0 , NULL ,Magic, 0 ,Red);
      }
 

동지! 질문이 있습니다.
Expert Advisor는 전날의 극한 상황에 따라 00:00에 하루의 시작부터 지연을 엽니다.

평일에는 모든 것이 잘 작동하지만 월요일이 열리면서 금요일의 극단이 아니라 어떤 이유로 목요일 수준에서 지연이 발생합니다. 어때요?

OpenTime= "00:00" ;
currtime= TimeToStr ( TimeCurrent (), TIME_MINUTES );
Format= Digits ();
DH= NormalizeDouble ( iHigh ( NULL , PERIOD_D1 , 1 ),Format) ;
DL= NormalizeDouble ( iLow ( NULL , PERIOD_D1 , 1 ),Format);
if (currtime==OpenTime)
{
отложки
}
 
Ibragim Dzhanaev :
이런 뜻인가요? 다른 더 쉬운 옵션이 있습니까?

예, 그런 것입니다. 어디가 더 쉽나요?

 
Vitalie Postolache :

예, 그런 것입니다. 어디가 더 쉽나요?

배열에 대한 교훈을 알고 있습니까? 아시는 분은 링크 부탁드립니다.
사유: