"Uyarlanabilir Alım Satım Sistemleri ve Bunların MetaTrader 5 Müşteri Terminalinde Kullanımları" makalesi için tartışma - sayfa 2

 

Belgeleri İngilizceye çevirmek zahmetli mi? Bazı iyi dokümanları her zaman takdir ederim. Harika makale, harika katkınız için teşekkürler.

 
Lugner:

Belgeleri İngilizceye çevirmek zahmetli mi? Bazı iyi dokümanları her zaman takdir ederim. Harika makale, harika katkınız için teşekkürler.

Ekteki belgeleri mümkün olan en kısa sürede çevireceğiz.
 

Giriş parametreleri (değişkenler) ile çalışmak için, bunları sınıf bildiriminden önce bildirmek ve

sınıf (içerir) çağrı yolunu takip eder.

 
Lugner:

Belgeleri İngilizceye çevirmek zahmetli mi? Bazı iyi dokümanları her zaman takdir ederim. Harika makale, harika katkınız için teşekkürler.

Teşekkür ederim. Belgeler çevrildi.
 
AM2:

CAdaptiveStrategy sınıfında sadece stokastik ticareti yapmaya çalışıyorum:

Geri kalanını devre dışı bıraktım, ancak test cihazındaki grafik hala aynı. Anladığım kadarıyla, stratejilerin bağlandığı ve bağlantısının kesildiği yer burası mı?

Evet, stratejiler CAdaptiveStrategy::Expert_OnInit() işlevine bağlanır. Kolaylık sağlamak için, Uzman Danışmanın hata ayıklama sürümünü kullanmak daha iyidir, sonuçları dosyalara kaydetmeyi eklemiştir. direction_res.txt dosyasını kullanarak gerçek ticarette hangi stratejilerin hangi sinyallerinin kullanıldığını anlayabilirsiniz.

Belirtilen 5 stokastikten oluşan uyarlanabilir bir strateji kullanıldığında(EURUSD H1, 2010 başından 1 Eylül 2010'a kadar test), aşağıdaki sonuçlar elde edilir:




 

Bu muhtemelen çok çok uzun zamandır programatik/robotik ticaret üzerine okuduğum en düşündürücü makale. Çok teşekkür ederim!

Bu yeni hevesle hareket ederek, Eugene'in çalışmasını biraz uyarladım. [Özür dilerim - en azından ben de fikirlerimi paylaşacağım ;-) ]

Mevcut bir EA'yı (ne yazık ki henüz Nesne Yönelimli değil) aşağıdakiler için uyarladım:

1. Çoklu zaman ölçekleri: M1, M3, M5, M10, M20, M30, H1
2. Çoklu Hızlı MA'lar: 3,5,7,9,11
3. Çoklu Yavaş MA'lar: 17,27,37,47 vb 97,107, 117 vb

Bir foreach(period)-foreach(fast)-foreach(slow) döngüsü üzerinde bir M1 tikine eklenmiştir. Her tik, 'sanal' bir ticareti kontrol etmesi gerekip gerekmediğini hesaplar ve gerekirse mantıksal/sanal bir P/L dengesini koruyarak 'yürütür'.

Sonuçlar çok şaşırtıcı ve çok olumlu ...

Optimizasyon şu anda kısa zaman aralıklarının (örn. M1, M3) kaldırılması [çünkü daha yüksek zaman aralıkları sonunda 'kazanıyor'] ve ayrıca 'hızla gelişen' parametre setlerinin tespit edilmesini sağlamak için 'çalışan P/L' sayacının ne sıklıkla temizleneceğinin belirlenmesi alanlarında yapılıyor.

Ayrıca favori ticaret EA'mı bu çalışmaya (ADX / RSI / MACD / RVI kontrolleri vb. Eklemek için) arayüzlemeliyim, böylece her zaman en uygun, kazanan hızlı / yavaş MA çiftlerini kullanır ve ayrıca iyi bir pazar, para, pozisyon ve ticaret yönetimi mantığına sahiptir.

Tekrar teşekkürler,

T.

 

Kuantum,

Açıkçası, hala yetenekli olanlar dışında daha fazla alış ve satış koşulu (veya alış ve satış koşullarının çiftleri / kombinasyonları) eklemek istersem

if(buy_condition_1 && buy_condition_2) new_state=SIGNAL_OPEN_LONG;
if(sell_condition_1 && sell_condition_2) new_state=SIGNAL_OPEN_SHORT;

CStrategyMA.mqh'deki örnekte,

diğer fırsatları tetiklemek için

new_state=SIGNAL_CLOSE_SHORT;
// ve 
new_state=SIGNAL_CLOSE_LONG;

Bu kombinasyonları CStrategyMA.mqh dosyasına eklemenin mantıksal bir anlamı yoktur, ancak her yeni koşul veya çift/kombinasyon için

koşullarına bağlı olarak, başka bir include/class dosyası tahsis edilmelidir,

Bu doğru mu?

Hızlıca demek istediğim, örnek olarak, eğer bu koşulları eklemek istersem:

// Satın alma koşulu 3: MA yeni 
   bool buy_condition_3=(m_values[0+5]>m_values[1+7]) && (m_values[1+5]>m_values[2+7]);
// Alış koşulu 4: önceki OPEN fiyatı MA'dan yüksek
   bool buy_condition_4=(p_open>m_values[1]);

// Satış koşulu 3: MA yeni 
   bool sell_condition_3=(m_values[0+5]<m_values[1+7]) && (m_values[1+5]<m_values[2+7]);
// Alış koşulu 4: önceki OPEN fiyatı MA'dan düşük
   bool sell_condition_4=(p_open<m_values[1]);

ve

  if(buy_condition_3  &&  buy_condition_4) new_state=SIGNAL_OPEN_LONG;
   if(sell_condition_3 && sell_condition_4) new_state=SIGNAL_OPEN_SHORT;

   if((GetSignalState()==SIGNAL_OPEN_SHORT) && (buy_condition_3 || buy_condition_4)) new_state=SIGNAL_CLOSE_SHORT;
   if((GetSignalState()==SIGNAL_OPEN_LONG) && (sell_condition_3 || sell_condition_4)) new_state=SIGNAL_CLOSE_LONG;

çekirdek sistemini etkilemeden CStrategyMA.mqh içindeki alt sınıflara eklenebilir.

uyarlanabilir sistem, başka bir deyişle bu include dosyasının doğru bir şekilde devam etmesiyle CStrategyMA.mqh, CAdaptiveStrategy.mqh ile etkileşime girer

ve CSampleStrategy.mqh dosyalarında, mantıksal çekirdekteki yeni koşulları (örneğin 3 ve 4) da dikkate alarak

EA fikrinin?

Veya 3. ve 4. koşul için, örneğin bir CStrategyMA3and4.mqh dosyasını yeniden yazmalı ve eklemeliyim?

Bu koşulları aynı CStrategyMA.mqh içine eklemek ve hepsi doğru şekilde çalışmak mümkün mü?

Belki kendi kendime cevap verdim ve biraz aptalım, ama sizin fikirlerinizi de sormak istiyorum.

Teşekkürler

 
Automated-Trading:

Evet, stratejiler CAdaptiveStrategy::Expert_OnInit() fonksiyonuna bağlanır. Kolaylık sağlamak için, sonuçları dosyalara kaydetmenin eklendiği Uzman Danışmanın hata ayıklama sürümünü kullanmak daha iyidir. direction_res.txt dosyasını kullanarak gerçek ticarette hangi strateji sinyallerinin kullanıldığını anlayabilirsiniz.

Yukarıdaki 5 stokastikten oluşan uyarlanabilir bir strateji kullanıldığında (EURUSD H1, 2010 başından 1 Eylül 2010'a kadar test), aşağıdaki sonuçlar elde edilir:

Grafiğe bakılırsa, bu optimizasyonun bir kısmı otomatik hale getirilmiş olsa bile, yine basitçe optimize edilmiş bir modele sahipsiniz, ancak uyarlanmış bir model, strateji çalışması sırasında giriş ve çıkışı piyasaya uyarlayan bir hesaplama bloğunun bulunduğu bir modeldir ve başlatmadaki parametreler hiç önemli değildir. Bu tür koşullarda, sadece denge çizgisine göre öz sermaye çizgisi eşitlenecektir, çünkü bir pozisyonu karla kapatma dağılımının değiştiği durumlarda - böyle bir sistem yine de yeni değerleri yeniden hesaplayacak ve kar için yeni bir bölge belirleyecek ve bu nedenle kar için parametreleri yeniden oluşturacak ve öz sermaye emirleri grubu korunacaktır:
Dosyalar:
 

Sevgili Forexistence,

Sorunuzu yanıtladınız :)

Haklısınız, işlem koşullarını değiştirmek istiyorsanız iki yol var, bir taraftan CStrategyMA stratejisine yeni koşullar ekleyebiliriz (ancak ilkinden farklı yeni bir strateji elde edeceğiz), diğer yol ise yeni bir sınıf oluşturmaktır (örneğin, CStrategyMA34) ve oraya ek alım / satım koşulları ekleyin.

Ancak elbette, dosyayı yeni stratejinize dahil etmeli ve bu yeni stratejileri CAdaptiveStrategy sınıfının Expert_OnInit işlevine eklemelisiniz:

#include <CStrategyMA3and4.mqh>

int CAdaptiveStrategy::Expert_OnInit()
{
.....
--- adding new strategies
   for(int i=0; i<10; i++)
     {
      CStrategyMA34 *t_StrategyMA34;
      t_StrategyMA34=new CStrategyMA34;
      if(t_StrategyMA34==NULL)
        {
         delete m_all_strategies;
         Print("Error of creation of object of the CStrategy3and4 type");
         return(-1);
        }
      int period=3+i*10;
      t_StrategyMA34.Initialization(period,true);
      t_StrategyMA34.SetStrategyInfo(_Symbol,"[MA34_"+IntegerToString(period)+"]",period,"Moving Averages with new conditions "+IntegerToString(period));
      m_all_strategies.Add(t_StrategyMA34);
     }
.....
}

İkinci yol daha iyidir, birçok strateji ve bunların varyasyonlarını ekleyebilirsiniz.

CStrategyMA sınıfı örneklerini (eğer varsa) kaldırmanıza gerek yoktur, sonuçları kötü olacağından kum havuzlarına bakmayacağız.

Piyasa, m_all_strategies'e dahil edilen stratejiler listesindeki en iyi stratejiyi belirlememize yardımcı olacaktır.

 
dasmen:
Grafiğe bakılırsa, bu optimizasyonun bir kısmı otomatikleştirilmiş olsa bile, yine basitçe optimize edilmiş bir modeliniz var, ancak uyarlanmış bir model, stratejinin çalışması sırasında giriş ve çıkışı piyasaya uyarlayan bir hesaplama bloğunun bulunduğu ve başlatmadaki parametrelerin hiç önemli olmadığı bir modeldir. Bu tür koşullarda, denge çizgisine göre sadece öz sermaye çizgisi eşitlenecektir, çünkü kârdaki bir pozisyonu kapatma dağılımının değiştiği durumlarda - böyle bir sistem yine de yeni değerleri yeniden hesaplayacak ve kâr için yeni bir bölge belirleyecek ve bu nedenle kâr için parametreleri yeniden oluşturacak ve öz sermaye emirleri grubu korunacaktır:

makale, uyarlanabilir strateji kavramını ve uygulamasını matematikte olduğu gibi, aslında yönetim seçimlerini uygulamak için bir sistem olarak kullanmaktadır.