EA N7S_AO_772012 - Seite 23

 

Nun ein wenig zu den Flags, die nicht in der FLG-Funktion enthalten sind, da selbst unabhängig ist.

A) Flg - Initialisierungsflag, wird benötigt, um zu verhindern, dass die Pose nach einer Störung oder einem Betriebsstart geöffnet wird, wenn ein Eingangssignal vorliegt (dieses Signal ist lang anhaltend), da es zu spät sein kann. Die Logik ist wie folgt: Wenn VSR!=0, d.h. ein Signal vorhanden ist, dann wird Flg=false gesetzt; sobald das Signal verschwindet, wird das Flag zurückgesetzt

if (!Flg){if (VSR () ==0) {Flg=true; return (0);}}

B) Flq - interessante Flagge, die die Eröffnung einer zweiten Position auf demselben Balken verbietet. Zuerst wollte ich die Eröffnung einer Position mit einem Verlust auf einem Balken verbieten, aber ich werde es implementieren, wenn ich mit meiner Funktion BuSll fertig bin, die es einfach machen wird. Zurzeit gibt es eine solche Variante.

Sie wird an der Position Öffnung eingestellt

{if (Trd_Up_X && VSR() > 0 && bu <HM_Up_X ) {

if (MOS( 0, lots, sl, tp, WindowExpertName(), mn)>=1) {Flq=false;}}

if (Trd_Dn_Y && VSR() < 0 && sll<HM_Dn_Y ) {

if (MOS( 1, lots, sl, tp, WindowExpertName(), mn)>=1) {Flq=false;}}

Übrigens habe ich schon früher über die Korrektur in dieser Funktion geschrieben.

Sie wird alle 4 Stunden zurückgesetzt. Wenn Sie der Meinung sind, dass dies für einige Paare zu viel ist, können Sie die Funktion H1() für alle außer einigen Paaren stündlich zurücksetzen if (Symbol()!="GBPJPY" || Symbol()!="USDCHF"){ Flq = true ; }

 
WitoHOH писал(а) >>

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.

Haben Sie herausgefunden, warum sie nicht optimiert ist?

 
SHOOTER777 писал(а) >>

Haben Sie herausgefunden, warum es nicht optimiert wurde?

Nein.

Ich hatte nicht viel Zeit.

Beim letzten Mal gab es ein Problem wegen der fehlenden Geschichte.

Ich bin gerade dabei, die Geschichte wieder zum Laufen zu bringen.

Ich werde Ihnen morgen früh Bescheid geben.

 
SHOOTER777 писал(а) >>

Haben Sie herausgefunden, warum es nicht optimiert wurde?

Es will nicht optimieren.

Die siebte Version wurde mit denselben historischen Daten optimiert.

Der neueste wird es nicht.

Überall ist das Ergebnis 0.

 

Ich habe den Experten neu eingestellt. Wahrscheinlich eine beschädigte Version. Das Forum war eiskalt.

Und achten Sie auf diese Zeilen im Expert Advisor

Anfangssaldo, Minimum und Maximum, wenn der Expert Advisor handelt.

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

Das Verbot ist in der Funktion bool FLG (int cs ) implementiert

Dateien:
 

Ein wenig mehr über die Logik des Stadtrats.

Es gibt ein Problem - häufige Lücken. Während der Lücken sind die optimierten Parameter und Bedingungen für den Markteintritt nicht synchronisiert, da die Indikatorwerte und die Preise zerrissen werden. Es braucht Zeit, sich zu erholen. Für die AO habe ich 12 Stunden definiert, und ich betrachte eine signifikante Lücke als eine Preisänderung von mehr als 20 Standardpunkten (für einige Paare können und sollten andere Werte gelten).

Was wir also getan haben:

Zunächst haben wir festgestellt, ob es eine Lücke gibt

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)) ;
wenn (dOC>20) Gp = true ;

Wenn dies der Fall war und Gp = wahr ist, dann ist die Bedingung für das Verbot

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

Ich habe jedoch Zweifel daran, dass die Funktion

iBarShift (NULL,0,smtm);

vielleicht wäre es besser, sie wie folgt zu formulieren

iBarShift (NULL,60,smtm,true); aber nein, der letzte Standardparameter ist immer noch false ?

Ich bin gespannt auf Ihre Gedanken und Vorschläge.

 
SHOOTER777 >> :

Achten Sie auch auf diese Zeilen im EA

Startguthaben, Minimum und Maximum, wenn der EA handelt.

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

Dieses Verbot ist in der Funktion bool FLG (int cs ) implementiert

Warum brauchen Sie solche Einschränkungen?

 
capellini писал(а) >>

Warum brauchen Sie solche Einschränkungen?

Wenn Sie es nicht brauchen, verwenden Sie es nicht! Ich bereite den EA für echte und als Multi-Währungs-EA. In Zukunft wird es eine Gabelung sein, bei der der EA nicht von unten handeln darf, um bei höherer Gewalt nicht alles zu verlieren, und auch nicht von oben - der Spatz in der Hand ist besser als der Kran))) MM jedoch

 

Und nun Nachrichten aus dem Feld oder von der Front))

Letztes Wochenende hatte ich keine Zeit, die Setdateien für die L9-Version vorzubereiten, ich habe die Arbeit daran spät beendet plus die Feiertage))))

Daher beschlossen, das Experiment zu setzen. Ich habe die Version von L9 mit Sätzen von letzter Woche und von einer anderen Version.

Was wir am Ende von zwei Tagen haben: Saldo -$70 Eigenkapital +$420 Gut gemacht!

 
SHOOTER777 писал(а) >>

Achten Sie daher beim Testen oder Optimieren darauf, 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;

Es hat funktioniert.

Die Optimierung läuft.

Vielleicht sollten solche Variablen außerhalb des Codes verschoben werden?

Es wäre einfacher bei der Optimierung und auch bei der realen Arbeit.

Der Expert Advisor muss nicht jedes Mal neu kompiliert werden, wenn der Saldo geändert wird.