Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
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
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?
euroLong-Aufträge werden zum "Bid"-Kurs geschlossen, während Short-Aufträge zum "Ask"-Kurs geschlossen werden.
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 BeIch 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?
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
Vielen Dank für Ihre Antwort.
Aus irgendeinem Grund funktioniert mein Code nicht:
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.
euroRichtig; "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!
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
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 (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.