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

 
Artyom Trishkin :
나는 완고함을 모욕하지 않습니다. 무엇 때문에?
변수는 명시적으로 초기화해야 합니다. 그러면 언젠가 초기화의 중요성을 알게 될 것입니다. 그 동안 코드에서 중괄호 안의 모든 것을 버릴 수 있습니다.

나는 유머의 농담을 높이 평가했다. 고맙습니다.

 
input int ExtDepth= 12 ; //
input int ExtDeviation= 5 ; //
input int ExtBackstep= 3 ; //

input int Deviation= 10 ;

//---------------------------------
int zz_handle;
struct zz_info{
   double P_;
   datetime T_;
};
double zz_value[];
datetime zz_time[];
zz_info zz_highs[ 2 ];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   zz_handle= iCustom ( _Symbol , PERIOD_CURRENT , "Examples\\ZigZag" ,ExtDepth,ExtDeviation,ExtBackstep);
   

   
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {

   int count= 0 ; 
   int i= 1 ;
   
   CopyBuffer (zz_handle, 0 , 1 , 1 ,zz_value);
   if (zz_value[ 0 ]!= 0 )
      {
       while (count< 2 )
         {
             CopyBuffer (zz_handle, 0 ,i, 1 ,zz_value);
             CopyTime ( _Symbol , PERIOD_CURRENT ,i, 1 ,zz_time);
            i++;
             if (zz_value[ 0 ]!= 0 )
               {
                  zz_highs[count].P_=zz_value[ 0 ];
                  zz_highs[count].T_=zz_time[ 0 ];
                  count++;
               }
                           
         }
      DrawFibofan(zz_highs);
      }
       double high[];
       double low[];
       datetime Time [];
       CopyHigh ( _Symbol , PERIOD_CURRENT , 1 , 1 ,high);
       CopyLow ( _Symbol , PERIOD_CURRENT , 1 , 1 ,low);
       CopyTime ( _Symbol , PERIOD_CURRENT , 1 , 1 , Time );
       double fibo_p= ObjectGetValueByTime ( 0 , "DisFibo" , Time [ 0 ], 0 );
       Comment (fibo_p);
   
  }
//+------------------------------------------------------------------+
void DrawFibofan(zz_info &zz[])
{
   if (zz[ 0 ].P_-zz[ 1 ].P_> 0 ) 
      {
         ObjectDelete ( 0 , "AscFibo" );
         ObjectCreate ( 0 , "AscFibo" , OBJ_FIBOFAN , 0 ,zz[ 1 ].T_,zz[ 1 ].P_,zz[ 0 ].T_,zz[ 0 ].P_);
         ObjectSetInteger ( 0 , "AscFibo" , OBJPROP_LEVELS , 1 );
         ObjectSetDouble ( 0 , "AscFibo" , OBJPROP_LEVELVALUE , 0.882 );
         ObjectSetInteger ( 0 , "AscFibo" , OBJPROP_LEVELCOLOR , clrNavy );
         ObjectSetInteger ( 0 , "AscFibo" , OBJPROP_WIDTH , 2 );
         ObjectSetString ( 0 , "AscFibo" , OBJPROP_LEVELTEXT , "88.2" );
      }

       else
      {
         ObjectDelete ( 0 , "DisFibo" );
         ObjectCreate ( 0 , "DisFibo" , OBJ_FIBOFAN , 0 ,zz[ 1 ].T_,zz[ 1 ].P_,zz[ 0 ].T_,zz[ 0 ].P_);
         ObjectSetInteger ( 0 , "DisFibo" , OBJPROP_LEVELS , 1 );
         ObjectSetDouble ( 0 , "DisFibo" , OBJPROP_LEVELVALUE , 0.882 );
         ObjectSetInteger ( 0 , "DisFibo" , OBJPROP_LEVELCOLOR , clrNavy );
         ObjectSetInteger ( 0 , "DisFibo" , OBJPROP_WIDTH , 2 );
         ObjectSetString ( 0 , "DisFibo" , OBJPROP_LEVELTEXT , "88.2" );
      }
}

무슨 일인지 말해줘, 나는 이전 양초에서 fibo 팬 라인의 가치를 얻는 방법을 이해하지 못합니까?

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Обсудим совместные проекты в редакторе - зачем они и...
 
Roman Sharanov :

무슨 일인지 말해줘, 나는 이전 양초에서 fibo 팬 라인의 가치를 얻는 방법을 이해하지 못합니까?

mql4와 mql5 모두에 무언가가 쌓여 있습니다 ...

어떤 언어로 값을 얻어야 합니까?

 
nicholishen :

같음을 위한 부동 소수점과 숫자 비교

 bool ( fabs (number1-number2) < _Point / 10 * 5 )
 bool flag = ( fabs (number1-number2) < _Point / 10 * 5 )
 
터미널에서 계정이 삭제된 경우 - 내가 알기로는 터미널에서 계정의 표시만 삭제됩니다. 브로커 서버의 계정 자체는 삭제되지 않습니다.
 
igrok333 :
터미널에서 계정이 삭제된 경우 - 내가 알기로는 터미널에서 계정의 표시만 삭제됩니다. 브로커 서버의 계정 자체는 삭제되지 않습니다.

네, 정확히 이해하셨습니다.

 
STARIJ :
아주 간단합니다. iMA를 계산하려면 7개의 매개변수를 설정해야 합니다. 첫 번째 매개변수인 symbol name 은 분명합니다. 두 번째 시간 프레임으로 M1 을 설정 합니다. 세 번째 매개 변수인 기간은 하루가 1분 이상인 시간에 필요한 만큼 설정합니다. 네 번째 매개변수는 shift = 0입니다. 다음 두 매개변수는 평균화 방법과 가격 유형입니다. 마지막 매개 변수 - 막대 수 - 필요한 시간을 알고 계산합니다. 그게 다야! M5 및 M15 기간을 계산하여 이를 다시 확인하십시오. M30도 가능합니다.

알렉세우 페도토프 :

모든 것이 간단합니다

이 같은


내일 시도해보고 다시 글을 쓰겠습니다. 덕분에)

 

Parabolic SAR 표시기 에서 반전의 순간을 포착하고 수정하는 방법을 알려주십시오. 적어도 그것을하는 방법에 대한 아이디어. 미리 감사드립니다!

 
Corvin85 :

Parabolic SAR 표시기에서 반전의 순간을 포착하고 수정하는 방법을 알려주십시오. 적어도 그것을하는 방법에 대한 아이디어. 미리 감사드립니다!


현재 및 이전 막대를 확인할 수 있습니다.

예를 들어, 이전 것은 가격보다 높았고 현재는 가격보다 낮습니다.

 

안녕하세요, 친애하는 포럼 사용자. 동일한 조건 에서 포지션을 열 때 티켓 t1이 다시 뽑히지 않도록 해야 하는 작업을 알려주세요. 이 (그러나 다른 것은 아님) 위치를 닫기 위한 조건이 발생하면 둘 다(및 가능하면 더 많은) 위치를 읽습니다.

 if (ЗДЕСЬ УСЛОВИЕ ОТКРЫТИЯ ПОЗИЦИИ БАЙ)
      {
      t1= OrderSend ( Symbol (), OP_BUY ,lot, Ask ,slippage, 0 , 0 , "" , 0 , 0 ,Green);
       if (t1> 0 )
           {
             if ( OrderSelect (t1, SELECT_BY_TICKET , MODE_TRADES ))
              { Print ( "Открыта позиция BUY20" );
               buy20= true ;
              }
           }
         else
             Print ( "Error opening BUY20 order : " , GetLastError ());
       return ;
      }


티켓. 지금까지는 마지막 티켓만 읽고 닫는 루프는 첫 번째 티켓을 무시합니다. 루프가 올바르게 빌드된 것 같습니다.

 void ClosePoz()
  { RefreshRates ();
         double WPR0 = iWPR ( NULL , PERIOD_M5 ,bars, 0 );
         bool rez1 = false ;
         bool rez2 = false ;
   int total= OrdersTotal ();
       for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--)
      {
         if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
         {
         if ( OrderTicket ()==t1 && buy20 && MathAbs (WPR0)> 81 )
         rez1 =   OrderClose ( OrderTicket (), OrderLots (), NormalizeDouble ( MarketInfo ( OrderSymbol (), MODE_BID ), int ( MarketInfo ( OrderSymbol (), MODE_DIGITS ))),slippage, clrNONE ); 
        
         if ( OrderTicket ()==t2 && buy80 && MathAbs (WPR0)< 20 )
         rez2 =   OrderClose ( OrderTicket (), OrderLots (), NormalizeDouble ( MarketInfo ( OrderSymbol (), MODE_BID ), int ( MarketInfo ( OrderSymbol (), MODE_DIGITS ))),slippage, clrNONE );                 
         }
       continue ;  
      }      
     
  }