EA N7S_AO_772012 - Seite 22

 
capellini писал(а) >>

Ich würde gerne eine Folgefrage stellen...

Es gibt Paare, bei denen der EA in keiner Weise optimiert, nicht einmal die ersten Ergebnisse erscheinen. USDCHF, zum Beispiel.

Womit könnte es zusammenhängen?

Nun, es geht wieder los.

Wieder einmal, zum sechsundzwanzigsten Mal.
Es gibt keine identischen Instrumente in Bezug auf die Preisentwicklung, aber es gibt ähnliche.
Wir werden nicht versuchen zu raten oder über die Charts zu zaubern, wo und wann wir einsteigen sollten.
Deshalb sollten wir, wenn keine oder nur schlechte Ergebnisse erzielt werden, die Bereiche und Optimierungszeiträume ändern, und Sie können auch mit den SL- und Trailing-Levels spielen. Bei einigen Symbolen habe ich den Zeitraum auf drei oder sogar zwei Wochen verkürzt, bei Yen-Kreuzungen habe ich versucht, den SL zu erhöhen. Im Allgemeinen versuche ich, die besten Werte zu finden, die bei der Optimierung gute Ergebnisse liefern. Als Ergebnis halte ich die Parameter für relativ richtig, die bei der Optimierung mit Genetik 6-8 Tausend profitable Kombinationen in 10 Tausend Läufen ergeben. Nach dem Gesetz der großen Zahlen ist die Gewinnwahrscheinlichkeit dann doppelt so hoch wie die Verlustwahrscheinlichkeit, was bedeutet, dass die Optimierung nur eine Formalität ist und die Gewinne bei einer signifikanten Anzahl von Wochen die Verluste mindestens zweimal übersteigen werden. Realistischerweise mehr.
Teilen Sie uns also mit, wie Sie die Tests durchführen und wie die Ergebnisse aussehen. Das ist nicht einfach in einer Woche.
Mein Saldo für die Woche ist +$690 und equity.... Das Eigenkapital beträgt etwas mehr als $750, heute Nachmittag waren es fast $1000. Fast alle Stellen wurden geschlossen.

 

Über den Fehler. Sie befindet sich hier in der Funktion startM1(). Aus diesem Grund gab es einen Unterschied bei den ersten Trades auf dem Testgerät und der Demo.

//+------------------------------------------------------------------+
void startM1() {ticket = -1;RefreshRates();
if (gesamt < HM_ALL) { BuSll (0,1,772012000); cmmnt();
if( !(DayOfWeek( ) == 1 && Hour( ) <2) && !(DayOfWeek( ) == 5 && Hour( ) >=18))
{if (Trd_Up_X && VSR() > 0 && bu<HM_Up_X&&Flq) {
if (MOS( 0, lots, sl, tp, WindowExpertName(), mn)==1) {Flq=false;}} // ersetzen durch >=

if (Trd_Dn_Y && VSR() < 0 && sll<HM_Dn_Y&&Flq) {
if (MOS( 1, lots, sl, tp, WindowExpertName(), mn)==1) {Flq=false;}} // ersetzen durch >=
}}

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

Der Fehler ist nicht kritisch, weil dadurch das Verbot der Eröffnung eines weiteren Geschäfts auf einer Bar nicht funktioniert hat.

Ich werde dies in neuen Versionen beheben, aber im Moment können Sie es manuell tun.

 

SHooter777ру: Советник понравился. После сегодняшнего слива демки оптимизацию делаю под 200$ (MiniForex). В принципе почти не отличается от 2000$. в оптимизационных сетах стоплоссы ставлю 50 с шагом 10, но все равно лучшие профиты со стоплоссами от 500 получаются. Уже в конечных сетах подбираю приемлемые в пределах 50-200 вручную. Влияет ли шаг и стоп в сетах на торговлю? (По наблюдениям не заметил). Еще вопрос: Можно ли оптимизировать под MicroForex (мин. лот 0,01)? Торгую на Pro Finance Group Inc платформа PFG FX Trader 4 (поддерживает MQL4). К сожалению на МикроФорексе нет демки.

Hat jemand den EA im wirklichen Leben ausprobiert? Unterscheidet sie sich wesentlich von der Demo?


Das Bild zeigt den Handel in der Demo diese Woche mit SHooter777r setzt .Mit +800 in der Handelsbilanz beschloss ich, einen anderen EA auf 3 Paare zu verwenden und ... Die Gier tötete die Gier - die verfügbaren Mittel fielen unter 100 und natürlich wurden keine Gegenpositionen eröffnet, so dass mein Konto fast pleite ging.


Viel Glück beim Handeln für alle!

Dateien:
 

Ich habe den EA heruntergeladen und bin erneut zu der Überzeugung gelangt, dass man, um das Jahr eines anderen schnell lesen zu können, professionellere Kenntnisse der mql-Sprache benötigt, um seinen eigenen Code zu schreiben, ist Wissen und Erfahrung ein Minimum. Wenn Sie den Code veröffentlichen, schreiben die Autoren Kommentare hinein und unterteilen den gesamten Code in Blöcke.

Dies kann ein interessanter Expert Advisor sein. Ich könnte etwas aus meiner eigenen Erfahrung empfehlen, aber ich möchte nicht in den Rohcode eindringen. Zeit ist kostbar.

 
.
 

Irgendetwas an der neuesten Version funktioniert nicht.

Der Optimierer eröffnet in der ersten Phase nicht einmal einen einzigen Handel.

Der Tester mit den für den vorherigen EA optimierten Parametern funktioniert auf die gleiche Weise.

 

Es tut mir leid! Ich habe eine halbe Stunde damit verbracht, die Anleitung zu schreiben, aber dieses fehlerhafte Forum beschönigt nicht nur die Buchstaben, es hat auch den gesamten Text verloren.

Ich werde es in Wordpress schreiben und hier einfügen. Warten Sie ein wenig.

 

Die neue Version von L9 enthält eine Reihe kleinerer, aber meiner Meinung nach notwendiger Ergänzungen und Änderungen.

Erstens: Die Funktion FLG() wurde hinzugefügt - sie ist für zwei Dinge zuständig

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

bool FLG (int cs )

{ int AE = AccountEquity( ) ;

Schalter(cs)

{case 0: if((DayOfWeek( ) == 5 && Hour( ) >=22) || (TrBlnc && (AE > UBlnc))

return (true);sonst return (false);

Fall 1: string dttm = StringConcatenate (Jahr(),".",Monat(),".",Tag());

datetime smtm=StrToTime(dttm);

bool Gp;

int shft = iBarShift(NULL,0,smtm);

double iOpn = iOpen (NULL,0,shft); double iCls = iClose (NULL,0,shft+1);

double dOC = MathAbs ((iOpn - iCls)/(Punkt*10)) ;

if (dOC>20) Gp = true ; Print (Gp);

string var1=TimeToStr(smtm,TIME_DATE|TIME_SECONDS);

if((TrBlnc && ((AE > UBlnc)||(AE < DBlnc)) || (!Flq)

|| ((DayOfWeek( ) == 1 && Hour( ) <2) || (DayOfWeek( ) == 5 && Hour( ) >=18))

|| ((DayOfWeek( ) == 1 && Hour( ) <14) && Gp)))

return (false);sonst return (true);

}

}

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

a) FLG( 0 ) - erzwungene Schließung von offenen Positionen zu bestimmten Bedingungen.

b) FLG( 1 ) - verbietet die Eröffnung von Positionen zu bestimmten Bedingungen.

Hier können Sie beliebige zusätzliche Bedingungen einfügen und nicht "überladen" void startM1() Funktion und anderen Orten.

Ich habe das Ende der Woche für die Zwangsschließung ausgewählt if((DayOfWeek( ) == 5 && Hour( ) >= 22) und das Eigenkapital auf eine bestimmte Größe erhöht

und das Öffnen bei gep über einem bestimmten Wert verbieten if(dOC>20) Gp = true ; und wenn Equity auf steigtif((TrBlnc && ((AE > UBlnc)

oder sinkt auf ||(AE < DBlnc))

 

Wenn Sie also testen oder optimieren, stellen Sie sicher, dass das Eigenkapital innerhalb des in den Parametern festgelegten Bereichs liegt

bool TrBlnc = true; int StrtBlnc = 3000; int DBlnc = 1500; int UBlnc = 4000;

oder hinzufügen zu int init() Zeile if ( IsOptimization( ) ) TrBlnc = false;//if ( IsTesting() ) TrBlnc = false;

 

Das Folgende ist keine Änderung, sondern eher eine größere Ergänzung und bezieht sich auf Delta_G12 . Es heißt jetzt nicht mehr delta AO , sondern Funktion G12(),

die je nach ihrem Parameter extern int Indctr; entweder die erste AO verwendet, wenn Indctr = 1

oder wenn Indctr = 2 irgendeine andere Funktion oder ein Indikator (ich benutze meinen eigenen, TSM beigefügt), wenn int Indctr = 0 dann werden die Signale von beiden Indikatoren summiert &&

//+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

double G12() {Schalter(Indctr)

{Fall 0:

iCusAO_1 = iAO(NULL, 240, 1); iCusAO_2 = iAO(NULL, 240, 2);

iCusTSM_1 = iCusTSM (24, 1); iCusTSM_2 = iCusTSM (24, 2);

Dlt_AO12 = iCusAO_1 -iCusAO_2; Dlt_TSM12 = iCusTSM_1-iCusTSM_2;

if ( Dlt_AO12>=0 && Dlt_TSM12 <=0) return (0);

if ( Dlt_AO12<=0 && Dlt_TSM12 >=0) return (0);

zurück(Dlt_AO12);

Fall 1:

iCusAO_1 = iAO(NULL, 240, 1); iCusAO_2 = iAO(NULL, 240, 2);

Dlt_AO12 = iCusAO_1 -iCusAO_2; return(Dlt_AO12);

Fall 2:

iCusTSM_1 = iCusTSM (24, 1); iCusTSM_2 = iCusTSM (24, 2);

Dlt_AO12 = iCusTSM_1-iCusTSM_2; return(Dlt_AO12);}}

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

double iCusTSM (int pr, int shft)

{ return (iCustom(NULL, 240, "iCus_N7S_TSM_forExp",pr,1,shft)); }

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

Grund der Beschwerde: