Wie programmiert man? - Seite 84

 

Kauf und Verkauf an den 100ern

Zamanib,

Ich verstehe, was Sie geschrieben haben, aber ich sehe nicht, wie Sie mit Gewinn abschließen.

Dies sieht für mich wie ein Hedge-Typ EA.

Es gibt mehrere von denen in forex-tsd,

und Sie müssen nicht Martingale.

Groß sein

 
european:
Kann jemand Ideen/Code mitteilen, wie man eine Order zum TakeProfit-Wert schließt?

Aus irgendeinem Grund 'TakeProfit' in OrderSend() Funktion funktioniert nicht immer auf Short/Verkaufsaufträgen in MT4, obwohl es gut in Long/Kaufauftaufträgen funktioniert.

Ich habe einen Code geschrieben, der den TakeProfit-Wert der Order mit dem aktuellen Preis vergleicht, aber er funktioniert nicht richtig. Hat jemand eine Idee?

euro

Long-Aufträge werden zum "Bid"-Kurs geschlossen, während Short-Aufträge zum "Ask"-Kurs geschlossen werden.

 
Big Be:
Zamanib,

Ich verstehe, was Sie geschrieben haben, aber ich sehe nicht, wie Sie mit Gewinn abschließen.

Dies sieht für mich wie ein Hedge-Typ EA.

Es gibt mehrere von denen in forex-tsd,

und Sie müssen nicht Martingale.

Großer Be

Ich sehe den Markt bewegen sich in Wellen nach oben und unten einige Woche erhalten Sie 2 Zyklen nach oben / unten habe ich eine andere stratey, wenn es Trend. ich Handel manualy

Bitte verweisen Sie mich auf die Hedge-EA. Ich sehe viel davon. aber nicht, was genau das, was ich will.

 

Code oder Plattformproblem?

ralph.ronnquist:
Long-Positionen werden zum Geldkurs geschlossen, während Short-Positionen zum Briefkurs geschlossen werden.

Danke für die Antwort.

Aus irgendeinem Grund funktioniert mein Code nicht:

if (OrderSelect(orderNo, SELECT_BY_TICKET)==true) {

if (OrderType() == OP_BUY && Close[0] >= OrderTakeProfit()) CloseOrder(orderNo);

if (OrderType() == OP_SELL && Close[0] <= OrderTakeProfit()) CloseOrder(orderNo); }

Für einen Ratschlag wäre ich sehr dankbar.

Euro

 
european:
Vielen Dank für Ihre Antwort.

Aus irgendeinem Grund funktioniert mein Code nicht:

if (OrderSelect(orderNo, SELECT_BY_TICKET)==true) {

if (OrderType() == OP_BUY && Close[0] >= OrderTakeProfit()) CloseOrder(orderNo);

if (OrderType() == OP_SELL && Close[0] <= OrderTakeProfit()) CloseOrder(orderNo); }

[/PHP]

I would be grateful for advice.

euro

Richtig; "Close[0]" ist der "Bid"-Kurs, der nicht der Kurs ist, gegen den ein OP_SELL geschlossen wird. Ein OP_SELL wird gegen den "Ask"-Kurs geschlossen, der einige wenige Pips (aka Spread) über dem "Bid"-Kurs liegt.

Wenn Ihr EA läuft, ist der "Bid"-Kurs auch als Variable mit dem Namen "Bid" und der "Ask"-Kurs als Variable mit dem Namen "Ask" verfügbar. Der Codeschnipsel sollte also besser so aussehen:

[PHP]if (OrderSelect(orderNo, SELECT_BY_TICKET)==true) {

if (OrderType() == OP_BUY && Bid >= OrderTakeProfit()) CloseOrder(orderNo);

if (OrderType() == OP_SELL && Ask <= OrderTakeProfit()) CloseOrder(orderNo); }

 

Bitte helfen Sie im Code, danke...

Hallo,

Ich bin neu im Schreiben von EA, ich habe das Folgende versucht, aber bekam einen Fehler "Ungültiges Ticket für OrderModify-Funktion", Kann jemand bitte einen Blick darauf werfen und helfen? Vielen Dank im Voraus.

void ModifyHedgeSL(int SL) {

if (SL<1) return;

bool bres;

double sl,openadj;

if (lastopenbuy==1 && lastopensell==0) {openadj=Ask-Bid;} else {openadj=0;}

for (int i = 0; i < OrdersTotal(); i++) {

OrderSelect (i, SELECT_BY_POS,MODE_TRADES);

if ( OrderSymbol() == Symbol() || OrderMagicNumber() == expertId && OrderType() == OP_BUY )

{

sl = GetLastLongOpenPrice()-openadj-SL*Point;

bres = OrderModify (OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, White);

if (bres) Print("Modifing Hedge BUY completed");

if (!bres) Print("Fehler beim Ändern der Hedge BUY-Order : ",ErrorDescription(GetLastError()));

}

if ( OrderSymbol() == Symbol() || OrderMagicNumber() == expertId && OrderType() == OP_SELL )

{

sl = GetLastShortOpenPrice()-openadj+SL*Point;

bres = OrderModify (OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, Gold);

if (bres) Print("Modifing Hedge SELL completed");

if (!bres) Print("Fehler beim Ändern der Hedge SELL Order: ",ErrorDescription(GetLastError()));

}

}

zurück;

}

double GetLastLongOpenPrice() {

int ord;

double LastLongOpenPrice=0;

//----

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

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if (OrderSymbol() == Symbol() && OrderMagicNumber()==expertId && OrderType() == OP_BUY)

{

LastLongOpenPrice=OrderOpenPrice();

}

}

if (LastLongOpenPrice>0) {return(LastLongOpenPrice);}

sonst {return(-1);}

}

 

Wie codiere ich Kauf-/Verkaufsaufträge, wenn der SL erreicht ist?

Wenn ich zum Beispiel 1 Lot EUR/JPY zu 164,30 kaufe und SL bei 164,00.

Wenn der SL erreicht wird, erteile ich einen weiteren Kaufauftrag zum gleichen Preis, 164,30, mit dem gleichen SL bei 164 und mit mehr Lots, beispielsweise 1,5. Wenn dann der SL wieder erreicht wird, wird ein weiterer Kaufauftrag erteilt, um 2 Lots zum gleichen Preis mit dem gleichen SL zu kaufen.

Gibt es dafür einen Code? Vielen Dank!

 
boostrade:
Wenn ich zum Beispiel 1 Lot EUR/JPY zu 164,30 und Sl zu 164,00 kaufe.

Wenn der SL erreicht wird, erteile ich einen weiteren Kaufauftrag zum gleichen Preis, 164,30, mit dem gleichen SL bei 164 und mit mehr Lots, beispielsweise 1,5. Wenn dann der SL wieder getroffen wird, wird ein weiterer Kaufauftrag erteilt, um 2 Lots zum gleichen Preis mit dem gleichen SL zu kaufen.

Gibt es dafür einen Code? Vielen Dank!

Sehen Sie sich diesen Thread über Frank EA https://www.mql5.com/en/forum an.

Ich denke, das ist es, was Sie brauchen, oder Sie können es als Beispiel verwenden.

 

ok

newdigital:
Schauen Sie sich diesen Thread über Frank EA https://www.mql5.com/en/forum Ich denke, es ist, was Sie brauchen, oder Sie können es als Beispiel verwenden.

tks viel newdigital, alle Fragen werde ich hier platzieren. tks wieder.

 

TP-Ausgabe

if (OrderSelect(orderNo, SELECT_BY_TICKET)==true) {

if (OrderType() == OP_BUY && Bid >= OrderTakeProfit()) CloseOrder(orderNo);

if (OrderType() == OP_SELL && Ask <= OrderTakeProfit()) CloseOrder(orderNo); }

Ralph,

Wie Sie sehen können, rufe ich eine separate Funktion CloseOrder() auf, in der ich 'Ask' und 'Bid' verwendet habe, wie Sie empfehlen, aber das Problem besteht immer noch.

// Funktion CloseOrder **********************************************************

bool CloseOrder(int orderT) {

double sA;

if (OrderSelect(orderT, SELECT_BY_TICKET)==true) {

if (OrderType() == OP_BUY) sA = Bid;

sonst sA = Ask;

bool bClosed = OrderClose(orderT,OrderLots(),sA,0,CLR_NONE);

if (bClosed == 1) {

pTrades = 0; return(1); }

sonst return(0); }}

**********************************************************

Ich hatte gehofft, dass es garantiert, dass der Handel geschlossen wird, sobald der TP erreicht ist, aber das ist nicht der Fall, siehe beigefügtes Diagramm, in dem die Short-Order bei 104,03 mit einem TP von 103,79 eröffnet wurde. Obwohl der Kurs den TP erreicht hat, wurde die Order nicht geschlossen.

Dateien:
tp_failed.jpg  32 kb