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

 
Guten Tag an alle.
Ich habe einen einfachen Code in mql4 geschrieben, der jedes Mal eine Order auf einem Minutenchart öffnet, wenn der Preis um 30 Pips vom nächsten lokalen Minimum steigt. Nach der Eröffnung des Auftrags wird der lokale Tiefstkurs zum Eröffnungskurs des Auftrags.
void OnTick()
{
if (Bid<LoU)
LoU=Bid;
//********************
if (Bid-LoU>=0.0030&&Pr!=LoU)
{
OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,0,0,"300",0);
Pr=LoU;
LoU=Bid;
}
}

Was ich an meinem Code nicht mag..... Dass sie fast bei jedem Tick ausgeführt werden muss. Ich kann diesen Code verbessern und er wird nicht bei jedem Tick, sondern bei fast jeder Minutenkerze ausgeführt. Das bedeutet, dass das Programm eine Menge Arbeit leisten muss, um den Punkt zu finden, an dem der Auftrag geöffnet wird.

Q:

Könnten Sie bitte eine Sprachstruktur vorschlagen, die mir helfen würde, den Eröffnungspunkt der in meinem Code erwähnten Order zu finden , ohne Ticks oder Candlesticks auszuprobieren, oder mit einem Minimum an Versuchen, d. h. damit das Programm so wenig Zeit wie möglich für die Suche nach dem Eröffnungspunkt aufwendet.

Ich danke Ihnen für Ihre Hilfe.

 
ANDREY:
Einen guten Tag an alle.
Ich habe einen einfachen Code in mql4 geschrieben, der jedes Mal eine Order auf einem Minutenchart öffnet, wenn der Preis um 30 Pips vom nächsten lokalen Minimum steigt. Nach der Eröffnung des Auftrags wird der lokale Tiefstkurs zum Eröffnungskurs des Auftrags.

Was ich an meinem Code nicht mag..... Sie muss fast bei jedem Tick ausgeführt werden. Ich kann diesen Code verbessern und er wird nicht bei jedem Tick, sondern bei fast jeder Minutenkerze ausgeführt. Das bedeutet, dass das Programm eine Menge Arbeit leisten muss, um den Punkt zu finden, an dem der Auftrag geöffnet wird.

Q:

Könnten Sie bitte eine Sprachstruktur vorschlagen, die mir helfen würde, den Eröffnungspunkt der in meinem Code erwähnten Order zu finden , ohne Ticks oder Candlesticks auszuprobieren, oder mit einem Minimum an Versuchen, d. h. damit das Programm so wenig Zeit wie möglich für die Suche nach dem Eröffnungspunkt aufwendet.

Vielen Dank für die Hilfe.

//+------------------------------------------------------------------+
int OnInit()
  {
   LoU=Bid;
  }
//+------------------------------------------------------------------+
void OnTick()
  {
   if ((Bid+30*Point)<=LoU)
     {
      if(OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,0,0,"300",0)) LoU=Bid;
     }
  }
 
MakarFX:

Ich danke Ihnen für Ihre Hilfe.

Aber das Ergebnis meines Codes ist nicht dasselbe wie meins. Hier ist das Ergebnis meines Codes auf GBPUSD auf einem Minutenchart über einen Tag vom 04.01.2010 bis 05.01.2010.
Dies ist das Ergebnis meines Codes

Und das ist das Ergebnis Ihres Codes

 
ANDREY:

Ich danke Ihnen für Ihre Hilfe.

Aber das Ergebnis meines Codes ist nicht dasselbe wie meins. Hier ist das Ergebnis meines Codes auf GBPUSD auf einem Minutenchart über einen Tag vom 04.01.2010 bis 05.01.2010.
Dies ist das Ergebnis meines Codes

Dies ist ein Ergebnis Ihres Codes

Code anzeigen OnInit()

 
MakarFX:

Zeigen Sie mir den OnInit()-Code.

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

Ich habe gerade Ihren Code in den MetaEditor kopiert und das Ergebnis erhalten, das oben steht.

Ihr Code eröffnet eine Order und zählt 30 Pips abwärts (gelb), während mein Code abwärts zählt (blau).

Vielen Dank für Ihre Hilfe

 
ANDREY:

Ich habe gerade Ihren Code in den MetaEditor kopiert und das obige Ergebnis erhalten.

Vielen Dank für Ihre Hilfe.

Ich brauche Ihren Code, um den Punkt zu verstehen.

In Ihrem Code ändert sich LoU bei jedem Tick, wenn der Kurs fällt, aber in meinem Code ändert sich LoU nur nach der Eröffnung eines Geschäfts.

 
MakarFX:

Ich brauche Ihren Code, um zu verstehen, worum es geht.

In Ihrem Code ändert sich der LoU bei jedem Tick, wenn der Kurs fällt, während sich mein LoU nur ändert, wenn ein Handel eröffnet wird.

Sie haben 30 Pips auf der falschen Seite. Ich habe ein Bild zum vorherigen Beitrag hinzugefügt
Und mein Code ist im ersten Beitrag. Sobald der Preis 30 Pips vom lokalen Minimum *bottom-up* überschritten hat - öffnen Sie eine Order. Und mein Code öffnet die Bestellung genau so, wie ich sie brauche. Aber ich möchte, dass sie dafür möglichst wenig Zeit aufwenden.

In meinem Code ändert sich LoU bei jedem Tick nach dem Öffnen jeder Bestellung. Ohne sie findet das Programm nicht das nächste lokale Minimum, von dem aus wir 30 Pips zählen sollten. Ich versuche, eine Lösung zu finden, damit sich die LoU nicht bei jedem Tick oder bei jeder Minutenkerze ändert, sondern die Aufträge an denselben Stellen geöffnet werden, an denen mein Code sie öffnet.
 
ANDREY:

Ich habe gerade Ihren Code in MetaEditor kopiert und das obige Ergebnis erhalten.

Ihr Code öffnet die Order und zählt 30 Pips abwärts (gelb), während mein Code aufwärts zählt (blau).

Vielen Dank für Ihre Hilfe

Mein Fehler...ersetzen

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

Mein Fehler...ersetzen

Vielen Dank für Ihre Hilfe.
Das habe ich. Es wird eine große Anzahl von Aufträgen geöffnet (27657 Aufträge), darunter auch die, die ich brauche

Hier ist ein Screenshot der ersten Bestellungen

 
MakarFX:

Mein Fehler...ersetzen

Hier ist Ihr Code mit der geänderten Zeile.

double LoU;
int OnInit()
  {
   LoU=Bid;
  }
//+------------------------------------------------------------------+
void OnTick()
  {
   if ((Bid+30*Point)>=LoU)
     {
     
      if(OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,0,0,"300",0)) LoU=Bid;
     }
  }
Wie kann ich erreichen, dass der Code nur die gewünschten Aufträge öffnet?
Grund der Beschwerde: