[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 53

 

Ich habe eine solche Nuance festgestellt, wenn ich in meinem EA einen Druck vorschreibe, nämlich:

double Up = iCustom(NULL, 0, "best div original", "*** CCI-OnArray Settings ***", 12, 3, 5, 25, "*** Indicator Settings ***", false, false, false, 0, 1);

Drucken ("+++++++++++++", Up);

zeigt der Expert Advisor das folgende Ergebnis an: ++++++++++++++ 2147483647. Die gleiche Zahl kann ich auch für Aufwärts- und Abwärtspuffer sehen. Bitte teilen Sie mir mit, um welche Art von Code es sich handelt? Und wie bekommt man den Wert von Ikastom genau dann, wenn der Pfeil erscheint?

 

Ich bitte um ein wenig Hilfe von sachkundigen Personen: Bitte geben Sie den korrekten Code an, um einen Expert Advisor/Utility zu erstellen, dessen Algorithmus wie folgt ist:

- Eröffnung eines Doppelgeschäfts in EINER Richtung (Lots 0,1 und 0,1) erfolgt im Moment der Kreuzung Tief (Verkauf)/Hoch (Kauf) der zuletzt gebildeten Kerze im aktuellen Chart / aktuellen Zeitrahmen mit einem Stopp in der Nähe des Hochs / Tiefs der Kerze, bei der Kreuzung von denen die Transaktion eröffnet und Platzierung im gleichen Punkt der anhängigen Bestellung ein Doppelgeschäft in einer Richtung mit Lots, wie 0,2 und 0,1.

 

Frage:

Es gibt einen Code

int start()

if (H==TimeHour(TimeCurrent()) && M==TimeMinute(TimeCurrent()) && S==ZeitSekunden(TimeCurrent())

{+ einige Bedingungen

Dann wird die Bestellung geöffnet

Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,2,SL,TP);
if (Ticket > 0)
Alert ("Buy order opened ",Ticket);

return;}

Wenn aber zu diesem Zeitpunkt kein Häkchen vorhanden ist, wird es nicht ausgelöst.

Aber wenn ich ihm mehr Zeit zum Nachdenken gebe, kann er mehrere Aufträge eröffnen.

Ich sollte nur einen Auftrag haben, ohne auf bereits offene Aufträge zu achten.

Bitte beraten Sie mich, was zu tun ist

 
v2812:

Ich habe eine solche Nuance festgestellt, wenn ich in meinem EA einen Druck vorschreibe, nämlich:

double Up = iCustom(NULL, 0, "best div original", "*** CCI-OnArray Settings ***", 12, 3, 5, 25, "*** Indicator Settings ***", false, false, false, 0, 1);

Drucken ("+++++++++++++", Up);

zeigt der Expert Advisor das folgende Ergebnis an: ++++++++++++++ 2147483647. Die gleiche Zahl kann ich auch für Aufwärts- und Abwärtspuffer sehen. Bitte teilen Sie mir mit, um welche Art von Code es sich handelt? Und wie bekommt man den Wert von Ikastom genau dann, wenn der Pfeil erscheint?


Versuchen Sie, die Indikatorwerte nicht über iCustom(), sondern über die globalen Variablen des Terminals zu übergeben. Das sind die, die Sie bei F3 sehen können. Es ist nämlich nicht ungewöhnlich, dass dies die einzige normale Art der Datenübertragung ist. Ich habe solche Fälle erlebt.

Es ist durchaus möglich, dass in Ihrem Indikator einige Arten von Pfeilen durch den Indikatorpuffer gezeichnet werden, während andere als Objekte erstellt werden. Dies ist der einzige Grund, warum im Datenfenster möglicherweise keine Pfeilpreise angezeigt werden - die Daten werden in diesem Fenster aus den Indikatorpuffern ausgegeben.

 
palesandr:

Frage:

Es gibt einen Code

int start()

if (H==TimeHour(TimeCurrent()) && M==TimeMinute(TimeCurrent()) && S==ZeitSekunden(TimeCurrent())

{+ einige Bedingungen

Dann wird die Bestellung geöffnet

Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,2,SL,TP);
if (Ticket > 0)
Alert ("Buy order opened ",Ticket);

return;}

Wenn aber zu diesem Zeitpunkt kein Häkchen vorhanden ist, wird es nicht ausgelöst.

Aber wenn ich ihm mehr Zeit zum Nachdenken gebe, kann er mehrere Aufträge eröffnen.

Ich sollte nur einen Auftrag haben, ohne auf die bereits offenen Aufträge zu achten.

Bitte beraten Sie mich, was zu tun ist


Der EA-Code wird NUR ausgelöst, wenn ein neuer Tick eintrifft. Es wird mehr als ein Auftrag eröffnet, da beim nächsten Tick das Setup-Signal ebenfalls wahr ist und die Anzahl der Aufträge nicht überprüft wird. Wir müssen die Aufträge neu kalkulieren.
 
drknn:


Versuchen Sie, Indikatorwerte nicht über iCustom(), sondern über Variablen der globalen Terminalebene zu übergeben. Diese können mit F3 eingesehen werden. Es ist nämlich nicht ungewöhnlich, dass dies die einzige normale Art der Datenübertragung ist. Ich habe solche Situationen schon erlebt.

Es ist möglich, dass in Ihrem Indikator einige Pfeiltypen durch einen Indikatorpuffer gezeichnet werden und andere als Objekte erstellt werden. Dies ist der einzige Grund, warum im Datenfenster möglicherweise keine Pfeilpreise angezeigt werden - die Daten werden in diesem Fenster aus Indikatorpuffern ausgegeben.


Herzlichen Dank! Ich werde jetzt das Rezept ausprobieren, wie Sie gesagt haben.
 
palesandr:
Wenn aber zu diesem Zeitpunkt kein Häkchen vorhanden ist, wird sie nicht ausgelöst.

und wenn Sie ihm mehr Zeit zum Nachdenken geben, kann es mehrere Aufträge eröffnen.

Aber ich brauche nur einen, und ich möchte nicht, dass er sich um bereits offene Aufträge kümmert.

Können Sie mir sagen, was ich tun soll
?


1. der globale Zeitpunkt last_dt;


2. die richtige Zeit einstellen

datetime dt=StrToTime(H+": "+M+": "+S);


3.

if (TimeCurrent()>=dt && last_dt<dt) // die richtige Zeit ist gekommen und es ist der nächste Tag

{

// den Auftrag öffnen

if (ticket>0) last_dt=TimeCurrent(); // Erinnerung an den Zeitpunkt der Öffnung

}

 
v2812:

dann liefert der EA das folgende Ergebnis: ++++++++++++++ 2147483647. Und die gleiche Zahl für die Aufwärts- und Abwärtspuffer.

2147483647 ist die Konstante EMPTY_VALUE
 

Ich verstehe das.

Ich muss die Neuberechnung von Aufträgen genauer beschreiben. Vielleicht ein Beispiel (in Codeform) oder einen Link.

Ich habe es folgendermaßen versucht

if (Ticket > 0)
Alert ("Opened Buy order ",Ticket);

sleep (10000)
return;}

aus irgendeinem Grund fehlgeschlagen

drknn:

Der EA-Code wird NUR ausgelöst, wenn ein neuer Tick eintrifft. Es wird mehr als ein Auftrag eröffnet, da beim nächsten Tick das gesetzte Signal ebenfalls wahr ist und die Anzahl der Aufträge nicht überprüft wird. Wir müssen die Aufträge neu kalkulieren.
 

Ich möchte, dass die Software das Datum ignoriert, nur die Uhrzeit ist wichtig.

Wird Ihr Rat in diesem Fall funktionieren?

sergeev:


1. global datetime last_dt;


2. die Zeit richtig einstellen

datetime dt=StrToTime(H+": "+M+": "+S);


3.

if (TimeCurrent()>=dt && last_dt<dt) // es ist die richtige Zeit und es ist der nächste Tag

{

//Offener Auftrag

if (ticket>0) last_dt=TimeCurrent(); // Erinnerung an die Öffnungszeit

}