{
if(OrdersTotal()==0)
{
double up= iIchimoku (NULL, 5,9,26,52,3,0);
double down= iIchimoku (NULL,5,9,26,52,4,0);
if (MathMin (up,down) < Bid )
OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);
}
}
Es ist eine Lösung, aber es ist nicht die beste Lösung, wie Sie erfahren werden, wenn Sie fortfahren.
Aber es kann Ihnen zum jetzigen Zeitpunkt helfen.
Das ist eine Lösung, aber es ist nicht die beste Lösung, wie Sie erfahren werden, wenn Sie fortfahren.
Aber es kann Ihnen zu diesem Zeitpunkt helfen.
ja, es hat das Problem im Thema gelöst, aber wenn es schließt, erstellt es auch einen neuen Auftrag, wenn es noch über der Wolke ist. Könnten Sie mir helfen, dieses neue Problem zu lösen?
Wie kann ich alle neuen Aufträge blockieren, nachdem ich den ersten erfolgreich abgeschlossen habe?
Nun, Sie können ein Kennzeichen erstellen.
Dann können Sie den Wert auf eins setzen, wenn die Bestellung aufgegeben wird.
{
if(order==0)
{
double up= iIchimoku (NULL, 5,9,26,52,3,0);
double down= iIchimoku (NULL,5,9,26,52,4,0);
if (MathMin (up,down) < Bid )
OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);
order=1;
}
}
Aber es wird Ihnen die Warnung geben, dass Sie den Rückgabewert der Funktion ordersend überprüfen müssen.
{
if(order==0)
{
double up= iIchimoku (NULL, 5,9,26,52,3,0);
double down= iIchimoku (NULL,5,9,26,52,4,0);
if (MathMin (up,down) < Bid )
int ticket=OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);
{
if(ticket!=-1)
{
order=1;
}
}
}
}
Warum wird das Flag nicht gesetzt, je nachdem, ob die Bestellung erfolgreich aufgegeben wurde oder nicht?
In diesem Fall, wenn Ihre Bestellung fehlschlägt, wird es weiter versucht.
ja, es hat das Problem im Thema gelöst, aber wenn es schließt, erstellt es auch einen neuen Auftrag, wenn es noch über der Wolke ist. Könnten Sie mir helfen, dieses neue Problem zu lösen?
Wie blockiere ich alle neuen Aufträge, nachdem ich den ersten erfolgreich geschlossen habe?
Wie Marco bereits angedeutet hat, werden Sie wahrscheinlich auf weitere Probleme stoßen.
Was ist, wenn es einen offenen Auftrag für ein anderes Symbol gibt?
Was ist, wenn es Aufträge gibt, die von einem anderen EA gesteuert werden?
Was ist, wenn es schwebende Aufträge gibt?
Was ist, wenn der Trigger noch aktiv ist, wenn Sie den ersten schließen?
Um die letzte Frage zu beantworten, könnten Sie ein Flag verwenden, wie Marco vorgeschlagen hat. Denken Sie nur daran, dass Sie entscheiden müssen, wann Sie die Flagge zurücksetzen, da der EA sonst nie wieder einen anderen Handel tätigt.
Alternativ könnten Sie auf eine Kreuzung/einen Zustandswechsel von unterhalb/in der Wolke zu oberhalb der Wolke prüfen.
Ich habe Ihren Code eingegeben und er sagt, dass das Ticket nicht deklariert ist, also habe ich es deklariert, aber jetzt öffnet der Code mehrere Bestellungen, genau wie vorher. Wie soll ich jetzt vorgehen?
{
bool order= 0;
int ticket;
if(order==0)
{
double up= iIchimoku (NULL, 5,9,26,52,3,0);
double down= iIchimoku (NULL,5,9,26,52,4,0);
if (MathMax (up,down) < Bid )
int ticket= OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);
{
if( ticket!=1)
{
order=1;
}
}
}
}
Ich habe Ihren Code eingegeben und er sagt, dass das Ticket nicht deklariert ist, also habe ich es deklariert, aber jetzt öffnet der Code mehrere Aufträge, genau wie vorher. Wie kann ich jetzt vorgehen?
{
bool order= 0;
int ticket;
if(order==0)
{
double up= iIchimoku (NULL, 5,9,26,52,3,0);
double down= iIchimoku (NULL,5,9,26,52,4,0);
if (MathMax (up,down) < Bid )
int ticket= OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);
{
if( ticket!=1)
{
order=1;
}
}
}
}
Es würde Ihnen wahrscheinlich helfen, wenn Sie etwas über den Anwendungsbereich von Variablen lesen würden.
Was passiert mit dem Wert der Bestellung jeden Tick?
Sie deklarieren das Ticket also mit dem booleschen Flag.
int ticket;
Und dann
{
if(order==0)
{
double up= iIchimoku (NULL, 5,9,26,52,3,0);
double down= iIchimoku (NULL,5,9,26,52,4,0);
if (MathMax (up,down) < Bid )
ticket= OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);
{
if( ticket>0)
{
order=1;
}
}
}
}
Sie können sie nicht in OnTick() deklarieren, da ihr Wert natürlich bei jedem Tick zurückgesetzt wird.
Beachten Sie auch, dass OrderSend entweder die Ticketnummer zurückgibt, oder -1 minus eins, wenn es fehlschlägt.
Ich habe
bool Bestellung und
int ticket
auf globale Variablen und den Rest des Codes auf OnTick gesetzt, aber es wird immer noch kein Eintrag gemacht
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Ich bin neu in mql4 und dieser Code öffnet mehrere Aufträge, wie kann ich es vermeiden? es sollte nur 1 Auftrag öffnen, bis es schließt,
Wie kann ich das tun?
Danke
{
double up= iIchimoku (NULL, 5,9,26,52,3,0);
double down= iIchimoku (NULL,5,9,26,52,4,0);
if (MathMin (up,down) < Bid )
OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);
}