Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1471

 
ANDREY:

Ich habe im Tester ein stabiles statistisches Muster gefunden, das seit 2008 kontinuierlich Gewinne mit akzeptablen Drawdowns erzielt hat. Ich muss es an verschiedenen Paaren und Rahmen usw. testen.
Aber ich muss es mit mehreren Parametern gleichzeitig testen. Die Optimierung nimmt unheimlich viel Zeit in Anspruch, und ich habe bereits einen Code geschrieben, der das, was ich brauche, viel schneller testet. Und jetzt bin ich dabei, meinen Code zu verbessern, d.h. ich möchte, dass er im Tester noch schneller funktioniert, oder so schnell wie möglich. Der Hauptalgorithmus in meinem Code eröffnet Aufträge bei 30 Punkten nach jedem lokalen Minimum. Also versuche ich, es so schnell wie möglich zu machen.

Ihre Aufgabe wird Ihnen leichter fallen, wenn Sie erklären können, wie Sie das lokale Extremum identifizieren.

Wenn der Fraktal-Indikator dafür geeignet ist, dann sollten Sie am zweiten Balken auf das Vorhandensein eines Fraktals prüfen und aus diesem Wert die notwendigen 30 Punkte oder Pips berechnen... was immer Sie wollen.

 
MakarFX:

Die Prüfung in Ihrem Code ist keine Belastung, aber wenn Sie es wirklich versuchen wollen, versuchen Sie es.

Ich habe es ausprobiert. Öffnet erneut die falschen Aufträge (in Bezug auf Zeit, Preis und Menge)

Ihr Code.

double LoU;
int OnInit()
  {
   LoU=Bid;
  }
//+------------------------------------------------------------------+
void OnTick()
  {
   if(Low[1]<LoU) {LoU=Low[1];}
   if ((Bid-30*Point)>=LoU)
     {
      if(OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,0,0,"300",0)) LoU=Bid;
     }
  }


Vielen Dank für die Hilfe.

 
Alexey Viktorov:

Ihre Aufgabe wird leichter sein, wenn Sie erklären können, wie Sie ein lokales Extremum definieren.

Wenn der Fraktal-Indikator dafür geeignet ist, dann prüfen Sie auf dem zweiten Balken auf das Vorhandensein eines Fraktals und zählen die notwendigen 30 Punkte oder Pips... was immer Sie wollen.

Wenn mit einem Extremum das lokale Minimum gemeint ist, nach dem der Auftrag eröffnet wird, wird dieses Minimum durch die Überprüfung des minimalen Preiswertes bei jedem Tick oder jeder Kerze definiert. Und genau das ist es, womit ich zu kämpfen habe. Ich möchte, dass alles viel schneller geht, damit ich Aufträge an den von mir benötigten Positionen eröffnen kann.

 
ANDREY:

Wenn unter einem Extremum ein lokaler Tiefststand verstanden wird, nach dem ein Auftrag eröffnet wird, wird dieser Tiefststand durch Überprüfung des Mindestpreises bei jedem Tick oder jeder Kerze ermittelt. Und genau das ist es, womit ich zu kämpfen habe. Ich möchte, dass alles viel schneller geht, damit ich Aufträge an den von mir benötigten Positionen eröffnen kann.

Das Extremum ist ein lokales Minimum oder ein lokales Maximum. Wie definieren Sie das?

 
Alexey Viktorov:

Ihre Aufgabe wird Ihnen leichter fallen, wenn Sie erklären können, wie Sie das lokale Extremum identifizieren.

Wenn der Fraktal-Indikator geeignet ist, prüfen Sie am zweiten Balken, ob ein Fraktal vorhanden ist, und berechnen aus diesem Wert die erforderlichen 30 Punkte oder Pips... was immer Sie wollen.

Ich glaube, der fraktale Indikator passt nicht zu mir. Sie wird viele Aufträge verpassen.

Der von meinem Code eröffnete Auftrag mit der Preisprüfung bei jedem Tick ist blau hervorgehoben. Ich denke, der Fraktalindikator sagt mir in diesem Fall nichts Notwendiges.

 
Alexey Viktorov:

Ein Extremwert ist ein lokales Minimum oder ein lokales Maximum. Wie definieren Sie das?

In meinem Fall ist es ein Minimum.

 
ANDREY

Was ist das?

Pr

wie wird sie initialisiert?

 
MakarFX:
Es kommt darauf an, wo man es hinstellt

Zum Beispiel zwischen der Eröffnung von zwei benachbarten Aufträgen. Das heißt, man merkt sich den Balken des letzten offenen Auftrags und eröffnet einen Auftrag, sobald der Kurs um 30 Punkte über dem von dieser Funktion definierten Tiefpunkt liegt. In diesem Fall muss diese Funktion jedoch bei jedem Tick aufgerufen werden. Tausche den Shill gegen die Seife.......

 
ANDREY:

Tausch eines Lockvogels gegen eine Seife.......

Noch schlimmer... Sie müssen immer noch die Anzahl der Balken wissen


Ich habe gezwickt ...Versuchen Sie

 
MakarFX:

Was ist das?

wie wird sie initialisiert?

double LoU,Pr;
void OnTick()//484
{
Tick++;
if (Bid<LoU)
LoU=Bid;
//**************************************************************||TimeCurrent()==1262568096
if (Bid-LoU>=0.0030&&Pr!=LoU)
{
OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,0,0,"300",0);
Print("---------------------КАЖДЫЙ ТИК ------Tick---------=     "    ,   Tick);
Pr=LoU;
LoU=Bid;
}
}
Pr ist eine Variable, so dass nur 1 Auftrag nach 30 Pips eröffnet wird. Ohne diese Variable öffnen sie sich bei jedem Tick
Grund der Beschwerde: