Gogetter EA - Seite 9

 

Hoffe, jemand kann die Antwort auf das Geheimnis hier finden...

Dieser Beitrag enthält alles, was man braucht, um GGL3 auszuführen, wenn man diesen Code in eine Include-.mqh-Datei einfügt. Ich habe die .htm-Berichte gezippt, weil sie wegen der vielen modifizierten Aufträge beide über 4mb groß sind...

Es scheint, dass meine Neugestaltung der Trailing-Stop-Funktion die Leistung von 1,2 Millionen auf 1,3 Millionen verbessert hat... ODER das ist ein Ergebnis des Starts mit einer anfänglichen Einlage von 1000 statt 500. Ich weiß es nicht, denn GGL3 startet nicht mit einer Ersteinlage von 500 und eröffnet keine Trades.

Leider muss ich sagen, dass trotz des scheinbaren Fortschritts in dieser Angelegenheit noch immer etwas unentdeckt bleibt, das verhindert, dass das große Geld konsequent verdient wird. Häufiger scheitert es und geht in Konkurs. Wenn es nicht der Trailing-Stop ist, dann muss es etwas anderes sein... Ich weiß nicht, was...

Es scheint, dass es eine Menge Belohnung und viel Geld für denjenigen gibt, der herausfinden kann, was die Ursache für eine so große Varianz der Ergebnisse bei denselben Einstellungen desselben Eas über denselben Zeitraum ist, und es korrigieren kann. Es ist mir derzeit verblüfft.

Ich nehme eine Woche Urlaub... Hoffentlich hat jemand einen Einblick oder eine Lösung gepostet, wenn ich zurückkomme. Ich sehe nicht, wie ich wirklich auf mehr Entwicklung mit diesem, bis das Geheimnis hier offenbart wird, bewegen kann.

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

//| 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)

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

hier ist die Include-Datei gezippt, falls das einfacher zu handhaben ist.

Dateien:
 

Die Fragen, die ich mir jetzt stelle, sind: ....

Ist der Datenstrom stabil? Ich gehe davon aus, dass er stabil ist, weil er die Dateien des History Centers verwendet....vielleicht sollte diese Annahme in Frage gestellt werden?

Ist die Art und Weise, wie die Plattform den Datenstrom verarbeitet, stabil und kann man sich darauf verlassen, dass sie dieselben Daten jedes Mal auf genau dieselbe Weise verarbeitet? Wenn nicht, wer hat diese Plattform entwickelt? Wie kann ich Kontakt mit ihnen aufnehmen? Was muss behoben werden, damit sie zuverlässig ist?

Es scheint unwahrscheinlich, dass ich den EA-Code jemals stabilisieren kann, wenn eine dieser beiden Unbekannten immer noch potenziell variabel und in der Tat unzuverlässig ist. Wie kann ihre Zuverlässigkeit überprüft werden?

Ich habe eine Anfrage zu dieser Frage auf dieser Seite gestellt...

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

Hoffen wir, dass jemand eine Einsicht hat und bald antwortet.

 
Aaragorn:
Die Fragen, die ich jetzt stelle, sind: ....

Ist der Datenstrom stabil? Ich gehe davon aus, dass dies der Fall ist, weil die Dateien des History Centers verwendet werden ..... Vielleicht sollte diese Annahme in Frage gestellt werden?

Ist die Art und Weise, wie die Plattform den Datenstrom verarbeitet, stabil und kann man sich darauf verlassen, dass sie dieselben Daten jedes Mal auf genau dieselbe Weise verarbeitet? Wenn nicht, wer hat diese Plattform entwickelt? Wie kann ich Kontakt mit ihnen aufnehmen? Was muss behoben werden, damit sie zuverlässig ist?

Es scheint unwahrscheinlich, dass ich den EA-Code jemals stabilisieren kann, wenn eine dieser beiden Unbekannten immer noch potenziell variabel und in der Tat unzuverlässig ist. Wie kann ihre Zuverlässigkeit überprüft werden?

Ich habe eine Anfrage zu dieser Frage auf dieser Seite gestellt...

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

Hoffen wir, dass jemand etwas Einsicht hat und bald antwortet.

.... haben sie versucht, dies auf mehreren plattformen zu testen? ich teste derzeit denselben EA auf zwei verschiedenen BD-Plattformen, um zu sehen, welche ergebnisse ich erhalten werde. ich wollte sicherstellen, dass die ergebnisse eine angemessene Menge an festen Daten haben, bevor ich einen live nehme. vielleicht ist das eine dumme idee, aber ich möchte kein echtes kapital riskieren, bis ich eine ziemlich sichere Vorstellung davon habe, dass der EA eine gleichbleibende leistung haben wird.

 

Ich habe es nur auf metatrader 4 mit dem 30tf für den GPBUSD getestet. Nicht, weil es keine gute Idee ist, dies zu tun, sondern weil ich nur ein Mensch bin, und da ich keine Frau bin, kann ich auch nicht gut multitasken. Also bin ich einfach noch nicht dazu gekommen, es zu tun. Ich habe noch keine anderen Tests durchgeführt. Ich habe mich weiterhin auf die Entwicklung konzentriert. Mein Ziel war es, es in diesem einen Fall stabil zu machen, bevor ich versuche, es auf andere Paare oder andere Plattformen oder was auch immer auszuweiten.

Benutzen Sie auf jeden Fall Ihren gesunden Menschenverstand. Ich werde dies in meinem Demo-Konto laufen lassen, während ich die nächste Woche weg bin. Da wir morgen abreisen und die ganze Woche weg sein werden, werde ich wahrscheinlich erst am nächsten Dienstag wieder in den Thread einsteigen.

Ich halte es noch nicht für geeignet, echtes Geld zu riskieren, ich möchte nur sehen, wie die Instabilitäten behoben werden und dann den Test in der Demo weiterführen. Dann werde ich sehen, wo die Daten mir sagen, dass ich damit weitermachen soll. Ich möchte vor allem die Entwickler dazu auffordern, das Programm in meiner Abwesenheit zu überprüfen und zu sehen, ob die Unregelmäßigkeiten bei der Datenverarbeitung oder in der Datei verifiziert werden können.

Ich sehe keinen offensichtlichen Fehler im Code, der die Abweichung erklären würde. Ich habe mich schon einmal geirrt, und ich könnte mich auch in diesem Fall irren. Ich habe kein Problem damit, mich zu irren, wenn mir jemand zeigen kann, wie oder wo ich es korrigieren kann.

Ich werde Sie nicht anlügen, ich bin froh, wenn ich eine Weile von dieser Sache wegkomme. Es hat zu viel von meiner Aufmerksamkeit in Anspruch genommen, und ich verdiene es, ein Gleichgewicht im Leben zu finden, während ich an dieser Sache arbeite.

Ich überlasse euch die Sache für eine Weile und werde sehen, was ihr damit anfangen könnt. Ich bitte nur darum, dass ihr, wenn ihr Nachforschungen anstellt, in diesem Thread über eure Ergebnisse berichtet, damit alle davon profitieren können.

 

...........

Könnten Sie kurze und lange Beiträge in einer mp4-Datei zusammenfassen?

 

Warum so unterschiedliche Berichte bei gleichen Einstellungen?

Ich verwende den beigefügten EA mit der beigefügten Datei include.mqh. Ich habe einen Strategietest mit den folgenden Einstellungen durchgeführt: ....

Schaltfläche Experteneigenschaften....

Registerkarte Testng...

1000 USD Ersteinlage..

Positionen: Long und Short

Optimierte Parameter: Saldo

Genetischer Algorithmus ist nicht aktiviert

Registerkarte Eingaben...

Alle Benutzereingaben werden genau so verwendet, wie sie im EA gespeichert sind, ohne manuelle Änderungen auf dieser Registerkarte

Registerkarte Optimierung...

Auf dieser Registerkarte ist nichts markiert

Einstellungen.....

Expert Advisor: GGL3, Aaragorn und Eaglehawk & Maji & Robert C.

Symbol: GBPUSD, Britisches Pfund vs. US Dollar

Zeitraum: M30

Modell: Jeder Tick (basierend auf allen verfügbaren Least-Timeframes mit fraktaler Interpolation eines jeden Ticks)

Ich verwende die ebenfalls beigefügte 1-Minuten-Datendatei.

Das Kästchen Datum verwenden ist aktiviert; From: 2005.09.09 To: Heute (2006.08.22)

Ich markiere das Kästchen für Neuberechnen

Das Kontrollkästchen für Optimierung ist nicht aktiviert.

Ich erhalte diesen Bericht, wenn der Test beendet ist...

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

Balken im Test 17735

Ticks modelliert 702859

Qualität der Modellierung 89.82%

Ersteinlage 1000.00

Gesamtnettogewinn 1375788,66

Bruttogewinn 3678568,71

Bruttoverlust -2302780,05

Gewinnfaktor 1,60

Erwartete Auszahlung 472,62

Absolute Auszahlung 240,00

Maximaler Verlust 231662,10 (15,07%)

Relativer Verlust 55,32% (18074,74)

Gesamtzahl der Abschlüsse 2911

Short-Positionen (Won %) 0 (0,00%)

Long-Positionen (Won %) 2911 (42,05%)

Gewinntransaktionen (% der Gesamtzahl) 1224 (42,05%)

Verlustgeschäfte (% der Gesamtzahl) 1687 (57,95%)

Größte

Gewinnhandel 89100.00

Verlusthandel -15840.00

Durchschnitt

Gewinn-Handel 3005,37

Verlusthandel -1365,01

Maximal

Gewinne in Folge (Gewinn in Geld) 9 (106921.10)

Verluste in Folge (Verlust in Geld) 18 (-163.10)

Maximale

Gewinn in Folge (Anzahl der Gewinne) 225720.50 (7)

Konsekutiver Verlust (Anzahl der Verluste) -15845.70 (5)

Durchschnitt

Gewinne in Folge 2

fortlaufende Verluste 2

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

Jetzt denke ich, dass dies ein sehr guter EA ist, also möchte ich ihn noch einmal testen, um sicherzustellen, dass er dasselbe tut....

Ich nehme keinerlei Änderungen an den Einstellungen vor....

Ich wähle das Feld "Neu berechnen" auf der Registerkarte "Einstellungen" aus und klicke auf "Start" .... Ich erhalte nun diesen Bericht...

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

Balken im Test 18015

Ticks modelliert 739231

Qualität der Modellierung 89.83%

Ersteinlage 1000,00

Gesamtnettogewinn -731.75

Bruttogewinn 31897,83

Bruttoverlust -32629.58

Gewinnfaktor 0,98

Erwartete Auszahlung -0,24

Absolute Auszahlung 780,40

Maximale Auszahlung 4912,15 (94,91%)

Relativer Verlust 94,91% (4912,15)

Gesamtzahl der Abschlüsse 2990

Short-Positionen (Won %) 0 (0,00%)

Long-Positionen (Won %) 2990 (34,88%)

Gewinngeschäfte (% der Gesamtzahl) 1043 (34,88%)

Verlustgeschäfte (% der Gesamtzahl) 1947 (65,12%)

Größte

Gewinngeschäft 1170,00

Verlusthandel -360.00

Durchschnitt

Gewinngeschäft 30,58

Verlusthandel -16,76

Maximal

Gewinne in Folge (Gewinn in Geld) 8 (124.50)

Verluste in Folge (Verlust in Geld) 20 (-45.50)

Maximale

Gewinn in Folge (Anzahl der Gewinne) 2606,30 (7)

Verlust in Folge (Anzahl der Verluste) -360.00 (1)

Durchschnitt

Gewinne in Folge 2

fortlaufende Verluste 3

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

Warum sind die beiden Tests so unterschiedlich?

Was macht der Tester anders, wenn er den EA zum zweiten Mal testet?

Wie bringe ich den Tester dazu, jedes Mal, wenn ich neu berechne, denselben Test durchzuführen?

Vielen Dank für Ihre Anleitung, damit ich jedes Mal, wenn ich diesen EA teste, denselben Bericht erhalte.

Aaragorn

***********************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******************************
Dateien:
ggl3.mq4  21 kb
 

. ich würde Ihnen gerne helfen, dies zu testen, aber aus irgendeinem Grund kann ich es nicht an ein Diagramm anhängen .. kann nicht herausfinden, warum nicht.

 
furious_angel:
. ich würde Ihnen gerne helfen, dies zu testen, aber aus irgendeinem Grund kann ich es nicht an ein Diagramm anhängen .. kann nicht herausfinden, warum nicht ..

Versuchen Sie es zu kompilieren. Sie müssen auch die mqh-Datei im Expertenordner haben, damit es funktioniert.

 
forextrades:
Versuchen Sie sie zu kompilieren. Sie müssen auch die mqh-Datei im Ordner "experts" haben, damit es funktioniert.

Die mqh-Datei muss im Ordner "include" abgelegt werden, der ein Unterordner des Ordners "experts" ist. Zumindest funktioniert das bei mir so.

Ich habe keine Probleme, sie anzuhängen> Ich habe nur Probleme, den Strategietester dazu zu bringen, mit ihr konsistent zu sein.