Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Restituisce il numero del biglietto assegnato all'ordine dal server commerciale o -1 se fallisce. Per ottenere ulteriori informazioni sugli errori, si deve chiamare la funzione GetLastError().
Note:
All'apertura di un ordine di mercato (OP_SELL o OP_BUY), solo gli ultimi prezzi di Bid (per la vendita) o Ask (per l'acquisto) possono essere usati come prezzo aperto. Se l'operazione viene eseguita con un titolo diverso da quello corrente, la funzione MarketInfo() deve essere usata con il parametro MODE_BID o MODE_ASK per ottenere le ultime quotazioni di questo titolo. Il prezzo calcolato o non normalizzato non può essere applicato. Se non c'è stato il prezzo aperto richiesto nel thread del prezzo o non è stato normalizzato secondo la quantità di cifre dopo la virgola, verrà generato l'errore 129 (ERR_INVALID_PRICE). Se il prezzo aperto richiesto è completamente superato, l'errore 138 (ERR_REQUOTE) sarà generato indipendentemente dal parametro slippage. Se il prezzo richiesto non è aggiornato, ma presente nel thread, la posizione sarà aperta al prezzo corrente e solo se il prezzo corrente si trova all'interno della gamma diprezzo+-slippage.
I livelli di StopLoss e TakeProfit non possono essere troppo vicini al mercato. La distanza minima dei livelli di stop in punti può essere ottenuta utilizzando la funzione MarketInfo() con il parametro MODE_STOPLEVEL. In caso di livelli di arresto errati o non normalizzati, verrà generato l'errore 130 (ERR_INVALID_STOPS).
All'immissione di un ordine pendente, il prezzo aperto non può essere troppo vicino al mercato. La distanza minima del prezzo in sospeso da quello corrente del mercato in punti può essere ottenuta usando la funzione MarketInfo() con il parametro MODE_STOPLEVEL. In caso di falso prezzo aperto di un ordine pendente, verrà generato l'errore 130 (ERR_INVALID_STOPS).
L'applicazione del tempo di scadenza dell'ordine pendente può essere disabilitata in alcuni server di trading. In questo caso, quando viene specificato un valore diverso da zero nel parametroexpiration, viene generato l'errore 147 (ERR_TRADE_EXPIRATION_DENIED).
Su alcuni server di trading, la quantità totale di ordini aperti e in sospeso può essere limitata. Se questo limite è stato superato, nessuna nuova posizione sarà aperta (o nessun ordine pendente sarà piazzato) e il server di trading restituirà l'errore 148 (ERR_TRADE_TOO_MANY_ORDERS).
//--- parametri di ingresso
extern int period=16;
extern int porog=50;
extern double lot=1;
extern inttern k=5000;
extern bool pl=true;
//+------------------------------------------------------------------+
//| funzione di inizializzazione dell'esperto |
//+------------------------------------------------------------------+
int init()
{
//----
//----
ritorno(0);
}
//+------------------------------------------------------------------+
//| funzione di deinizializzazione esperto |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
ritorno(0);
}
//+------------------------------------------------------------------+
//| funzione di inizio esperto |
//+------------------------------------------------------------------+
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;
se(OrdiniTotali()==0)
{
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,ss,tpb,"",1394,0,Red);//Open Buy Limit.
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,bs,tps,"",1394,0,Blue);//Open Sell Stop.
}
se(OrdiniTotali()==2)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);//seleziona l'ordine più vicino.
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);
}
se(OrdiniTotali()==1)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==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);}
}
ritorno(0);
}
//+------------------------------------------------------------------+