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

 
Vitaliy Sendyaev :

Güzel gün!

Piyasa için bir göstergeyi nasıl doğru bir şekilde monte edeceğimi söyleyebilir misiniz?

.mq5 uzantılı bir c dosyası var ve .mqh uzantılı birkaç dahil dosya var, ancak piyasada yalnızca bir dosyanız olması gerekiyor.

Anladığım kadarıyla kaynaklar aracılığıyla .mqh eklemek imkansız, gerçekten her şeyi manuel olarak tek bir dosyaya aktarmanız gerekiyor mu:?

Ve eğer yeni sürüm:? Yapabileceğin çılgınca +))

Teşekkür ederim.

Derlenmiş (.ex5) dosyasını Market'e aktarırsınız. Bu dosya zaten tüm içerme dosyalarınızı içerecektir.

 
Vladimir Karputov :

Karşı soru: "Neden burada sembolü açıkça ayarlayın"?.

Bu işlevi kullanırsanız, OnInit'te m_symbol öğesine bir sembol atamanız gerekir:

Bu durumda Expert Advisor'ı "EURUSD.m" sembolü üzerinde çalıştırırsanız, m_symbol otomatik olarak "EURUSD.m" olarak ayarlanacaktır.

İşin aslı, danışmanın farklı bir sembol üzerinde asılı kalmasıdır. Ve EURUSD.m fiyat tekliflerini güncellemem gerekiyor

Bu çözümü buldum ama doğru olduğunu düşünmüyorum.

 void OnTick ()
  {   
// Обновляем котировки
     if (!m_symbol.Name( "EURUSD.m" )) //Обновляем котировки по второму символу
     RefreshRates ();
     if (!m_symbol.Name( "GBPUSD.m" )) //Обновляем котировки по символу где висит советник
     RefreshRates ();
 
EgorKim :

İşin aslı, danışmanın farklı bir sembol üzerinde asılı kalmasıdır. Ve EURUSD.m fiyat tekliflerini güncellemem gerekiyor

Bu çözümü buldum ama doğru olduğunu düşünmüyorum.

InInit'te m_symbol için EURUSD .m sembolünü girin. Ya da bana ne yaptığını ve nasıl yaptığını söyle - ben bir tahmin oyunu oynamaya çalışırken.
 

Millet, söyleyin lütfen!!!

Bu değerlerle çalışabilmeniz için TimeCurrent() fonksiyonundan saat ve dakika değerlerini değişkenlere nasıl geçirebilirsiniz?

Veya mesela ben programa saat ve dakikaları string (12:15) üzerinden geçirmek ve 12 ve 15'i değişkenlere geçirmek istiyorum.Bunu nasıl yapabilirim?
 
TaywinLannister :

Millet, söyleyin lütfen!!!

Bu değerlerle çalışabilmeniz için TimeCurrent() fonksiyonundan saat ve dakika değerlerini değişkenlere nasıl geçirebilirsiniz?

Veya mesela ben programa saat ve dakikaları string (12:15) üzerinden geçirmek ve 12 ve 15'i değişkenlere geçirmek istiyorum.Bunu nasıl yapabilirim?

Yapı Zamanı

 
Konstantin Nikitin :

Yapı Zamanı

Teşekkür ederim!
 
Merhaba! Göstergeyi metatrader 4'ten metatrader 5'e değiştirdim, ancak şimdi bir dakika boyunca metatrader 4'ten farklı yerlerde oklar gösteriyor. Bir yerde bir hata mı yaptım yoksa bir komisyoncunun terminalinin 4 ve 5 versiyonlarının dakika tablosunun farklı tırnaklarındaki sebep mi?
 #property strict
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots 2
#property indicator_color1    clrBlue
#property indicator_color2    clrRed

#property indicator_width1    1 
#property indicator_width2    1 
//+------------------------------------------------------------------+

double      SignalBufferRed[];
double      SignalBufferBlue[];
datetime TimeAlert= 0 ;
ENUM_TIMEFRAMES tf0,tf1,tf2,tf3,tf4,tf5; // Было инт
int S= 0 ;
//+------------------------------------------------------------------+
int OnInit ()
  {
  
     SetIndexBuffer ( 0 ,SignalBufferBlue);
     SetIndexBuffer ( 1 ,SignalBufferRed); 
//--- задать рисование линии 
   PlotIndexSetInteger ( 0 , PLOT_DRAW_TYPE , DRAW_ARROW ); 
//--- задание стиля для рисования линии 
   PlotIndexSetInteger ( 0 , PLOT_ARROW , 233 ); 
   //--- задать рисование линии 
   PlotIndexSetInteger ( 1 , PLOT_DRAW_TYPE , DRAW_ARROW ); 
//--- задание стиля для рисования линии 
   PlotIndexSetInteger ( 1 , PLOT_ARROW , 234 ); 
   PlotIndexSetInteger ( 0 , PLOT_ARROW_SHIFT , 5 ); 
   PlotIndexSetInteger ( 1 , PLOT_ARROW_SHIFT ,- 5 ); 
   //--- установим в качестве пустого значения 0 
   PlotIndexSetDouble ( 0 , PLOT_EMPTY_VALUE , 0 ); 
   //--- установим в качестве пустого значения 0 
   PlotIndexSetDouble ( 1 , PLOT_EMPTY_VALUE , 0 ); 





   tf0= Period ();
   tf1=next_period(tf0+ 1 );
   tf2=next_period(tf1+ 1 );
   tf3=next_period(tf2+ 1 );
   tf4=next_period(tf3+ 1 );
   tf5=next_period(tf4+ 1 );
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
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[])
  {
   int i,limit;

   limit=rates_total-prev_calculated- 1 ;
   if (rates_total< 1 ) return ( 0 );
   double d=(high[ 1 ]-low[ 1 ]+high[ 2 ]-low[ 2 ])/ 2 ;
   for (i=limit; i>= 0 ; i--)
     {
       if (S< 1 && NormalizeDouble (open[i]-close[i], _Digits )< 0 && 
         NormalizeDouble ( iOpen ( NULL ,tf1, iBarShift ( NULL ,tf1,time[i], false ))- iClose ( NULL ,tf1, iBarShift ( NULL ,tf1,time[i], false )), _Digits )< 0 && 
         NormalizeDouble ( iOpen ( NULL ,tf2, iBarShift ( NULL ,tf2,time[i], false ))- iClose ( NULL ,tf2, iBarShift ( NULL ,tf2,time[i], false )), _Digits )< 0 && 
         NormalizeDouble ( iOpen ( NULL ,tf3, iBarShift ( NULL ,tf3,time[i], false ))- iClose ( NULL ,tf3, iBarShift ( NULL ,tf3,time[i], false )), _Digits )< 0 && 
         NormalizeDouble ( iOpen ( NULL ,tf4, iBarShift ( NULL ,tf4,time[i], false ))- iClose ( NULL ,tf4, iBarShift ( NULL ,tf4,time[i], false )), _Digits )< 0 && 
         NormalizeDouble ( iOpen ( NULL ,tf5, iBarShift ( NULL ,tf5,time[i], false ))- iClose ( NULL ,tf5, iBarShift ( NULL ,tf5,time[i], false )), _Digits )< 0 )
        {
         SignalBufferBlue[i]=low[i]-d;
...
         S= 1 ;
        }
       if (S>- 1 && NormalizeDouble (open[i]>close[i], _Digits )> 0 && 
         NormalizeDouble ( iOpen ( NULL ,tf1, iBarShift ( NULL ,tf1,time[i], false ))- iClose ( NULL ,tf1, iBarShift ( NULL ,tf1,time[i], false )), _Digits )> 0 && 
         NormalizeDouble ( iOpen ( NULL ,tf2, iBarShift ( NULL ,tf2,time[i], false ))- iClose ( NULL ,tf2, iBarShift ( NULL ,tf2,time[i], false )), _Digits )> 0 && 
         NormalizeDouble ( iOpen ( NULL ,tf3, iBarShift ( NULL ,tf3,time[i], false ))- iClose ( NULL ,tf3, iBarShift ( NULL ,tf3,time[i], false )), _Digits )> 0 && 
         NormalizeDouble ( iOpen ( NULL ,tf4, iBarShift ( NULL ,tf4,time[i], false ))- iClose ( NULL ,tf4, iBarShift ( NULL ,tf4,time[i], false )), _Digits )> 0 && 
         NormalizeDouble ( iOpen ( NULL ,tf5, iBarShift ( NULL ,tf5,time[i], false ))- iClose ( NULL ,tf5, iBarShift ( NULL ,tf5,time[i], false )), _Digits )> 0 )
        {
         SignalBufferRed[i]=high[i]+d;
...
         S=- 1 ;
        }
     }

   return (rates_total);
  }
//+------------------------------------------------------------------+
ENUM_TIMEFRAMES next_period( int per) // Было инт
  {
   if (per > PERIOD_W1 )   return ( PERIOD_MN1 );   // Былы цифры вместо период_
   if (per > PERIOD_D1 )   return ( PERIOD_W1 );   // Былы цифры вместо период_
   if (per > PERIOD_H4 )     return ( PERIOD_D1 );   // Былы цифры вместо период_
   if (per > PERIOD_H1 )     return ( PERIOD_H4 );   // Былы цифры вместо период_
   if (per > PERIOD_M30 )     return ( PERIOD_H1 );   // Былы цифры вместо период_
   if (per > PERIOD_M15 )     return ( PERIOD_M30 );   // Былы цифры вместо период_
   if (per >   PERIOD_M5 )     return ( PERIOD_M15 );   // Былы цифры вместо период_
   if (per >   PERIOD_M1 )     return ( PERIOD_M5 );   // Былы цифры вместо период_
   if (per == PERIOD_M1 )     return ( PERIOD_M1 );   // Былы цифры вместо период_
   return ( Period ());
  }
//+------------------------------------------------------------------+
 
Yevgen Butov :
Merhaba! Göstergeyi metatrader 4'ten metatrader 5'e değiştirdim, ancak şimdi bir dakika boyunca metatrader 4'ten farklı yerlerde oklar gösteriyor. Bir yerde bir hata mı yaptım yoksa bir komisyoncunun terminalinin 4 ve 5 versiyonlarının dakika tablosunun farklı tırnaklarındaki sebep mi?

MQL5 ve MQL4 göstergesinde basit bir test yapın - çubuk #0'ın zamanını yazdırın:

 Print ( "Bar #0: " ,time[ 0 ]);

Bu neyin ne olduğunu anlamanıza yardımcı olacaktır...

 
Vladimir Karputov :

MQL5 ve MQL4 göstergesinde basit bir test yapın - çubuk #0'ın zamanını yazdırın:

Bu neyin ne olduğunu anlamanıza yardımcı olacaktır...

Bu metin OnCalculate'e eklendi, çubuk zamanı şimdi her dakika değişiyor, ancak şimdi hiç ok yok. Ne yanlış olabilir?

 ArraySetAsSeries (time, true ); 

   ArraySetAsSeries (open, true ); 

   ArraySetAsSeries (high, true ); 

   ArraySetAsSeries (low, true ); 

   ArraySetAsSeries (close, true ); 
 
Yevgen Butov :

Bu metin OnCalculate'e eklendi, çubuk zamanı şimdi her dakika değişiyor, ancak şimdi hiç ok yok. Ne yanlış olabilir?

Anlamadın. Yazdırılan değerleri karşılaştırın. Çubuk zaman #0 ve çubuk zaman #rates_total-1'i karşılaştırın. Orayı ve burayı karşılaştırın...