EA - sayfa 9

 

Umarım birileri bu gizemin cevabını burada bulabilir...

Bu gönderi, bu kodu bir include .mqh dosyasına koyarsanız, GGL3'ü çalıştırmak için gereken her şeye sahiptir. .htm raporlarını sıkıştırdım çünkü tüm değişiklik siparişleri nedeniyle ikisi de 4mb'den fazla...

görünen o ki, takip eden durdurma işlevini yeniden tasarlamam performansı 1,2 milyondan 1,3 milyona yükseltti...VEYA 500 yerine 1000 başlangıç depozitosuyla başlamanın bir sonucu. Hangisini bilmiyorum çünkü GGL3 olmayacak 500 ilk depozito ile başlayın ve herhangi bir işlemi açın

Söylemesi üzücü, bu konuda ilerleme kaydedilmesine rağmen, bunun sürekli olarak büyük para kazanmasını engelleyen henüz açıklanmamış bir şey var. Daha sık başarısız olur ve iflas eder. Eğer bunu yapmak son durak değilse, o zaman başka bir şey olmalı... Ne olduğunu bilmiyorum...

Görünen o ki, aynı zaman aralığında aynı cihazın aynı ayarlarından elde edilen sonuçlarda bu kadar geniş bir varyansa neden olan şeyin ne olduğunu bulabilen ve düzeltebilen kişi için çok fazla ödül ve büyük bir para var. Şu anda beni şaşırttı.

Bir hafta tatile çıkıyorum...Umarım döndüğümde birileri bir fikir veya çözüm yayınlamıştır. Buradaki gizem açığa çıkana kadar bununla nasıl daha fazla gelişmeye geçebileceğimi anlamıyorum.

//+------------------------------------------------------------------+

//| GGLrewrite.mqh |

//| In no event will author be liable for any damages whatsoever. |

//| Use at your own risk. |

//| |

//| Please do not remove this header. |

//+------------------------------------------------------------------+

#property copyright "Aaragorn and Eaglehawk & Maji & Robert C."

#property link "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"

#property link "http://forex.factoid.ca/forums/showthread.php?t=104"

#property link "https://www.forex-tsd.com/expert-advisors-metatrader-4/2840-gogetter-ea.html"

// many thanks goes to all those on the tsdforex forum and factoid forum who have encouraged us this far

//+------------------------------------------------------------------+

//| defines |

//+------------------------------------------------------------------+

//+-----------Store HIGH, LOW matching data------+

#define SLSIZE 15

static int SLIndex = 0;

static double sLocatorLows[ SLSIZE ] = { 0 };

static double sLocatorHighs[ SLSIZE ] = { 0 };

//+-----------Stored equity data-----------------+

#define StoredEquitySIZE 5

static int EquityIndex = 0;

static double EQUITY[ StoredEquitySIZE ] = { 0 };

static int EquityValuesStored = 0;

//+-----------close based on time----------------+

extern string Time_Settings="Time In Trade Settings";

extern int MonitorInMinutes = 60; // minutes after open to check state of trade

extern int ThresholdMove = 1; // if after that time we don't have +'x' pips we will exit

extern int MinsMultiplier = 75; // multiplies the MonitorInMinutes to make minutes (if 'x'=60) into hours

//+------------------------------------------------------------------+

//| Commonly used GoGetter Functions | |

//+------------------------------------------------------------------+

//+-------------StoreHighsAndLows Function----support and resistance arrays------thanks to Robert C for assistance on this-------+

//+-------creates array of each trade series support and resistance for signal profile matching-------------------+

void StoreHighsAndLows(double HIGH, double LOW)

{

if ( SLIndex >= SLSIZE )

{

SLIndex = 0;

}

sLocatorLows[ SLIndex ] = LOW;

sLocatorHighs[ SLIndex ] = HIGH;

SLIndex++;

}

//+-----------------------end of StoreHighsAndLows------------------------------------+

//+--------------- Get past equity function---------Thanks Robert C.-----------+

// This returns past equity from the global equity array. The howFarBack parameter is a positive integer that indicates how far back into the array to go

// 1 would be the previous equity, 2 would be the equity before that, etc.

// the HowFarBack should not be greater than the arraysize

double GetPastEquity(int HowFarBack)

{

if ( HowFarBack > EquityValuesStored )

{

Print("Error getting past equity, Looking back farther than what we have stored");

return (-1);

}

else

{

int PastIndex = EquityIndex - HowFarBack;

if ( PastIndex < 0 )

{

PastIndex += StoredEquitySIZE;

}

return (EQUITY[PastIndex]);

}

}

//+--end of get past equity function-----------+

//+---Stores account Equity value in an array for future comparisions up to as many previous trades as the declared size of the array----thanks Robert C.----+

void StoreAccountEquity(double equity)

{

if ( EquityIndex >= StoredEquitySIZE )

{

EquityIndex = 0;

}

EQUITY[EquityIndex] = equity;

EquityIndex++;

if ( EquityValuesStored < StoredEquitySIZE )

{

EquityValuesStored++;

}

}

//+-------end of Store Equity function-------------------+

//+---------count open trades function-------ty Maji--------------------------+

int CountTrades()

{

int count=0;

int trade;

for(trade=OrdersTotal()-1;trade>=0;trade--)

{

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()!=Symbol()&&OrderMagicNumber()!=MagicNumber)

continue;

if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)

if((OrderType()==OP_SELL) || (OrderType()==OP_BUY))

count++;

}//for

return(count);

}

//+-----------end of count trades-------------------------------------+

//+---------------------Close Based on Time function------------Thanks to 'Maji' for this-------------------+

void CloseOrder()

{

double Profit=ThresholdMove*Point;

int total = CountTrades();

for (int cnt = 0 ; cnt < total ; cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if ((CurTime()-OrderOpenTime())>MonitorInMinutes*60*MinsMultiplier)

{

LowTrailingStopTrigger = False;

if(OrderSymbol()==Symbol() && OrderType()==OP_BUY && Bid-Profit<OrderOpenPrice() )

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);

}

if(OrderSymbol()==Symbol() && OrderType()==OP_SELL && Bid+Profit>OrderOpenPrice())

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);

}

}

}

}

//+---------------------------end of close on time code---------------+

//+------------------------increase lots function-------------------------+

//+----------------increases lots based on account equity-----------------+

//double IncreaseLots()

//{

// Lots = NormalizeDouble(AccountFreeMargin()/(LotIncreaseFactor*1000/0.1),2);

// if(Lots > 99) Lots = 99;

// Print("account free margin = ",AccountFreeMargin()," Lots = ",Lots);

// return(Lots)

//}
Dosyalar:
ggl3.zip  353 kb
ggl3fail.zip  335 kb
ggl3.gif  6 kb
ggl3fail.gif  8 kb
ggl3.mq4  21 kb
 

Yönetilmesi daha kolaysa, sıkıştırılmış içerme dosyası burada.

Dosyalar:
 

şimdi sorduğum sorular...

veri akışı kararlı mı? Tarih merkezi dosyalarını kullandığı için olduğunu varsayıyorum... belki de bu varsayıma karşı çıkılmalıdır?

platformun veri akışını işleme şekli istikrarlı mı ve aynı verileri her seferinde tam olarak aynı şekilde işlemeye güvenilebilir mi? Değilse bu platformu kim yaptı? onlarla nasıl iletişim kurabilirim? güvenilir hale getirmek için düzeltilmesi gereken nedir?

Bu iki bilinmeyenden herhangi biri hala potansiyel olarak değişken ve aslında güvenilmez ise, EA kodunu stabilize etmem pek olası görünmüyor. Güvenilirlikleri nasıl doğrulanabilir?

Bu sayfada bu soruya dikkat çekmek için bir istek gönderdim ...

http://www.metaquotes.net/index.php?bugtrack/

umarız birileri bir an önce bilgi sahibi olur ve cevaplar.

 
Aaragorn:
şimdi sorduğum sorular...

veri akışı kararlı mı? Tarih merkezi dosyalarını kullandığı için olduğunu varsayıyorum... belki de bu varsayıma karşı çıkılmalıdır?

platformun veri akışını işleme şekli istikrarlı mı ve aynı verileri her seferinde tam olarak aynı şekilde işlemeye güvenilebilir mi? Değilse bu platformu kim yaptı? onlarla nasıl iletişim kurabilirim? güvenilir hale getirmek için düzeltilmesi gereken nedir?

Bu iki bilinmeyenden herhangi biri hala potansiyel olarak değişken ve aslında güvenilmez ise, EA kodunu stabilize etmem pek olası görünmüyor. Güvenilirlikleri nasıl doğrulanabilir?

Bu sayfada bu soruya dikkat çekmek için bir istek gönderdim ...

http://www.metaquotes.net/index.php?bugtrack/

umarız birileri bir an önce bilgi sahibi olur ve cevaplar.

.... bunu çoklu platformlarda test etmeyi denediniz mi? Şu anda hangi sonuçları alacağımı görmek için aynı EA'yı iki farklı BD platformunda test ediyorum. Bir canlı yayın almadan önce sonuçların makul miktarda sabit veriye sahip olacağından emin olmak istedim. belki bu aptalca bir fikir, ama Ea'nın istikrarlı bir performans sergileyeceği konusunda oldukça emin olana kadar gerçek sermayeyi riske atmak istemiyorum.

 

GPBUSD için 30tf kullanarak yalnızca metatrader 4'te test ettim. Bunu yapmak iyi bir fikir olmadığı için değil, sadece insan olduğum için ve kadın olmadığım için çoklu görevleri de iyi yapamıyorum. Yani henüz bunu yapmaya başlamadım. Henüz başka bir test yapmadım. Geliştirme konularına odaklanmaya devam ettim. Amacım, diğer çiftlere veya diğer platformlara ya da her neyse genişlemeye çalışmadan önce bu durumda sabit hale getirmekti.

Elbette sağduyunuzu kullanın. Önümüzdeki hafta ben yokken bunun demo hesabımda çalışmasına izin vereceğim. Yarın ayrılacağımız ve bir haftalığına burada olmayacağımız için büyük ihtimalle önümüzdeki salı gününe kadar konuya dönmeyeceğim.

Henüz gerçek parayı riske atmaya uygun olup olmadığını düşünmüyorum, sadece kararsızlıkların çözüldüğünü ve ardından demoda testi iletmek istiyorum. O zaman, verilerin oradan onunla gitmemi söylediği yeri göreceğim. Özellikle geliştiricileri, ben yokken incelemeye ve veri işleme veya veri dosyası düzensizliklerinin doğrulanıp doğrulanmadığına bakmaya gerçekten davet etmek istiyorum.

Varyansı hesaba katacak kodda açıkça yanlış bir şey görmüyorum. Bunda da yanılmadan önce yanılmışım. Birisi bana nasıl veya nerede düzelteceğimi gösterebilirse yanılıyor olmam sorun değil.

Sana yalan söylemeyeceğim, bundan bir süreliğine uzaklaşmaktan mutlu olacağım. Dikkatimi çok fazla tükettiği için bu konuda çalışırken hayatta biraz denge aramayı hak ediyorum.

Bunu bir süreliğine size bırakacağım ve bununla neler yapabileceğinizi göreceğim. Sadece bu konuda herhangi bir araştırma yaparsanız, sonuçlarınızla birlikte bu konuya geri bildirimde bulunmanızı istiyorum, böylece herkes bundan faydalanabilir.

 

...........

kısa ve uzun postları tek bir mp4 dosyasına koyabilir misin?

 

Neden aynı ayarlardan bu kadar farklı rapor?

Ekli EA'yı ekli include.mqh dosyasıyla kullanma. Bu ayarları kullanarak bir strateji testi yapıyorum....

Uzman Özellikleri Düğmesi....

Test sekmesi...

1000 USD ilk depozito..

Pozisyonlar: Uzun ve Kısa

Optimize edilmiş parametre: Bakiye

Genetik algoritma kutusu işaretli değil

Girişler Sekmesi...

Tüm kullanıcı girdileri, bu sekmede herhangi bir manuel değişiklik yapılmadan, tam olarak EA'da kaydedildikleri gibi kullanılır.

Optimizasyon Sekmesi...

Bu sekmede hiçbir şey kontrol edilmiyor

Ayarlar.....

Uzman Danışman: GGL3, Aaragorn ve Eaglehawk & Maji & Robert C.

Sembol: GBPUSD, Büyük Britanya Poundu vs ABD Doları

Dönem: M30

Model: Her tik (her tik'in fraktal enterpolasyonu ile mevcut tüm en az zaman çerçevelerine dayalı olarak)

Ayrıca ekli 1 dakikalık veri dosyasını kullanıyorum.

Kullanım tarihi kutusu işaretli; Başlangıç: 2005.09.09 Son: Bugün (2006.08.22)

Yeniden hesapla kutusunu işaretliyorum

Optimizasyon kutusunu işaretlemiyorum

Test bittiğinde bu raporu alıyorum...

************************************************************

17735 testindeki çubuklar

702859 model keneler

Modelleme kalitesi %89.82

İlk para yatırma 1000,00

Toplam net kar 1375788.66

Brüt kar 3678568,71

Brüt zarar -2302780.05

Kar faktörü 1.60

Beklenen getiri 472,62

Mutlak düşüş 240,00

Maksimum düşüş 231662.10 (%15.07)

Göreceli düşüş %55.32 (18074.74)

Toplam işlem 2911

Kısa pozisyonlar (kazanılan %) 0 (%0,00)

Uzun pozisyonlar (kazanılan %) 2911 (%42.05)

Karlı işlemler (toplamın yüzdesi) 1224 (%42,05)

Zarar işlemleri (toplamın yüzdesi) 1687 (%57,95)

En büyük

kâr ticareti 89100.00

zarar ticareti -15840.00

Ortalama

kâr ticareti 3005.37

zarar ticareti -1365.01

Maksimum

art arda kazanç (para olarak kar) 9 (106921.10)

ardışık kayıplar (para kaybı) 18 (-163.10)

maksimum

ardışık kar (kazanç sayısı) 225720.50 (7)

ardışık kayıp (kayıp sayısı) -15845,70 (5)

Ortalama

art arda 2 galibiyet

ardışık kayıplar 2

************************************************************ **

Şimdi bunun çok iyi bir EA olduğunu düşünüyorum, bu yüzden aynı şeyi yaptığından emin olmak için tekrar test etmek istiyorum....

Ayarlarda herhangi bir değişiklik yapmıyorum....

Ayarlar sekmesinde Yeniden Hesapla kutusunu seçiyorum ve başlat'a tıklıyorum...Bu raporu şimdi alıyorum...

************************************************************ ****

18015 testindeki çubuklar

Modellenmiş keneler 739231

Modelleme kalitesi %89.83

İlk para yatırma 1000,00

Toplam net kar -731,75

Brüt kar 31897,83

Brüt zarar -32629,58

Kar faktörü 0.98

Beklenen getiri -0.24

Mutlak düşüş 780.40

Maksimum düşüş 4912.15 (%94.91)

Göreceli düşüş %94,91 (4912,15)

Toplam işlem 2990

Kısa pozisyonlar (kazanılan %) 0 (%0,00)

Uzun pozisyonlar (kazanılan %) 2990 (%34.88)

Karlı işlemler (toplamın yüzdesi) 1043 (%34.88)

Zarar ticareti (toplamın yüzdesi) 1947 (%65.12)

En büyük

kâr ticareti 1170.00

zarar ticareti -360.00

Ortalama

kâr ticareti 30.58

zarar ticareti -16.76

Maksimum

ardışık kazanç (para olarak kar) 8 (124.50)

ardışık kayıplar (para kaybı) 20 (-45.50)

maksimum

ardışık kar (kazanç sayısı) 2606.30 (7)

ardışık kayıp (kayıp sayısı) -360,00 (1)

Ortalama

art arda 2 galibiyet

ardışık kayıplar 3

******************************************************* ****

iki test neden bu kadar farklı?

EA'yı ikinci kez test ederken testler neyi farklı yapıyor?

Her yeniden hesapladığımda test cihazı testini nasıl aynı hale getirebilirim?

Bu EA'yı her test ettiğimde aynı raporu alma konusundaki rehberliğiniz için teşekkür ederiz.

Aragorn

***********************include .mqh file below *******************************

//+------------------------------------------------------------------+

//| GoGetterfunctions.mqh |

//| In no event will author be liable for any damages whatsoever. |

//| Use at your own risk. |

//| |

//| Please do not remove this header. |

//+------------------------------------------------------------------+

#property copyright "Aaragorn and Eaglehawk & Maji & Robert C."

#property link "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"

#property link "http://forex.factoid.ca/forums/showthread.php?t=104"

#property link "https://www.forex-tsd.com/expert-advisors-metatrader-4/2840-gogetter-ea.html"

// many thanks goes to all those on the tsdforex forum and factoid forum who have encouraged us this far

//+------------------------------------------------------------------+

//| defines |

//+------------------------------------------------------------------+

//+-----------Store HIGH, LOW matching data------+

#define SLSIZE 15

static int SLIndex = 0;

static double sLocatorLows[ SLSIZE ] = { 0 };

static double sLocatorHighs[ SLSIZE ] = { 0 };

//+-----------Stored equity data-----------------+

#define StoredEquitySIZE 5

static int EquityIndex = 0;

static double EQUITY[ StoredEquitySIZE ] = { 0 };

static int EquityValuesStored = 0;

//+-----------close based on time----------------+

extern string Time_Settings="Time In Trade Settings";

extern int MonitorInMinutes = 60; // minutes after open to check state of trade

extern int ThresholdMove = 1; // if after that time we don't have +'x' pips we will exit

extern int MinsMultiplier = 75; // multiplies the MonitorInMinutes to make minutes (if 'x'=60) into hours

//+------------------------------------------------------------------+

//| Commonly used GoGetter Functions | |

//+------------------------------------------------------------------+

//+-------------StoreHighsAndLows Function----support and resistance arrays------thanks to Robert C for assistance on this-------+

//+-------creates array of each trade series support and resistance for signal profile matching-------------------+

void StoreHighsAndLows(double HIGH, double LOW)

{

if ( SLIndex >= SLSIZE )

{

SLIndex = 0;

}

sLocatorLows[ SLIndex ] = LOW;

sLocatorHighs[ SLIndex ] = HIGH;

SLIndex++;

}

//+-----------------------end of StoreHighsAndLows------------------------------------+

//+--------------- Get past equity function---------Thanks Robert C.-----------+

// This returns past equity from the global equity array. The howFarBack parameter is a positive integer that indicates how far back into the array to go

// 1 would be the previous equity, 2 would be the equity before that, etc.

// the HowFarBack should not be greater than the arraysize

double GetPastEquity(int HowFarBack)

{

if ( HowFarBack > EquityValuesStored )

{

Print("Error getting past equity, Looking back farther than what we have stored");

return (-1);

}

else

{

int PastIndex = EquityIndex - HowFarBack;

if ( PastIndex < 0 )

{

PastIndex += StoredEquitySIZE;

}

return (EQUITY[PastIndex]);

}

}

//+--end of get past equity function-----------+

//+---Stores account Equity value in an array for future comparisions up to as many previous trades as the declared size of the array----thanks Robert C.----+

void StoreAccountEquity(double equity)

{

if ( EquityIndex >= StoredEquitySIZE )

{

EquityIndex = 0;

}

EQUITY[EquityIndex] = equity;

EquityIndex++;

if ( EquityValuesStored < StoredEquitySIZE )

{

EquityValuesStored++;

}

}

//+-------end of Store Equity function-------------------+

//+---------count open trades function-------ty Maji--------------------------+

int CountTrades()

{

int count=0;

int trade;

for(trade=OrdersTotal()-1;trade>=0;trade--)

{

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()!=Symbol()&&OrderMagicNumber()!=MagicNumber)

continue;

if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)

if((OrderType()==OP_SELL) || (OrderType()==OP_BUY))

count++;

}//for

return(count);

}

//+-----------end of count trades-------------------------------------+

//+---------------------Close Based on Time function------------Thanks to 'Maji' for this-------------------+

void CloseOrder()

{

double Profit=ThresholdMove*Point;

int total = CountTrades();

for (int cnt = 0 ; cnt < total ; cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if ((CurTime()-OrderOpenTime())>MonitorInMinutes*60*MinsMultiplier)

{

LowTrailingStopTrigger = False;

if(OrderSymbol()==Symbol() && OrderType()==OP_BUY && Bid-Profit<OrderOpenPrice() )

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);

}

if(OrderSymbol()==Symbol() && OrderType()==OP_SELL && Bid+Profit>OrderOpenPrice())

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);

}

}

}

}

//+---------------------------end of close on time code---------------+

//+------------------------increase lots function-------------------------+

//+----------------increases lots based on account equity-----------------+

//double IncreaseLots()

//{

// Lots = NormalizeDouble(AccountFreeMargin()/(LotIncreaseFactor*1000/0.1),2);

// if(Lots > 99) Lots = 99;

// Print("account free margin = ",AccountFreeMargin()," Lots = ",Lots);

// return(Lots)

//}

***************************end of include .mqh file******************************
Dosyalar:
ggl3.mq4  21 kb
 

. Bunu test etmenize yardımcı olmak isterim, ancak bir nedenden dolayı bir grafiğe ekleyemiyorum .. neden olmadığını anlayamıyorum..

 
furious_angel:
. Bunu test etmenize yardımcı olmak isterim, ancak bir nedenden dolayı bir grafiğe ekleyemiyorum .. neden olmadığını anlayamıyorum..

Derlemeyi deneyin. Ayrıca çalışması için mqh dosyasının uzmanlar klasöründe olması gerekir.

 
forextrades:
Derlemeyi deneyin. Ayrıca çalışması için mqh dosyasının uzmanlar klasöründe olması gerekir.

aslında mqh dosyasının "uzmanlar" klasörünün bir alt klasörü olan "include" klasörüne gitmesi gerekiyor. En azından benim için böyle çalışıyor.

Takmakta zorluk çekmiyorum> Sadece strateji test cihazının onunla tutarlı olmasını sağlamakta zorlanıyorum.

Neden: