Wie programmiert man? - Seite 80

 
 

Stoploss verstecken

Kann mir jemand sagen, wie man Stoplosses und Trailing Stops in einem EA ausblenden kann? (Ich mag den Gedanken nicht, dass Broker meine Stoplosses oder Trailing Stops sehen, es ist wie ein Ziel für sie). Danke!

 
jturns23:
Kann mir jemand sagen, wie man Stoplosses und Trailing Stops in einem EA ausblenden kann? (Ich mag den Gedanken nicht, dass Broker meine Stoplosses oder Trailing Stops sehen, es ist wie ein Ziel für sie). Vielen Dank!

In Ihrem Code definieren Sie einfach einen Stop- und einen Zielwert.

Dann, nachdem Sie einen Handel platzieren, erhalten Sie den Preis, zu dem Sie den Handel eingegeben haben, und dann mit jedem neuen jeden Tick überprüfen, ob entweder Ihr Stop oder Ihr Ziel erreicht wurde.

Wenn dies der Fall ist, muss der EA die Funktion OrderClose ausführen.

Ich persönlich habe immer noch einen Stop, den der Broker sehen kann, obwohl er 50-100 Pips von der Preisaktion entfernt ist. Auf diese Weise, wenn das Terminal aus irgendeinem Grund nach unten geht, sind Sie zumindest gegen plötzliche Bewegungen geschützt.

Zum Wohl,

Hiachiever

 
jturns23:
Kann mir jemand sagen, wie man Stoplosses und Trailing Stops in einem EA ausblenden kann? (Ich mag die Vorstellung nicht, dass Broker meine Stoplosses oder Trailing Stops sehen, es ist wie ein Ziel für sie). Danke!

Was Sie zu implementieren versuchen, wird meist als "Soft-Stops" bezeichnet, bei denen Sie die P&L dynamisch verfolgen und die Order(n) schließen, wenn das/die gewünschte(n) Ziel(e) erreicht ist/sind - im Gegensatz zu "Hard-Stops", die der Broker sehen und auslösen kann...

Ein gewisser Hard-Stop ist imo unverzichtbar (für das 'Just-in-Case'-Szenario...), aber auch das wird Sie nicht retten, wenn Sie einen völlig skrupellosen Broker haben - wie Fxopen: -

https://www.forex-tsd.com/forum/commercial-talks/9512-complaints-and-brokers-scam#comment_273270

 

eine schwierige Frage!

Liebe alle

Ich bin neu für die Programmierung auf MT4. Ich beendete einen EA-Code, aber wenn ich es getestet, gab es einige Fehler Einer ist, mein Code wollen 4 Aufträge fast zur gleichen Zeit und zum gleichen Preis zu öffnen, aber mein EA nur manchmal kann insgesamt öffnen, aber die anderen Situationen sind, die Aufträge wurden nur einer nach dem anderen und zu unterschiedlichen Preisen geöffnet.

Glauben Sie, dass ich dieses Problem lösen kann, indem ich

if(IsTradeAllowed()==false) Sleep(10000);

Könnten Sie mir helfen, dieses Problem zu lösen?

Vielen Dank im Voraus!

 

Dies ist meine Funktion, um alle Positionen zu schließen. Ich denke, es ist sehr einfach. aber die EA immer verbringen lange Zeit, um alle Positionen zu schließen, was bedeutet, dass der Schlusskurs variieren kann.

Könnten Sie mir helfen, das Problem zu lösen?

Vielen Dank im Voraus!

void close_all_position_now(int total_order)

{

int ticket=0;

double Volumen=0, Preis=0;

for(int i=0;i<gesamte_bestellung;i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)

break;

// OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if (OrderMagicNumber()==magic_number && OrderType()==0)

{

ticket=OrderTicket();

volume=OrderLots();

price=Bid;

OrderClose(ticket,volume,price,slippage,CLR_NONE);

}

else if (OrderMagicNumber()==magic_number && OrderType()==1)

{

ticket=OrderTicket();

volume=OrderLots();

Preis=Ask;

OrderClose(ticket,volume,price, slippage,CLR_NONE);

}

else if(OrderMagicNumber()==magic_number && OrderType()>=2)

{

ticket=OrderTicket();

OrderDelete(ticket);

}

}

}

 
ys16:
... aber der EA braucht immer lange, um alle Positionen zu schließen, was bedeutet, dass der Schlusskurs variieren kann...}

Es gibt nur zwei Möglichkeiten, viele Positionen zum gleichen Preis zu schließen:

1) Sie haben denselben TP (oder SL).

2) Eröffnen Sie eine entgegengesetzte Position mit einer Größe der gesamten Lots, die Sie schließen möchten. Später können Sie einige CloseBy() ausführen.

Wenn Sie mehrere Positionen zum gleichen Preis eröffnen, haben Sie das gleiche Problem: oder Sie verwenden Pendings, oder Sie eröffnen nur eine Position von der Gesamtmenge der Lots, und Sie schaffen eventuell Teilschließungen.

 
Michel:
Es gibt nur zwei Möglichkeiten, viele Positionen zum gleichen Preis zu schließen:

1) Sie haben denselben TP (oder SL).

2) Eröffnen Sie eine entgegengesetzte Position mit einer Größe der gesamten Lots, die Sie schließen möchten. Später können Sie ein CloseBy() ausführen.

Wenn Sie mehrere Positionen zum gleichen Preis öffnen, haben Sie das gleiche Problem: oder Sie verwenden Pendings, oder Sie öffnen nur eine Position von der Gesamtzahl der Lots, und Sie verwalten eventuell Teilschließungen.

Lieber Michel,

Vielen Dank. Wie sieht es mit den Kosten aus? Muss ich für den Spread der entgegengesetzten Positionen bezahlen?

Woran liegt es, dass der EA nicht alle Positionen innerhalb kürzester Zeit schließen kann? liegt es daran, dass die Schließungsaufträge eine gewisse Zeit zur Ausführung benötigen?

Manchmal können die 3 Positionen nach einer Preisänderung geschlossen werden, aber manchmal kann nur 1 Position geschlossen werden.

Haben Sie einige Ressourcen zur MQL4-Programmierung? Ich kannte die Zeitskala für die Ausführung des EA nicht.

Ich kenne mich mit der C-Programmierung aus, weil ich Ingenieur bin, aber mein EA kann nicht vollständig ausführen, was ich programmiert habe.

Wie wäre es mit

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(OrderMagicNumber()==magic_number && OrderType()==OP_BUY)

Glauben Sie, dass diese Art von Funktion eine sehr lange Ausführungszeit benötigt, die länger ist als jeder Zyklus des EA.

 
ys16:
Lieber Michel,

Vielen Dank. Wie sieht es mit den Kosten aus? Muss ich für den Spread der gegenüberliegenden Positionen bezahlen?

Woran liegt es, dass der EA nicht alle Positionen innerhalb kürzester Zeit schließen kann? Liegt es daran, dass die Schließungsaufträge eine gewisse Zeit brauchen, um ausgeführt zu werden?

Manchmal können die 3 Positionen nach einer Preisänderung geschlossen werden, aber manchmal kann nur 1 Position geschlossen werden.

Haben Sie einige Ressourcen zur MQL4-Programmierung? Ich kannte die Zeitskala für die Ausführung des EA nicht.

Ich kenne mich mit der C-Programmierung aus, weil ich Ingenieur bin, aber mein EA kann nicht vollständig ausführen, was ich programmiert habe.

Wie wäre es mit

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(OrderMagicNumber()==magic_number && OrderType()==OP_BUY)

Glauben Sie, dass diese Art von Funktion eine sehr lange Ausführungszeit benötigt, die länger ist als jeder Zyklus von EA.

Viele Broker erlauben ein "Full Hedging", d.h. die verwendete Marge wird auf die Differenz zwischen den Long- und den Short-Positionen berechnet. Daher gibt es keine verbrauchte Marge für eine vollständig abgesicherte Position, und Sie können beide (eine durch die andere) ohne zusätzlichen Spread schließen. Sie verbrauchen also nur einen Spread, wenn Sie eine Position normal schließen oder eine entgegengesetzte Position eröffnen.

Was die Zeit betrifft, so ist die Ausführungszeit des Codes sehr schnell und hat nichts mit der Dealing Desk-Zeit des Brokers zu tun.

 

Experte für Offline-Diagramm

Hallo!

Ich versuche, einen EA auf Offline-Chart (zum Beispiel wie von period_converter erstellt) zu verwenden. Sie erhalten keine Ticks, die while()-Schleife innerhalb verwenden muss. Nach ein paar Minuten zeigt der Offline-Chart jedoch "Waiting for update" an und wird nicht mehr aktualisiert. Ich vermute, dass es sich um eine Art Deadlock handelt, denn wenn ich ein anderes Offline-Diagramm öffne, wird es korrekt aktualisiert, und wenn ich es schließe, ist das ursprüngliche Diagramm eine Zeit lang in Ordnung, bis die nächste Sperre "Warten auf Aktualisierung" auftritt.

Mache ich etwas falsch oder ist das ein Problem von MT4?