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
Gibt die Nummer des Tickets zurück, das dem Auftrag vom Handelsserver zugewiesen wurde, oder -1, wenn dies fehlgeschlagen ist. Um zusätzliche Fehlerinformationen zu erhalten, muss man die Funktion GetLastError() aufrufen.
Anmerkungen:
Bei der Eröffnung eines Marktauftrags (OP_SELL oder OP_BUY) können nur die letzten Preise von Bid (für Verkauf) oder Ask (für Kauf) als offener Preis verwendet werden. Wird die Operation mit einem anderen Wertpapier als dem aktuellen durchgeführt, muss die Funktion MarketInfo() mit dem Parameter MODE_BID oder MODE_ASK verwendet werden, um die neuesten Kurse für dieses Wertpapier zu erhalten. Berechnete oder nicht normalisierte Preise können nicht angewendet werden. Wenn der angeforderte offene Preis nicht im Preis-Thread vorhanden ist oder nicht entsprechend der Anzahl der Nachkommastellen normalisiert wurde, wird der Fehler 129 (ERR_INVALID_PRICE) erzeugt. Wenn der angeforderte offene Preis völlig veraltet ist, wird der Fehler 138 (ERR_REQUOTE) unabhängig vom Slippage-Parameter erzeugt. Wenn der angefragte Preis veraltet, aber im Thread vorhanden ist, wird die Position zum aktuellen Preis eröffnet, und zwar nur, wenn der aktuelle Preis innerhalb der Spanne vonPreis+Slippage liegt.
StopLoss- und TakeProfit-Niveaus dürfen nicht zu nahe am Markt liegen. Der Mindestabstand der Stopp-Levels in Punkten kann mit der Funktion MarketInfo() mit dem Parameter MODE_STOPLEVEL ermittelt werden. Bei fehlerhaften oder nicht normierten Haltestellenwerten wird der Fehler 130 (ERR_INVALID_STOPS) erzeugt.
Bei der Platzierung eines schwebenden Auftrags darf der offene Preis nicht zu nahe am Markt liegen. Der minimale Abstand des schwebenden Kurses vom aktuellen Markt in Punkten kann mit der Funktion MarketInfo() mit dem Parameter MODE_STOPLEVEL ermittelt werden. Im Falle eines falschen Eröffnungskurses eines schwebenden Auftrags wird der Fehler 130 (ERR_INVALID_STOPS) erzeugt.
Die Anwendung der Ablaufzeit für ausstehende Aufträge kann bei einigen Handelsservern deaktiviert werden. Wenn in diesem Fall ein Wert ungleich Null imAblaufparameter angegeben wird, wird der Fehler 147 (ERR_TRADE_EXPIRATION_DENIED) erzeugt.
Auf einigen Handelsservern kann die Gesamtzahl der offenen und schwebenden Aufträge begrenzt sein. Wenn dieses Limit überschritten wurde, wird keine neue Position eröffnet (oder keine Pending Order platziert) und der Trade Server gibt den Fehler 148 (ERR_TRADE_TOO_MANY_ORDERS) zurück.
//--- Eingabeparameter
extern int period=16;
extern int porog=50;
extern double lot=1;
extern inttern k=5000;
extern bool pl=true;
//+------------------------------------------------------------------+
//| Experten-Initialisierungsfunktion |
//+------------------------------------------------------------------+
int init()
{
//----
//----
zurück(0);
}
//+------------------------------------------------------------------+
//| Experten-Deinitialisierungsfunktion |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
zurück(0);
}
//+------------------------------------------------------------------+
//| Expertenstartfunktion |
//+------------------------------------------------------------------+
int start()
{
double bs=NormalizeDouble(iCustom(Symbol(),0, "Aver",period,0,0),Digits);
double ss=NormalizeDouble(iCustom(Symbol(),0, "Aver",period,1,0),Digits);
double tpb=NormalizeDouble(bs+(bs-ss),Digits);
double tps=NormalizeDouble(ss-(bs-ss),Digits);
if(pl==true)double lots=MathMin(AccountFreeMargin()/k,5);
if(pl==false)lots=lot;
if(AufträgeSumme()==0)
{
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,ss,tpb,"",1394,0,Red);//Buy Limit öffnen.
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,bs,tps,"",1394,0,Blue);//Verkaufsstop öffnen.
}
if(AufträgeSumme()==2)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);//Wählen Sie den nächstgelegenen Auftrag.
if(OrderType()==OP_BUYSTOP &&bs<OrderOpenPrice())OrderModify(OrderTicket(),bs,ss,tpb,0,Red);
if(OrderType()==OP_SELLSTOP&&&ss>OrderOpenPrice())OrderModify(OrderTicket(),ss,bs,tps,0,Blue);
if(OrderType()==OP_BUY &&ss>OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red);
if(OrderType()==OP_SELL&&bs<OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red);
OrderSelect(1,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUYSTOP &&bs<OrderOpenPrice())OrderModify(OrderTicket(),bs,ss,tpb,0,Red);
if(OrderType()==OP_SELLSTOP&&&ss>OrderOpenPrice())OrderModify(OrderTicket(),ss,bs,tps,0,Blue);
if(OrderType()==OP_BUY &&ss>OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red);
if(OrderType()==OP_SELL&&bs<OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red);
}
if(AufträgeSumme()==1)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if(Auftragsart()==OP_BUY) {OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red);
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,bs,tps,"",1394,0,Blue);}
if(OrderType()==OP_SELL) {OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red);
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,ss,tpb,",1394,0,Red);}
if(OrderType()==OP_BUYSTOP) {OrderModify(OrderTicket(),bs,ss,tpb,0,Red);
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,bs,tps,"",1394,0,Blue);}
if(OrderType()==OP_SELLSTOP){OrderModify(OrderTicket(),ss,bs,tps,0,Blue);
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,ss,tpb,",1394,0,Red);}
}
zurück(0);
}
//+------------------------------------------------------------------+