MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 428

 
Artyom Trishkin :
İnatçılığa kızmıyorum. Ne için?
Değişkenler açıkça başlatılmalıdır. O zaman bir gün başlatmanın önemine ulaşacaksınız. Bu arada, kaşlı ayraçlar içindeki her şeyi koddan atabilirsiniz.

Mizah şakasını takdir ettim. Teşekkür ederim.

 
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" );
      }
}

Söyle bana sorun ne, önceki mumdaki fibo fan çizgisinin değerini nasıl alacağımı anlamadım?

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

Söyle bana sorun ne, önceki mumdaki fibo fan çizgisinin değerini nasıl alacağımı anlamadım?

Burada hem mql4 hem de mql5'te bir şeyler yığılmış...

Değer hangi dilde alınmalıdır?

 
nicholishen :

Eşitlik için kayan noktalı sayıların karşılaştırılması

 bool ( fabs (number1-number2) < _Point / 10 * 5 )
 bool flag = ( fabs (number1-number2) < _Point / 10 * 5 )
 
hesap terminalde silinirse - anladığım kadarıyla hesabın yalnızca terminaldeki görüntüsü silinir. aracının sunucusundaki hesabın kendisi silinmez.
 
igrok333 :
hesap terminalde silinirse - anladığım kadarıyla hesabın yalnızca terminaldeki görüntüsü silinir. aracının sunucusundaki hesabın kendisi silinmez.

Evet doğru anladınız.

 
STARIJ :
Çok basit. iMA'yı hesaplamak için 7 parametre ayarlamanız gerekir. İlk parametre olan sembol adı açıktır. İkinci zaman çerçevesi olarak M1'i ayarlayın . Üçüncü parametre - dönem - günün hangi saatinde bir dakikadan fazla olduğunu, ihtiyacınız olduğu kadar ayarlayın. Dördüncü parametre - shift = 0. Sonraki iki parametre - ortalama alma yöntemi ve fiyat türü - bilirsiniz. Son parametre - çubuğun sayısı - ihtiyacınız olan zamanı bilerek hesaplayın. Bu kadar! M5 ve M15 zaman dilimleri için hesaplamalar yaparak bunu iki kez kontrol edin. Belki M30 için bile.

Alekseu Fedotov :

her şey basit

Bunun gibi bir şey


Yarın deneyip tekrar yazarım. Sayesinde)

 

Söylesene , Parabolik SAR göstergesindeki geri dönüş anını nasıl yakalayıp düzeltebilirim. En azından nasıl yapılacağı hakkında bir fikir. Şimdiden teşekkürler!

 
Corvin85 :

Söylesene, Parabolik SAR göstergesindeki geri dönüş anını nasıl yakalayıp düzeltebilirim. En azından nasıl yapılacağı hakkında bir fikir. Şimdiden teşekkürler!


mevcut ve önceki çubuğu kontrol edebilirsiniz.

örneğin, bir önceki fiyatın üstündeydi, şimdiki fiyatın altında.

 

Merhaba sevgili forum kullanıcıları. Aynı koşullar altında bir pozisyon açarken t1 biletinin yeniden çizilmemesi için ne yapılması gerektiğini söyleyin. Böylece, bu (ancak diğer) pozisyonları kapatma koşulu oluştuğunda, her ikisi (ve muhtemelen daha fazlası) okunur.

 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 ;
      }


bilet. Şimdiye kadar, yalnızca sonuncusu okunuyor ve kapanış döngüsü ilk bileti yok sayıyor. Döngü doğru bir şekilde oluşturulmuş gibi görünüyor:

 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 ;  
      }      
     
  }