>> 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:
for(int i=0; i<RSIcicle; i++)
{
CStrategyRSI *t_StrategyRSI;
t_StrategyRSI=new CStrategyRSI;
if(t_StrategyRSI==NULL)
{
delete m_all_strategies;
Print("Error of creation of object of the CStrategyRSI type");
return(-1);
}
////////////////////////// PLEASE LOOK AT THIS FOLLOWING PIECE OF CODE ///////////////////////
//her strateji için süreyi ayarlaint period=Trsi+Drsi*i;
ENUM_TIMEFRAMES RSItempoframe=RSItempoframe_in; // SET TIMEFRAME (enum), INPUT, FOR STRATEGY
ENUM_APPLIED_PRICE RSIappprice=RSIappprice_in; // SET APPPLIED PRICE (enum), INPUT, FOR STRATEGY
int RSIvarA_root=RSIvarA_in;
int RSIvarB_root=RSIvarB_in;
// stratejinin başlatılması
t_StrategyRSI.Initialization(period,true,RSItempoframe,RSIappprice,RSIvarA_root,RSIvarB_root);
/////////////////////////////////////////////////////////////////////////////////////////////
// stratejinin ayrıntılarını ayarlayın
t_StrategyRSI.SetStrategyInfo(_Symbol,"[RSI_"+IntegerToString(period)+"]",period,"Relative Strenght Index "+IntegerToString(period));
if(t_StrategyRSISet_Stops_ ==true) {
t_StrategyRSI.Set_Stops(tSMSSone,tSMSStwo); //3500,1000);
}
//+------------------------------------------------------------------+//| CStrategyMA.mqh |//| Copyright 2010, MetaQuotes Software Corp. |//| http://www.mql5.com |//+------------------------------------------------------------------+#property copyright "Copyright 2010, MetaQuotes Software Corp."#property link "http://www.mql5.com"#include <CSampleStrategy.mqh>inputint mval=0, mval1=1, mval2=2, mval3=3, mval4=4, mvalVar=0, mvalFix=0,
mvalVar2=0, mvalFix2=0;
//+------------------------------------------------------------------+//| Class CStrategyMA for implementation of virtual trading |//| by the moving average strategy |//+------------------------------------------------------------------+class CStrategyRSI : public CSampleStrategy
{
protected:
int m_handle; // Hareketli Ortalama (iMA) göstergesinin tutamacıint m_period; // Hareketli Ortalama göstergesinin periyodudouble m_values[]; // göstergenin değerini saklamak için diziint RSIvarA, RSIvarB;
ENUM_TIMEFRAMES m_timeframe;
ENUM_APPLIED_PRICE m_appprice;
public:
// Stratejinin başlatılması // Eklenen girdilere dikkat edinint Initialization(int period,bool virtual_trade_flag,ENUM_TIMEFRAMES RSItempoframe,
ENUM_APPLIED_PRICE RSIappprice,int RSIvarA_root, int RSIvarB_root);
// stratejinin başlangıçtan kaldırılmasıint Deinitialization();
// ticaret koşullarının kontrolü ve sanal pozisyonların açılmasıbool CheckTradeConditions();
};
//+------------------------------------------------------------------+//| Method of initialization of the strategy |//+------------------------------------------------------------------+int CStrategyRSI::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);
/*
...
*///+------------------------------------------------------------------+//| checking the trade conditions and opening the virtual positions |//+------------------------------------------------------------------+bool CStrategyRSI::CheckTradeConditions()
{
RecalcPositionProperties(m_position);
// double p_close;/*
...
*/if(CopyRates(_Symbol,m_timeframe,0,3,m_rates)<0)
{
Alert("Error of copying history data - error:",GetLastError(),"!!");
return(false);
}
// Önceki çubuğun mevcut kapanış fiyatını kopyalayın (bu çubuk 1'dir)// p_close=m_rates[1].close; // close price of the previous bar if(CopyBuffer(m_handle,0,0,3,m_values)<0)
{
Alert("Error of copying buffers of the Moving Average indicator - error number:",GetLastError());
return(false);
}
/*
...
*/// Alış koşulu 1: RSI yükselirbool buy_condition_1=(m_values[mval]>m_values[mval1]) && (m_values[mval1]>m_values[mval2]); // Dizinin [] kısmındaki tamsayı değişkenini BİLDİR// Alış koşulu 2: önceki kapanış fiyatı MA'dan yüksek// bool buy_condition_2=(p_close>m_values[1]);bool buy_condition_2=(m_values[mval+mvalVar+mvalFix]>RSIvarA);
/*
... vb.
*/
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)
/*
...
*/inputint RSIvarA_root, RSIvarB_root;
inputENUM_TIMEFRAMES RSItempoframe=PERIOD_M5;
inputENUM_APPLIED_PRICE RSIappprice=PRICE_CLOSE;
class CStrategyRSI : public CSampleStrategy
{
protected:
int m_handle; // Hareketli Ortalama (iMA) göstergesinin tutamacıint m_period; // Hareketli Ortalama göstergesinin periyodudouble m_values[]; // göstergenin değerini saklamak için dizi
ENUM_TIMEFRAMES m_timeframe;
ENUM_APPLIED_PRICE m_appprice;
int RSIvarA, RSIvarB;
public:
// stratejinin başlatılmasıint Initialization(int period,bool virtual_trade_flag); // ORIJINAL KODA DIKKAT EDIN/*
...
*///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);
/*
...
*/
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?
....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:
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.
Harika makale için teşekkürler, uyarlanabilir bir sistemi nasıl uygulayacağımı düşünüyordum, bu tasarladığım bir yaklaşımdı ancak henüz üzerinde çalışacak zamanım olmadı. Canlı verilerle birlikte yerleşik backtesting özelliklerinden herhangi birini kullanmayı düşündünüz mü?
Çok güzel bir makale, Dikkat dağınıklığı, önerilen işlevsel olasılıklardan uzaklaşmak ve bunları entegre etmek yerine sonuçları yeniden üretmeye çalışan insanlardan kaynaklanıyor. Artık tamamen işlevsel ve karlı bir otomatik ve yarı otomatik ticaret EA'sı oluşturma olasılığı gerçekleşmiştir. Göstergelerin geniş ölçekte test edilmesi, sonuçların derlenmesi ve söz konusu verilerin konformasyonel istatistiklerinin yanı sıra göstergelerin istatistiksel verilerinin çıkarılması ve EA'nın uygulanacak en iyi ticaret stratejisini seçmesine izin verilmesi. Temel ve Teknik analiz şimdiye kadar hiçbir EA'da MQL5 Dilinin Yardımcısıyla birleştirilmemişti. Geleceğe baktığımda, tüm Piyasalardaki EA'ların piyasa dalgalanmalarını tahmin etmek için bir araya geldiğini görüyorum.
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ı?