Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 608

 
solnce600:

Guten Tag zusammen!

Können Sie mir bitte sagen, wie ich die folgende Bedingung am besten kodieren kann

Wenn alle Kerzen von 1 bis 20 ausnahmslos bärisch sind (die Anzahl der Punkte zwischen der Eröffnung und der Schließung jeder Kerze spielt keine Rolle)

Um eine Bestellung zu eröffnen.

Die einzige Möglichkeit, dies zu tun, besteht darin, einen "Behelfsauftrag" zu schreiben.


Wenn ich es nur "von Hand" schreiben könnte.

if(f) OrderSend(...); // открыть ордер Sell


bool f()
{
   for(int i = 1; i <= 20; i++)
    {
     if(Open[i] < Close[i]) return(false);
    }
    return(true);
}
 
AlexeyVik:

Nun, es sei denn, es wird an Ort und Stelle geschrieben.


Ich danke Ihnen vielmals.
 
fmv_for_a_way:

Bürgerinnen und Bürger, können Sie mir sagen, warum das Alpari-Terminal nicht in der Lage ist, eine Bestellung aufzugeben?

Die Funktion OrderSend sieht wie folgt aus

Es gibt keine Parameter, die gleich Null sind. Ich habe es überprüft.

Der minimale Haltestellen- und Gewinnabstand gemäß den Terminalbedingungen = 0,1.

Das Terminal erzeugt den Fehler 130 und schreibt über einen ungültigen Gewinn oder Stopp.

SL- und TP-Parameter sind 11 bzw. 1 (nach Normalisierung).

Auf den Terminals Aforex, Diven FX, ForexClub, AlfaForex - keine Probleme mit dem gleichen Code.

Bei Buy werden Stop und Take vom Bid-Kurs aus gezählt - das ist einer.

Zweitens: Da die Stoppkurse berechnet werden, müssen sie normalisiert werden. Die frühere Normalisierung von SL und TP ist nichts. Im Handelsauftrag ersetzen Sie dann den nicht-normalisierten Wert des Ausdrucks.

Drittens müssen alle Preise den Handelsanforderungen und -beschränkungen entsprechen. Das StopLevel-Niveau kann beispielsweise größer sein als die Größe des Stop-Auftrags.

 

Bitte teilen Sie uns mit, warum dies der Fall ist.

Es gibt drei Bedingungen (fett gedruckt), bei deren gleichzeitiger Erfüllung ein Auftrag erfolgreich eröffnet wird.

int start()

{

int ot = OrdersTotal();

int index=iHighest(NULL,0,MODE_HIGH,20,1);
int index1=iLowest(NULL,0,MODE_HIGH,20,1);
int index3=iLowest(NULL,0,MODE_HIGH,40,20);

if(Low[index1]==Low[1])

if(High[index]==High[20])

if(Low[index3]==Low[40]

if ( Bid==Low[40])

wenn (ot==0)

OrderSend(Symbol(),OP_SELL,0.1,Bid,1,Ask+1500*Point,Ask-300*Point, "jfh",123 )

PROBLEM

Sobald ich eine vierte Bedingung hinzufüge (rot markiert), wird der Auftrag NUR geöffnet, wenn die vierte Bedingung erfüllt ist.

Diedrei vorherigen Bedingungen werden vom Programm ignoriert.

Ich habe versucht, die Bedingungen über &&.... zu schreiben, was nicht funktioniert.

Wie kann man erreichen, dass der Haftbefehl geöffnet wird, wenn alle vier Bedingungen gleichzeitig erfüllt sind?

Danke.

 
solnce600:

Bitte geben Sie an, warum dies der Fall ist.

Es gibt drei Bedingungen (fett hervorgehoben), die, wenn sie gleichzeitig ausgeführt werden, einen Auftrag erfolgreich eröffnen.

int start()

{

int ot = OrdersTotal();

int index=iHighest(NULL,0,MODE_HIGH,20,1);
int index1=iLowest(NULL,0,MODE_HIGH,20,1);
int index3=iLowest(NULL,0,MODE_HIGH,40,20);

if(Low[index1]==Low[1])

if(High[index]==High[20])

if(Low[index3]==Low[40]

if ( Bid==Low[40])

wenn (ot==0)

OrderSend(Symbol(),OP_SELL,0.1,Bid,1,Ask+1500*Point,Ask-300*Point, "jfh",123 )

PROBLEM

Sobald ich eine vierte Bedingung hinzufüge (rot markiert), öffnet sich der Auftrag NUR, wenn die vierte Bedingung erfüllt ist.

Das Programm ignoriert diedrei vorherigen Bedingungen.

Ich habe versucht, die Bedingungen über &&.... zu schreiben, was nicht funktioniert.

Wie kann man so vorgehen, dass der Haftbefehl bei Erfüllung aller vier Bedingungen sofort eröffnet wird?

Ich danke Ihnen.

Erweitern Sie die geschweiften Klammern, denn der Algorithmus sollte funktionieren.
 
artmedia70:

Bei Buy werden Stop und Take vom Bid-Kurs aus berechnet - das ist einer.

Zweitens: Wenn Sie Stop-Order-Kurse berechnen, müssen diese normalisiert werden. Die Tatsache, dass SL und TP früher normalisiert wurden, ist keine große Sache. Im Handelsauftrag ersetzen Sie dann den nicht-normalisierten Wert des Ausdrucks.

Drittens müssen alle Preise den Anforderungen und Beschränkungen für Handelsgeschäfte entsprechen. Die Höhe von StopLevel kann zum Beispiel größer sein als die Größe der Stop-Order.



auf alpari seit gestern auf Marktausführung umgestellt, d.h.

Zuerst kaufen/verkaufen sl=0;tp=0; dann ändern sl=100;tp=300;

 
AlexeyVik:
Erweitern Sie die geschweiften Klammern, denn der Algorithmus sollte funktionieren.

Ich danke Ihnen.
 
pako:


auf alpari seit gestern auf Marktausführung umgestellt, d.h.

zuerst Kauf/Verkauf sl=0;tp=0; dann Änderung sl=100;tp=300;

Dies ist auch an der gleichen Stelle. Natürlich widerspricht das eine dem anderen nicht. Es zählt die Stop-Orders für Buy von Ask. Er normalisiert sie nicht. Es wird nicht auf die StopLevel-Abstandsgrenze geprüft.

Kurzum: ein Sammelsurium.

 
Toll, Fragen werden gelöscht, toll.
 
pako:


Alpari hat seit gestern auf Marktausführung umgestellt, d.h.

zuerst Kauf/Verkauf sl=0;tp=0; dann Änderung sl=100;tp=300;


Ich danke Ihnen für Ihre Ratschläge. Ich werde mich damit befassen. Bedeutet die Umstellung auf Marktausführung, dass auch schwebende Aufträge mit Nullstopps und Gewinnen platziert und dann geändert werden sollten?