Çaydanlıktan gelen sorular - sayfa 57

 
Lizar :

Şimdi makalede yayınlanan versiyona bir göz atacağım. Şu anda, casusluk konusunda birkaç uzman yapıldı, harika çalışıyorlar.

MetaSürücü:

Bu teknolojinin test cihazında çalışmayacağını düşünüyorum.

İşler.

Bunun test cihazında çalışması harika. Bunu henüz uygulayamadım. Ancak bu muhtemelen deneyim eksikliğinden kaynaklanmaktadır. Zamanlayıcıdayken durdu, ancak uzun.

Grafiğe bir uzman aracı eklemeye çalıştığınızda aşağıdaki mesaj görünür:

USDJPY'nin bununla ne ilgisi olduğunu anlayamıyorum. Kodda başlatma sırasında tanıtıcının alındığını bile yorumladım ve yine de bu mesaj çıkıyor.

 
Lizar :

İşler.

Konstantin, planınızın çoklu para birimi modunda çalışabilmesi için genellikle OnTick() işlevinde veya OnTimer( ) işlevinde bulunan Expert Advisor'ın yürütülebilir kodunun OnChartEvent() içine yerleştirilmesi gerektiğini doğru anlıyor muyum? gerçek zamanlı olarak ve test cihazında.
 
tol64 :

Bunun test cihazında çalışması harika. Bunu henüz uygulayamadım. Ancak bu muhtemelen deneyim eksikliğinden kaynaklanmaktadır. Zamanlayıcıdayken durdu, ancak uzun.

Grafiğe bir uzman aracı eklemeye çalıştığınızda aşağıdaki mesaj görünür:

USDJPY'nin bununla ne ilgisi olduğunu anlayamıyorum. Kodda başlatma sırasında tanıtıcının alındığını bile yorumladım ve yine de bu mesaj çıkıyor.

Henüz bakmadım.

tol64 :
Konstantin, planınızın çoklu para birimi modunda çalışabilmesi için genellikle OnTick() işlevinde veya OnTimer( ) işlevinde bulunan Expert Advisor'ın yürütülebilir kodunun OnChartEvent() içine yerleştirilmesi gerektiğini doğru anlıyor muyum? gerçek zamanlı olarak ve test cihazında.

Evet.

 
tol64 :

Bunun test cihazında çalışması harika. Bunu henüz uygulayamadım. Ancak bu muhtemelen deneyim eksikliğinden kaynaklanmaktadır. Zamanlayıcıdayken durdu, ancak uzun zaman oldu.

Grafiğe bir uzman aracı eklemeye çalıştığınızda aşağıdaki mesaj görünür:

USDJPY'nin bununla ne ilgisi olduğunu anlayamıyorum. Kodda başlatma sırasında tanıtıcının alındığını bile yorumladım ve yine de bu mesaj çıkıyor.

Baktı. Uzman işçi. Hata mesajında sadece bir yazım hatası var.

Size verdiği, MarketWatch penceresinde sembolün seçilmediğine dair bir mesajdı. Uzman Danışman'ın birlikte çalıştığı sembolleri MarketWatch penceresine ayarlayın veya OnInit()'te karşılık gelen sembollerdeki casus çağrılarını yorumlayın.

ExSpy Kontrol paneli MCM.mq5'in düzeltilmiş sürümünü ekliyorum.

Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции - Документация по MQL5
Dosyalar:
 
Lizar :

Baktı. Uzman işçi. Hata mesajında sadece bir yazım hatası var.

Size verdiği, MarketWatch penceresinde sembolün seçilmediğine dair bir mesajdı. Uzman Danışman'ın birlikte çalıştığı sembolleri MarketWatch penceresine ayarlayın veya OnInit()'te karşılık gelen sembollerdeki casus çağrılarını yorumlayın.

ExSpy Kontrol paneli MCM.mq5'in düzeltilmiş sürümünü ekliyorum.

Dikkatsizliğime ben bile güldüm.))) Ne de olsa USDJPY Piyasa İzleme penceresindeydi. Başka bir sembol yoktu ve parmak izlerinde aynı mesajlar vardı. )))

Teşekkür ederim.

 
tol64 :
Konstantin, planınızın çoklu para birimi modunda çalışabilmesi için genellikle OnTick() işlevinde veya OnTimer( ) işlevinde bulunan Expert Advisor'ın yürütülebilir kodunun OnChartEvent() içine yerleştirilmesi gerektiğini doğru anlıyor muyum? gerçek zamanlı olarak ve test cihazında.

Gerekli tüm işlevleri ayrı prosedürler ve işlevler olarak uygulamak (ikincisini tavsiye ederim) ve ardından bunu Expert Advisor'ın herhangi bir yerinden çağırmak daha iyidir.

OOP kullanılıyorsa, gerekli tüm işlevsellik, ana sınıfın çeşitli yöntemlerinin bir kümesi olarak uygulanabilir (genellikle bu, uzman sınıfın soyundan gelir).

 
Interesting :

Gerekli tüm işlevleri ayrı prosedürler ve işlevler olarak uygulamak (ikincisini tavsiye ederim) ve ardından bunu Expert Advisor'ın herhangi bir yerinden çağırmak daha iyidir.

OOP kullanılıyorsa, gerekli tüm işlevsellik, ana sınıfın çeşitli yöntemlerinin bir kümesi olarak uygulanabilir (genellikle bu, uzman sınıfın soyundan gelir).

Şu anda, tüm işlevsellik neredeyse bu şekilde uygulanmaktadır. Hemen hemen. Yani, kodun tamamı ana hesaplamaları içeren birkaç fonksiyondur. OOP'yi henüz tam olarak çözemedim, ancak zaten kullanmanın avantajını görüyorum. Kod her gün büyüyor ve yakında OOP olmadan kullanmak çok elverişsiz olacak.

Farklı çoklu para birimi test yöntemlerinin sonuçlarını verdiğim ayrı bir konu oluşturdum: Çoklu para birimi Uzman Danışmanlarının test sonuçları . Bu konudaki pek çok şey benim için hala belirsiz.

 

Tekliflerim neden yüklenmiyor? Örneğin, EURUSD sadece o yılın Ağustos ayına kadar yüklendi. Ve hepsi bu. Daha fazla yüklemek istemiyorlar. Belki bir yerde tırnak içeren dosyalar yayınlanmıştır?

Bar sayısını sınırsız olarak ayarladım. Birkaç kez güncellendi. HOME düğmesine art arda basıldı. Hala yüklenmiyor

 

Ve tüm MT5 dosyalarının "tam listesi" ve ayrıntıları nerede.

Daha bugün baobabdan kurtuldum, üzgünüm.

 

Çoklu zaman dilimi fraktal göstergesi.

Göstergenin özü, bir zaman diliminin (veya aynı anda birkaçının) fraktallarının diğerinde gösterilmesidir.

Kaynak makale: https://www.mql5.com/en/code/7304 , MQL4'te gösterge kodu

İlk başta, .mq4 sürümünden .mq5 için mikro düzeltmeler içeren bir plan yapmaya çalıştım (bu kodu bile vermiyorum - fiş, MQL4 kaynağında High[shift+ dizilerinin kaygısız manipülasyonunu keşfettiğimde gerçekleşti. i] içeri yaz

 bool Fractal ( string F, int Per, int shift) {...}

, anladığım kadarıyla MQL5'te bu kadar kolay yapılamaz, yani bu tür dizilerin OnCalculate dışında varsayılan görünürlüğü yoktur).

Daha sonra, farklı PERIOD_... parametreleriyle birkaç iFractals tanıtıcısını çağırarak MQL5 altında yeniden yazmaya çalıştım.Sonuç olarak, bazen ilgili TF'ye yalnızca bir dizi fraktal okun yeterli inişini sağlamak mümkün olsa da, fraktallar dağılır. Dikkat çekici olan, diğer bazılarından terminalde aynı zaman dilimine dönerken, gevrekliğin farklı çizilmiş olması, bu göstergeden akla getirilmeyen terminaldeki verilerin tamamen anlaşılmaz bir şekilde yürüdüğünü düşündürmektedir, Her ne kadar her zaman aynı hatalı resmi ve daha fazlasını değil, istikrarlı bir şekilde tekrar etmesi gerektiğini düşündüm. Tabii ki, ikinci varyantta, herhangi bir bool Fraktal'a bile gelmedi ( string F, int Per, int shift) {...}, ki aslında deneyimli gösterge geliştiricilerine dönmek istiyorum.

İşte çizebildiklerim:

 #property indicator_chart_window
#property indicator_buffers 8
#property indicator_plots   8

#property indicator_label1   "FractalUp1"
#property indicator_type1   DRAW_ARROW
#property indicator_color1 clrRed
#property indicator_width1   2

#property indicator_label2   "FractalDw1"
#property indicator_type2   DRAW_ARROW
#property indicator_color2 clrRed
#property indicator_width2   2

#property indicator_label3   "FractalUp2"
#property indicator_type3   DRAW_ARROW
#property indicator_color3 clrBlue
#property indicator_width3   2

#property indicator_label4   "FractalDw2"
#property indicator_type4   DRAW_ARROW
#property indicator_color4 clrBlue
#property indicator_width4   2

#property indicator_label5   "FractalUp3"
#property indicator_type5   DRAW_ARROW
#property indicator_color5 clrGold
#property indicator_width5   2

#property indicator_label6   "FractalDw3"
#property indicator_type6   DRAW_ARROW
#property indicator_color6 clrGold
#property indicator_width6   2

#property indicator_label7   "FractalUp4"
#property indicator_type7   DRAW_ARROW
#property indicator_color7 clrSienna
#property indicator_width7   2

#property indicator_label8   "FractalDw4"
#property indicator_type8   DRAW_ARROW
#property indicator_color8 clrSienna
#property indicator_width8   2

double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
double ExtMapBuffer5[];
double ExtMapBuffer6[];
double ExtMapBuffer7[];
double ExtMapBuffer8[];

int ArrowShift=- 10 ;

int handle1;
int handle2;
int handle3;
int handle4;

int OnInit ()
  {
//   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);
//---
   SetIndexBuffer ( 0 ,ExtMapBuffer1, INDICATOR_DATA );
   PlotIndexSetInteger ( 0 , PLOT_ARROW , 217 );
   PlotIndexSetInteger ( 0 , PLOT_ARROW_SHIFT ,ArrowShift);
   PlotIndexSetDouble ( 0 , PLOT_EMPTY_VALUE , EMPTY_VALUE );
   ArrayInitialize (ExtMapBuffer1, EMPTY_VALUE );

   SetIndexBuffer ( 1 ,ExtMapBuffer2, INDICATOR_DATA );
   PlotIndexSetInteger ( 1 , PLOT_ARROW , 218 );
   PlotIndexSetInteger ( 1 , PLOT_ARROW_SHIFT ,-ArrowShift);
   PlotIndexSetDouble ( 1 , PLOT_EMPTY_VALUE , EMPTY_VALUE );
   ArrayInitialize (ExtMapBuffer2, EMPTY_VALUE );

//---
   SetIndexBuffer ( 2 ,ExtMapBuffer3, INDICATOR_DATA );
   PlotIndexSetInteger ( 2 , PLOT_ARROW , 217 );
   PlotIndexSetInteger ( 2 , PLOT_ARROW_SHIFT ,ArrowShift);
   PlotIndexSetDouble ( 2 , PLOT_EMPTY_VALUE , EMPTY_VALUE );
   ArrayInitialize (ExtMapBuffer3, EMPTY_VALUE );

   SetIndexBuffer ( 3 ,ExtMapBuffer4, INDICATOR_DATA );
   PlotIndexSetInteger ( 3 , PLOT_ARROW , 218 );
   PlotIndexSetInteger ( 3 , PLOT_ARROW_SHIFT ,-ArrowShift);
   PlotIndexSetDouble ( 3 , PLOT_EMPTY_VALUE , EMPTY_VALUE );
   ArrayInitialize (ExtMapBuffer4, EMPTY_VALUE );

//---
   SetIndexBuffer ( 4 ,ExtMapBuffer5, INDICATOR_DATA );
   PlotIndexSetInteger ( 4 , PLOT_ARROW , 217 );
   PlotIndexSetInteger ( 4 , PLOT_ARROW_SHIFT ,ArrowShift);
   PlotIndexSetDouble ( 4 , PLOT_EMPTY_VALUE , EMPTY_VALUE );
   ArrayInitialize (ExtMapBuffer5, EMPTY_VALUE );

   SetIndexBuffer ( 5 ,ExtMapBuffer6, INDICATOR_DATA );
   PlotIndexSetInteger ( 5 , PLOT_ARROW , 218 );
   PlotIndexSetInteger ( 5 , PLOT_ARROW_SHIFT ,-ArrowShift);
   PlotIndexSetDouble ( 5 , PLOT_EMPTY_VALUE , EMPTY_VALUE );
   ArrayInitialize (ExtMapBuffer6, EMPTY_VALUE );

//---
   SetIndexBuffer ( 6 ,ExtMapBuffer7, INDICATOR_DATA );
   PlotIndexSetInteger ( 6 , PLOT_ARROW , 217 );
   PlotIndexSetInteger ( 6 , PLOT_ARROW_SHIFT ,ArrowShift);
   PlotIndexSetDouble ( 6 , PLOT_EMPTY_VALUE , EMPTY_VALUE );
   ArrayInitialize (ExtMapBuffer7, EMPTY_VALUE );

   SetIndexBuffer ( 7 ,ExtMapBuffer8, INDICATOR_DATA );
   PlotIndexSetInteger ( 7 , PLOT_ARROW , 218 );
   PlotIndexSetInteger ( 7 , PLOT_ARROW_SHIFT ,-ArrowShift);
   PlotIndexSetDouble ( 7 , PLOT_EMPTY_VALUE , EMPTY_VALUE );
   ArrayInitialize (ExtMapBuffer8, EMPTY_VALUE );

   handle1= iFractals ( _Symbol , PERIOD_M15 );
   handle2= iFractals ( _Symbol , PERIOD_H1 );
   handle3= iFractals ( _Symbol , PERIOD_H4 );
   handle4= iFractals ( _Symbol , PERIOD_D1 );

   return ( 0 );
  }

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 B1 = BarsCalculated (handle1);
   int B2 = BarsCalculated (handle2);
   int B3 = BarsCalculated (handle3);
   int B4 = BarsCalculated (handle4);

   CopyBuffer (handle1, 0 , 0 ,B1,ExtMapBuffer1);
   CopyBuffer (handle1, 1 , 0 ,B1,ExtMapBuffer2);
   CopyBuffer (handle2, 2 , 0 ,B2,ExtMapBuffer3);
   CopyBuffer (handle2, 3 , 0 ,B2,ExtMapBuffer4);
   CopyBuffer (handle3, 4 , 0 ,B3,ExtMapBuffer5);
   CopyBuffer (handle3, 5 , 0 ,B3,ExtMapBuffer6);
   CopyBuffer (handle4, 6 , 0 ,B4,ExtMapBuffer7);
   CopyBuffer (handle4, 7 , 0 ,B4,ExtMapBuffer8);

   return (rates_total);
  }
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
   return ;
  }
 

Açıkça OnCalculate içinde ve harici bir bool işlevinde bazı koşullu kontroller eksik ya da zaten kodda olanı oldukça doğru kullanmıyorum. Ayrıca, belki de dizileri doğru yerde doğru bir şekilde başlatmak ve onları zaman serisi olarak ayarlamak gerekli olabilir mi?

Neden: