"Uyarlanabilir Alım Satım Sistemleri ve Bunların MetaTrader 5 Müşteri Terminalinde Kullanımları" makalesi için tartışma - sayfa 3
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Sevgili Forexistence,
>>Sevgili
Sorunuzu yanıtladınız :)
>> Evet, belki kısmen sorumu kendim cevapladım ve sadece bir onay veya farklı görüşler istiyorum.
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:
İ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'de yer alan stratejiler listesindeki en iyi stratejiyi belirlememize yardımcı olacaktır.
>> Tamam, düşündüğüm gibi anladım.
Ama şimdi asıl soru başka. Optimizasyonlarla çalışmak amacıyla EA'yı "inputize" etmek için çalışıyorum.
Yani örnek olarak bunun gibi kod parçalarını kastediyorum:
where (bildirimler) :
ve değişkenlerin nerede olduğu:
RSItempoframe, RSIappprice, RSIvarA_root, RSIvarB_root
ile işbirliği içinde çalışmak
Benim sorum şu:
Strateji sınıf dosyası (dosya dahil, yani CStrategyRSI.mqh) düzeyinde veya diğer sınıf / dahil düzeyinde (CAdaptiveStrategy.mqh) uygun hiyerarşi / bağlantılar / ağaçlar ile giriş değişkenine sahip olmak için kodu değiştirmek uygun mudur?
Başka bir deyişle, optimizasyon testleri için bazı girdi parametrelerinin eklenmesiyle EA fikrinin çekirdek sistemini etkilemek için,
şöyle bir şey yapmalıyım: (CAdaptiveStrategy.mqh'deki giriş değişkenleri)
/* ... */ class CStrategyRSI : public CSampleStrategy { protected: int m_handle; // handle of the Moving Average (iMA) indicator int m_period; // period of the Moving Average indicator double m_values[]; // array for storing the value of indicator int RSIvarA, RSIvarB; ENUM_TIMEFRAMES m_timeframe; ENUM_APPLIED_PRICE m_appprice; public: // initialization of strategy int Initialization(int period,bool virtual_trade_flag,ENUM_TIMEFRAMES RSItempoframe, ENUM_APPLIED_PRICE RSIappprice,int RSIvarA_root, int RSIvarB_root); /* ... */ //set period for the RSI (was //set period for the moving average) m_period=period; m_timeframe=RSItempoframe; m_appprice=RSIappprice; RSIvarA=RSIvarA_root; RSIvarB=RSIvarB_root; /* ... */ //göstergenin tutamacını oluştur m_handle=iRSI(_Symbol,m_timeframe,m_period,m_appprice); /* ... */veya bunun gibi başka bir şey: (CSampleRSI.mqh'deki giriş değişkenleri)
Başka bir deyişle, girdi değişkenleri strateji include dosyasında, sınıf bildiriminden önce kullanılmalıdır (örnek2, burada sadece bu yukarıda) veya girdi değişkenleri
CAdaptive stratejisindeki "for" cicle'dan türetilmeli ve tüm sınıfların başlatma ve giriş parametrelerini dikkate almalı mı? (yani bu ilk örnek için (yukarıdaki kodun hemen üstünde) :)
public:
// stratejinin başlatılması
int Initialization(int period,bool virtual_trade_flag,ENUM_TIMEFRAMES RSItempoframe,
ENUM_APPLIED_PRICE RSIappprice,int RSIvarA_root, int RSIvarB_root);
CStrategyRSI.mqh dosyasında girdi değişkenleri kullanılıyorsa, sistemin çekirdeğini ne kadar farklı etkileyecektir veya CAdaptiveStrategy.mqh içinde?
Sanırım, eğer sadece bir test meselesiyse, CStrategyRSI.mqh'deki giriş değişkenlerini kullanabilirim, bunun yerine hem test etmek hem de
EA fikrinin çekirdek sistemini etkileyen (uyarlanabilir sistem ve ticaret simülatörü, sanal tüccar dahil) beyan etmeliyim
girdi değişkenleri strateji dahilinde değil, tüm uygun bağlantılar ve çağrılarla birlikte Uyarlanabilir dahil dosyasında
giriş/çıkışının ve sınıf/fonksiyon bildiriminin nasıl yapıldığını biliyor musunuz?
Değil mi?
Umarım ne demek istediğimi anlamışsınızdır.
Tnkx
....Ama şimdi soru başka... Optimizasyonlarla çalışmak amacıyla EA'yı "girdileştirmek" için çalışıyorum....
Strateji Test Cihazındaki optimizasyon seçeneğini kullanarak stratejinin en iyi parametrelerini bulmak istiyorsanız, EA'yı belirli bir strateji ile yeniden yazmak ve onunla oynamak daha iyidir.
Uyarlanabilir EA kavramı ve yapısı, parametrelerini doğrudan Strateji Test Cihazında optimize etmeye izin vermez, çünkü optimize edilecek belirli bir strateji ve parametre yoktur.
Uyarlanabilir EA'yı ticarette kullandığımızda veya Strateji Test Cihazında test ettiğimizde, farklı stratejilerden gelen bir dizi sinyal olarak bir ticaret sistemimiz olur. Başka bir deyişle, Test Cihazı oluşturduğumuz sanal sanal alanlara erişemez ve onlar hakkında hiçbir şey bilmez.
Kullanılacak ticaret stratejilerinin parametrelerini yapılandırmak için giriş parametrelerini kullanmak istiyorsanız, dosyaları kullanmak daha iyidir, ticaret stratejilerinin parametrelerini ve listesini yapılandırmanıza izin verecektir.
Strateji Test Cihazındaki optimizasyon seçeneğini kullanarak stratejinin en iyi parametrelerini bulmak istiyorsanız, EA'yı belirli bir strateji ile yeniden yazmak ve onunla oynamak daha iyidir.
>> Tamam, anladım. Bu kolay bir iş olmayacak..
Uyarlanabilir EA kavramı ve yapısı, Strateji Test Cihazındaki parametrelerini doğrudan optimize etmeye izin vermez, çünkü optimize edilecek belirli bir strateji ve parametre yoktur.
>> Evet. EA, stratejiler için hala optimize edilmişparametrelerle çalışmak üzere idealleştirilmiştir. Anladığım kadarıyla, piyasanın nasıl/ne şekilde tepki vereceği temelinde farklı stratejiler kullanıyor (ya da başka bir bakış açısına göre tam tersi...)
Uyarlanabilir EA'yı ticarette kullandığımızda veya Strateji Test Cihazında test ettiğimizde, farklı stratejilerden gelen bir dizi sinyal olarak bir ticaret sistemimiz var. Başka bir deyişle, Test Cihazı oluşturduğumuz sanal sanal alanlara erişemez ve onlar hakkında hiçbir şey bilmez.
>> Bu kavramı anladım ama tam olarak değil.
Test cihazını sanal sanal alanlarla etkileşime sokmanın hiçbir anlamı olmadığını anlıyorum, ticaret mantığı yok.
Tek amacım, bir eklenti ile kullanmak için EA'nın değiştirilmesini sağlamaktı: bu EA'yı başka bir EA'yı yeniden yazmadan veya tüm stratejileri yeniden yazmadan veya her stratejiyi ayrı ayrı test etmeden parametreleri optimize etmek için de kullanma amacı. Benim fikrim sadece aynı EA içinde parametreleri optimize etme olasılığına "rahatlık" içindi, ancak bu optimizasyonun sanal ticaret / uyarlanabilir sistemle çalışması amaçlanmadı. Bu sadece, aynı EA giriş penceresini kullanarak stratejilerin parametrelerini optimize etme olanağına sahip olma ve her strateji için başka bir EA yazmama, optimize parametreleri alma ve bunları Uyarlanabilir Strateji Sistemine sabit değerler olarak koyma meselesidir. Umarım demek istediğimi anladınız.
Kullanılacak ticaret stratejilerinin parametrelerini yapılandırmak için giriş parametrelerini kullanmak istiyorsanız, dosyaları kullanmak daha iyidir, ticaret stratejilerinin parametrelerini ve listesini yapılandırmanıza izin verecektir.
>> Hangi dosyalardan bahsediyorsunuz? ( Kullanılacak ticaret stratejilerinin parametrelerini yapılandırmak için giriş parametrelerini kullanmak istiyorsanız, dosyaları kullanmak daha iyidir )
CStrategyXXX.mqh kullanmaktan mı yoksa her strateji için ayrı bir EA yazmak, optimize etmek ve parametreleri CStrategyXXX.mqh'de sabit değerler olarak kopyalamaktan mı bahsediyorsunuz?
Are you talking about to use CStrategyXXX.mqh or the fact to write another individual EA for each strategy, optimize it, and copy the parameters as fixed values in CStrategyXXX.mqh?
Demek istediğim, strateji konteyneri uyarlanabilir EA'nın bazı ayarlarına göre doldurulabilir.
Örneğin, Adaptive_Expert.Expert_OnInit () içinde uyarlanabilir EA ayarlarını içeren bir dosya yükleyebilir:
MA;15
MA;25
Stoch;3;12;20
Stoch;3;15;30
Strateji1; Param1; Param2;
Strateji2; Param1; Param2;
Her satırı ayrıştırarak, dahil edilmesi gereken stratejiyi tanır ve belirtilen ilgili parametrelerle ekler. Uyarlanabilir EA'yı derlemeler olmadan yapılandırmanın yollarından biridir. Basitlik için bunu makalede dikkate almadım.
Test cihazını sanal sanal alanlarla etkileşime sokmanın hiçbir anlamı olmadığını anlıyorum, ticaret mantığı yok.
Tek amacım, bir eklenti ile kullanmak için EA'nın değiştirilmesini sağlamaktı: bu EA'yı başka bir EA'yı yeniden yazmadan veya tüm stratejileri yeniden yazmadan veya her stratejiyi ayrı ayrı test etmeden parametreleri optimize etmek için de kullanma amacı. Benim fikrim sadece aynı EA içinde parametreleri optimize etme olasılığına "rahatlık" içindi, ancak bu optimizasyonun sanal ticaret / uyarlanabilir sistemle çalışması amaçlanmadı. Bu sadece, aynı EA giriş penceresini kullanarak stratejilerin parametrelerini optimize etme olanağına sahip olma ve her strateji için başka bir EA yazmama, optimize parametreleri alma ve bunları Uyarlanabilir Strateji Sistemine sabit değerler olarak koyma meselesidir. Umarım demek istediğimi anladınız.
Kum havuzlarına bakmanın bir yolu var. Strateji Test Cihazı kullanılarak dolaylı olarak yapılabilir.
Makalenin Şekil 2'sinde sunulan sonuçları yeniden üretmek istediğimizi varsayalım.
Uyarlanabilir EA adaptive-systems-mql5-sources-debug-en.zip 'in hata ayıklama sürümüne ihtiyacımız var (kum havuzlarını rapor eder) Bir sonraki, Strateji test cihazında Adaptive_Expert_Sample'ı derleyin ve açın, EURUSD H1 01.01.2010 - 20.08.2010'u seçin ve teste başlayın. Sandbox'lar ve uyarlanabilir strateji sonuçları tester\files\equity_res.txt dosyasına kaydedilecektir Bu şekilde tüm rakamları yeniden üretmek çok kolaydır.
Sanal ticaret özkaynaklarının/dengelerinin analizi optimizasyonu basitleştirmenizi sağlayacaktır.
Herkese merhaba,
Bu harika makale için teşekkürler, şimdi sadece uyarlanabilir bir EA üzerinde çalışıyorum.
Ancak, bu tür bir EA'ya takip eden bir durdurma işlevini nereye dahil edeceğimden emin değilim.
CAdaptiveStrategy.mqh kısmına böyle bir fonksiyonun eklenebileceğini düşünüyorum.
Herhangi biriniz bana biraz yardım sağlayabilir mi? Belki siz zaten böyle bir işlev geliştirmişsinizdir?
Şimdiden çok teşekkür ederim!
Saygılarımla,
Patrick
Makaledeki sonuçları yeniden üretemiyorum.
Kaynak dosyaları indirdim, derledim ve aynı zaman diliminde çalıştırdım (EURUSD H1, 04/01/2010 - 20/08/2010) ve farklı bir sonuç aldım.
Hata ayıklama dosyalarını kullandım ve sanal işlem çıktılarını kontrol ettim ... sanal öz sermaye grafikleri aynı, ancak gerçek işlemler eşleşmiyor.
Gerçek işlemlerin bir günlük dosyası olmadan, işlemlerimin neden makaleninkilerle eşleşmediğini bulmak zor.
Neden eşleşmediğime dair bir fikriniz var mı?