"Alım Satım Modellerine Dayalı Çoklu Uzman Danışmanlar Oluşturma" makalesi için tartışma - sayfa 5

 

MetaTrader 5 Client Terminal build 381

...

MQL5: Standart kütüphane güncellendi: CDealInfo, CHistoryOrderInfo, COrderInfo ve CPositionInfo sınıflarının Type() yöntemleri sırasıyla DealType(), OrderType() ve PositionType() olarak yeniden adlandırıldı.

...


Model temel ticaret sınıflarına dayandığından, arayüzlerindeki küçük değişiklikler bile kritik öneme sahiptir. Bu durumda hata, TableOrders.mqh dosyasında Type() metodunu ilgili OrderType() metoduyla değiştirerek kolayca düzeltilebilir.

Yakın gelecekte, makaleye ekli kodlar derleyicinin ve terminalin en son yapılarında doğru çalışacak şekilde güncellenecektir.

 

chr1sch4n: Hata yok... yeniden yazdığınız kod aynı.

C dilinde, case deyimleri düşer, bu yüzden break deyimini koymanız gerekir, bu nedenle Buy bir sonraki deyime düşmeli ve sırayı yürütmeye devam etmelidir.

bakınız: http: //en.wikipedia.org/wiki/Switch_statement ; bölüm C, C++, Java, PHP, ActionScript, JavaScript; "bu, düşmeye izin vermek için kesme çizgisinin atlanmasının klasik bir örneğidir"

Şerefe

 
Lugner:

Bir rica - İngilizce dosyalardaki yorumlarınız tercüme edilebilir mi?

Düzeltildi. Teşekkür ederim.
 
Okuduğum en iyi makalelerden biri, çok teşekkür ederim.
 

Makalede gösterilen etkileyici geri testi alamıyorum. yapmam gereken ayarlar nelerdir?

 

"m_timing değişkenini ayrıca açıklamaya değer. Uzman Danışmanın çalışması sırasında belirli olayların belirli zaman aralıklarında çağrılması gerekir.OnTimer() işlevibunun için uygun değildir, çünkü farklı modeller farklı zaman aralıklarına sahip olabilir.

Örneğin, bazı olayların her yeni çubukta çağrılması gerekir. Saatlik bir grafikte işlem yapan bir model için, bu tür olaylar her saat, günlük bir grafikte işlem yapan bir model için - her yeni günlük çubukta çağrılmalıdır. Bu modellerin farklı zaman ayarlarına sahip olduğu ve her birinin buna göre kendi modelinde saklanması gerektiği açıktır. CModel sınıfında bulunan t_period yapısı, bu ayarların her birinin kendi modelinde ayrı ayrı saklanmasına olanak tanır.

İşte bu yapı böyle görünüyor:

struct t_period
{
 большая структура 
};

Gördüğünüz gibi, zaman dilimlerinin olağan numaralandırmasını içerir. Yeni bir çubuğun oluşup oluşmadığını öğrenmek için, son çubuğun zamanını t_period yapısında kaydedilen zamanla karşılaştırmamız gerekir. Zaman eşleşmiyorsa, yeni bir çubuk oluşmuştur, yapıdaki zaman mevcut çubuğun zamanına güncellenmeli ve pozitif bir sonuç (true) döndürmelidir. Son çubuğun zamanı ile yapı çakışırsa, bu henüz yeni bir çubuğun oluşmadığı anlamına gelir ve sadece negatif bir sonuç (false) döndürmemiz gerekir.

İşte açıklanan algoritmaya göre çalışan bir fonksiyon:

bool timing(string symbol, ENUM_TIMEFRAMES tf, t_period &timeframes)
{
большой swich
} 

"

Elbette sadece acemi bir programcıyım, ancak belki de bunu yapmak için yeni bir çubuğun başlangıcını belirlemek mümkündür (m_timing değişkenini sadece datetime yaparken):

Eğer sonuçlarda yanılıyorsam, şimdiden özür dilerim ve beni düzeltmenizi rica ederim. Eğer yanılmıyorsam - bu siteye ve özellikle burada çalışan herkese teşekkür ediyorum - makaleler, dokümantasyon yazıları - bir şeyler anlamaya başladım.

bool timing(string symbol, ENUM_TIMEFRAMES tf, t_period &timeframes)
{
   int rez;
   MqlRates raters[1];
   rez=CopyRates(symbol, tf, 0, 1, raters);
   if(rez==0)
   {
      Print("Error timing");
      return(false);
   }
   if (TimeCurrent()-raters.time)>PeriodSeconds(tf) return(true); else return(false);
   
} 


Not: Bu arada, harika bir makale için teşekkürler.

 

Merhaba,

Çift ticareti (başka bir sembol) desteklemek için modeli veya Processing () işlevini nasıl geliştirebilirim? Şimdi her şey gösterge ile çalışıyor ve ardından yalnızca aynı Sembol üzerinde işlem yapıyor. Aynı anda Symbol1 alıp Symbol2 satabilmek için Symbol1 ve Symbol2'yi nasıl ekleyebilirim?

Yardım için teşekkürler

Not: Veya Symbol2 üzerindeki göstergenin davranışına göre Symbol1'i al/sat...

 
P_Cherry:

Merhaba,

Çift ticareti (başka bir sembol) desteklemek için modeli veya Processing () işlevini nasıl geliştirebilirim? Artık her şey gösterge ile çalışıyor ve ardından yalnızca aynı Sembol üzerinde işlem yapıyor. Aynı anda Symbol1 alıp Symbol2 satabilmek için Symbol1 ve Symbol2'yi nasıl ekleyebilirim?

Yardım için teşekkürler

Not: Veya Symbol2 üzerindeki göstergenin davranışına göre Symbol1'i al / sat ...

Umarım bu mümkün olur?
 
Automated-Trading:
Düzeltildi. Teşekkür ederim.
Teşekkürler.
 

Merhaba,

Bu harika makale için teşekkürler...

ReplacedDelayedOrders fonksiyonunda şu kod satırı var: for(int b=0;i<history_orders;b++)

Sanırım bu sonsuz bir döngüye neden olacak, yoksa yanılıyor muyum?

Sanırım kod satırı şöyle olmalı: for(int b=0;b<history_orders;b++)

Güle güle, T.