Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 831

 
tsd Tsepkov :

Adından, soyadından bahsediyorum, adı gerçek adla değiştirmeniz gerektiğini söylüyor ama işe yaramıyor

Evet, "Satıcı" durumunuz varsa verilerinizi düzenleyemezsiniz:

Servis masasına açıklamalarla birlikte bir talep yazmaya çalışın.

 
Vladimir Karputov :

Evet, "Satıcı" durumunuz varsa verilerinizi düzenleyemezsiniz:

Servis masasına açıklamalarla birlikte bir talep yazmaya çalışın.

İşin aslı, hayır, bir olmak için onu düzenlemeniz gerekiyor. Kısır döngü...

Satıcı olarak kayıt başvurunuz moderatör tarafından reddedildi.

Lütfen verdiğiniz bilgileri düzeltin.

 
tsd Tsepkov :

***

Lütfen verdiğiniz bilgileri düzeltin.

Belki de nedeni budur? Fotoğraflar yamuk, koyu ya da ihtiyaca göre yapılmamış...

 
tsd Tsepkov :

İşin aslı, hayır, bir olmak için onu düzenlemeniz gerekiyor. Kısır döngü...

Satıcı olarak kayıt başvurunuz moderatör tarafından reddedildi.

Lütfen verdiğiniz bilgileri düzeltin.

Sorunu servis masasına yazın. Forumda rayına oturmaktan daha verimli ;)
 
VHS :

Lütfen bana MQL5'te programlama yaparken void Ignore(long value) { m_ignore=value; yöntemini nasıl kullanacağımı söyleyin; } özel Trailing sınıfındaki standart CExpertSignal sınıfının? Ona nasıl erişilir?

Pozisyonları açmak ve kapatmak için yöntemler veren özel bir sinyal sınıfım var. Ama takipte farklı bir yöntem kullanarak pozisyonu takip etmek istedim. Yalnızca MySignal ve MyTrailing özel sınıflarını ayrı ayrı yazarsanız, pozisyon önce işe yarayan koşula göre kapatılır. İzleyen koşullar daha önce çalıştıysa, her şey yolunda demektir. Ancak bazen MySignal'dan yeni bir (ters) sinyal gelir ve konum tersine çevrilir ve açıldıktan sonra buna bir takip eşlik etmesine, kapatılmamasına ve yenisinin açılmaması için ihtiyacım olur. Temel sınıflara baktım ve bundan sinyal temel sınıfından m_ignore'un sorumlu olduğunu hissediyorum. İlgili filtrede 1 değeri atanırsa, muhtemelen olması gerektiği gibi çalışacaktır. OnInit'te uzman sınıfına filter0.Ignore(0) ekledim. Ancak OOP'de yeniyim ve CExpertSignal sınıfından miras alınmayan MyTrailing sınıfında nasıl olduğunu anlayamıyorum, ancak onun "kuzeni" mi? bu değeri değiştirin (koşullu olarak filter0.Ignore(1) ). Lütfen bana nasıl yapacağımı söyle.

Aslında daha genel bir soru var: Mirasçı olmayan iki sınıf arasında bilgi nasıl aktarılır? Sondaki sınıftan sinyal sınıfına bilgi nasıl aktarılır? Belki global bir değişken oluşturabilir ve onun aracılığıyla iletişim kurabilirsiniz. Ancak bu, OOP'deki korunan üyelerin mantığıyla ilgili olarak oldukça sapkın görünüyor.


Lütfen biri yardım etsin! Zaten yerleşik Ignore'dan uzaklaşmaya çalıştım (ki bu elbette kendi içinde iyi değil, insanlar onu temel koda dahil etmeye çalıştı) ve yine de hiçbir şekilde sabitleyemiyorum. Üçüncü gün icat etmekten acı çekiyorum (ders kitabı yok).

Sınıf kodlarını bile düzelttim: MySignal sınıfına korumalı bir Boolean üyesi (m_permition) tanıttım ve bunun için Set yöntemini oluşturdum, longcondition ve shortcondition'a return (0) if !m_permition ekledim. MyTrailing'de ayrıca korumalı bir Boole üyesi m_signal_permition oluşturdum, bunun için Get ve Set yöntemlerini oluşturdum, CheckTrailings'e onu yönetmesini öğrettim if(position==NULL) {m_signal_permition = true; dönüş(yanlış);} else m_signal_permition = false;

Tek bir şeyi anlamıyorum, onları nerede ve nasıl bir araya getireceğim. Onlara OnTick'te atıfta bulunmaya çalıştım, işe yaramıyor.

Vladimir'in "Nasıl öğretilir ..." makalesini okudum. Özel bir sinyalde başka bir sinyalin örneğini oluşturma ve bunun üzerinden iletişim kurma fikri anlaşılabilir, ancak bir yerde bana tam olarak uymuyor: sinyal ve takip eden sınıflar birbirinden miras alınmıyor.

Yardım edin, iyi insanlar, kim yapabilirse.

 

Merhaba meslektaşlarım. MT5 kotasyonlarında, koruma fiyatına ek olarak, tarihsel yayılma ve kayma (varsayılan olarak her yerde aynıdır ve 10 beş basamaklı nokta) gibi bazı veriler vardır.

Pozisyon açtıktan sonra böyle bir talepte bulunarak:

 Print ( "Expert name: " , __FILE__ , ", Открыта поза Sell с магиком №: " , IntegerToString (m_trade.RequestMagic()), ", Cпред " , SymbolInfoInteger ( _Symbol , SYMBOL_SPREAD ),
", Deviation " , IntegerToString (m_trade.RequestDeviation()));

Aşağıdaki yanıtı alıyoruz:

MT5 test cihazının hem yayılmayı hem de kaymayı birlikte hesapladığını doğru anlıyor muyum, tıpkı MT4'te olduğu gibi, ekran görüntüsündeki belirli bir örnek için yayılmayı manuel olarak 13 noktaya ayarlardım.

 

Merhaba, lütfen biri bana yardım etsin, mt5 danışmanını belirli bir hesap numarasına nasıl bağlarım?

 
denis basuk :

Merhaba, lütfen biri bana yardım etsin, mt5 danışmanını belirli bir hesap numarasına nasıl bağlarım?

Hesap numarasını kontrol etmeniz gerekiyor. Bunu OnInit() ve OnTick() içinde yapmanız gerekir. Misal:

 

Merhaba, göstergeleri MT4'ten MT5'e aktarmaya çalışıyorum. Bir sonraki çubuğa kadar olan süreyi gösteren basit bir gösterge vardır. Gösterge OnTimer'ı kullanır. OnTimer'da yenileme, void refreshClock() işlevi aracılığıyla gerçekleşir. OnTimer kullanımını gerektiren diğer göstergeler için böyle bir yapı kullanmak doğru mudur? Veya adresin sürecini OnTimer'a optimize etmek mümkün mü?

#property description "Time"
#property indicator_chart_window
#property indicator_plots    0

                                    
                                                                                             
input int Offset_Minutes = 60 ;                                                                                                         
input int Font__Size = 10 ;                                   
input color   Font_Color = clrWhite ;                         
input color   Font_No_Bar_Color = clrRed ;                        
input ENUM_BASE_CORNER   Corner = CORNER_RIGHT_UPPER ;        
input int Time_X = 140 ;                                          
input int Time_Y = 0 ;                                            


#define Clock_Name "Тimer"
int selectTime;
int diff;
int offsetHour;

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+

int    OnInit ()
{   
   EventSetMillisecondTimer ( 1000 ); 
   return ( 0 ); 
}

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+

void OnDeinit ( const int reason) 
{ 
   if (reason== REASON_REMOVE       || 
      reason== REASON_CHARTCHANGE || 
      reason== REASON_RECOMPILE    || 
      reason== REASON_CHARTCLOSE   || 
      reason== REASON_CLOSE        || 
      reason== REASON_PARAMETERS )    
   { 
     ObjectDelete ( 0 , "Тimer" );
     EventKillTimer (); 
   }
   ChartRedraw ();
}

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+

void OnTimer ( )                 
{ 
   refreshClock();  
}

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+

int    OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime & time[],
                 const double & open[],
                 const double & high[],
                 const double & low[],
                 const double & close[],
                 const long & tick_volume[],
                 const long & volume[],
                 const int & spread[])
{
   refreshClock();
   return (rates_total);
}
void refreshClock()
{
   static bool inRefresh = false ;
           if (inRefresh) return ;
               inRefresh = true ;
                              ShowClock(); ChartRedraw ();
               inRefresh= false ;
}

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+

void ShowClock()
{
   int periodMinutes     = periodToMinutes( Period ());
   int currentTime       = ( int ) TimeCurrent ();
   int localTime         = ( int ) TimeLocal ();
   int barTime           = ( int ) iTime ();
   
   diff = ( int ) MathMax ( round ((currentTime-localTime)/ 60.0 )* 60 ,- 24 * 3600 );
   offsetHour = ( int )-Offset_Minutes* 60 ; // сдвиг в минутах
   
   
   int currentTimeReal   = localTime+offsetHour;
   int sel_localTime     = localTime+diff;
   selectTime = sel_localTime;
   
     
       color   theColor;
       string time = getTime(barTime+periodMinutes* 60 -selectTime,theColor);
       int times = barTime+periodMinutes* 60 -selectTime;
       if (times < - 60 || TerminalInfoInteger ( TERMINAL_CONNECTED ) == false || 
      currentTimeReal-currentTime > 60 || currentTime-currentTimeReal > 60 )
      time = "Time Off" ;
             
   if ( ObjectFind ( 0 , Clock_Name) < 0 )   
   ObjectCreate ( 0 , Clock_Name, OBJ_LABEL , 0 , 0 , 0 );
   ObjectSetString ( 0 , Clock_Name, OBJPROP_TEXT , "Time: " + time);
   ObjectSetString ( 0 , Clock_Name, OBJPROP_FONT , "Verdana" );
   ObjectSetInteger ( 0 , Clock_Name, OBJPROP_FONTSIZE , Font__Size);
   ObjectSetInteger ( 0 , Clock_Name, OBJPROP_COLOR , theColor);
         ObjectSetInteger ( 0 , Clock_Name, OBJPROP_CORNER , Corner);
         ObjectSetInteger ( 0 , Clock_Name, OBJPROP_XDISTANCE , Time_X);
   ObjectSetInteger ( 0 , Clock_Name, OBJPROP_YDISTANCE , Time_Y);
      
}

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+

string getTime( int times, color & theColor)
{
   string stime = "" ;
   int     seconds;
   int     minutes;
   int     hours;
   int currentTime       = ( int ) TimeCurrent ();
   int localTime         = ( int ) TimeLocal ();
   
   
   offsetHour = ( int )-Offset_Minutes* 60 ;
   
   int currentTimeReal   = localTime+offsetHour;
  
   if (times < 0 || TerminalInfoInteger ( TERMINAL_CONNECTED ) == false || 
   currentTimeReal-currentTime > 60 || currentTime-currentTimeReal > 60 ) {
         theColor = Font_No_Bar_Color; times = ( int ) fabs (times); }
   else   theColor = Font_Color;
   
   seconds = (times% 60 );
   hours   = (times-times% 3600 )/ 3600 ;
   minutes = (times-seconds)/ 60 -hours* 60 ;

   if (hours> 0 )
   if (minutes < 10 )
         stime = stime+( string )hours+ ":0" ;
   else   stime = stime+( string )hours+ ":" ;
         stime = stime+( string )minutes;
   if (seconds < 10 )
         stime = stime+ ":0" +( string )seconds;
   else   stime = stime+ ":" +( string )seconds;
   return (stime);
}

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+
  
datetime iTime ( ENUM_TIMEFRAMES forPeriod= PERIOD_CURRENT )
{
   datetime times[]; if ( CopyTime ( Symbol (),forPeriod, 0 , 1 ,times)<= 0 ) return ( TimeLocal ());
   return (times[ 0 ]);
}

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+

int periodToMinutes( int period)
{
   int i;
   static int _per[]={ 1 , 2 , 3 , 4 , 5 , 6 , 10 , 12 , 15 , 20 , 30 , 0x4001 , 0x4002 , 0x4003 , 0x4004 , 0x4006 , 0x4008 , 0x400c , 0x4018 , 0x8001 , 0xc001 };
   static int _min[]={ 1 , 2 , 3 , 4 , 5 , 6 , 10 , 12 , 15 , 20 , 30 , 60 , 120 , 180 , 240 , 360 , 480 , 720 , 1440 , 10080 , 43200 };

   if (period== PERIOD_CURRENT )
       period = Period ();  
             for (i= 0 ;i< 20 ;i++) if (period==_per[i]) break ;
   return (_min[i]);  
}
 
VHS :

Lütfen biri yardım etsin! Zaten yerleşik Ignore'dan uzaklaşmaya çalıştım (ki bu elbette kendi içinde iyi değil, insanlar onu temel koda dahil etmeye çalıştı) ve yine de hiçbir şekilde sabitleyemiyorum. Üçüncü gün icat etmekten acı çekiyorum (ders kitabı yok).

Sınıf kodlarını bile düzelttim: MySignal sınıfına korumalı bir Boolean üyesi (m_permition) tanıttım ve bunun için Set yöntemini oluşturdum, longcondition ve shortcondition'a return (0) if !m_permition ekledim. MyTrailing'de ayrıca korumalı bir Boole üyesi m_signal_permition oluşturdum, bunun için Get ve Set yöntemlerini oluşturdum, CheckTrailings'e onu yönetmesini öğrettim if(position==NULL) {m_signal_permition = true; dönüş(yanlış);} else m_signal_permition = false;

Tek bir şeyi anlamıyorum, onları nerede ve nasıl bir araya getirebilirim. Onlara OnTick'te atıfta bulunmaya çalıştım, işe yaramıyor.

Vladimir'in "Nasıl öğretilir ..." makalesini okudum. Özel bir sinyalde başka bir sinyalin örneğini oluşturma ve bunun üzerinden iletişim kurma fikri anlaşılabilir, ancak bir yerde bana tam olarak uymuyor: sinyal ve takip eden sınıflar birbirinden miras alınmıyor.

Yardım edin, iyi insanlar, kim yapabilirse.

Bir hafta içinde ilerleme kaydettim! CExpert sınıfında Signal yöntemini buldum. OnTick koduna yapıştırıldı

CExpertSignal *my_signal = ExtExpert.Signal(); my_signal.Ignore(0);

Şimdi, parantez içinde "1" olarak elle değiştirirsem, Ingnore yöntemi çalışır - Expert Advisor bir sinyal üzerinde anlaşma yapmaz.

Geriye sadece OnTick'te takip eden nesne hakkında nasıl bilgi alınacağını anlamak kalıyor. Ne yazık ki, takip eden nesneye başvuru almak için ExtExpert.Trailing() yöntemi yoktur ve bu nedenle derleyici, takipte uygulanan GetPermition yöntemimi hangi nesneyi uygulamak istediğimi anlamıyor. Belki birisi bana nasıl yapacağımı söyleyebilir?