Se state inserendo un ordine manualmente è possibile valorizzare il campo tramite l'apposita maschera:
Se gli ordini vengono invece aperti da un expert advisor sarà sufficiente valorizzare il parametro comment della funzione OrderSend():
int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)
Potreste però avere l'esigenza di far girare lo stesso expert advisor con settaggi differenti e di voler distinguere gli ordini aperti dalle 2 versioni.
La soluzione è molto semplice: basta dichiarare una variabile esterna di tipo string ed utilizzarla direttamente come parametro comment ogni volta che si utilizza la funzione OrderSend.
extern string comment = "Super Expert Advisor 1";
....
....
start(){
....
OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, Bid + (Stoploss Point), Bid - (TakeProfit * Point), comment, MagicID, 0, Red);
....
}
....
....
start(){
....
OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, Bid + (Stoploss Point), Bid - (TakeProfit * Point), comment, MagicID, 0, Red);
....
}
Con questo piccolo stratagemma sarà sufficiente diversificare la variabile comment quando attaccate l'ea su di un nuovo grafico per avere dei commenti personalizzati.
Di seguito potete scaricare la versione 5 del key level stop & reverse EA con l'aggiunta di questa piccola modifica.
Sorgente: Key_Level_Stop_Reverse_EA_v5_comment.mq4
Eseguibile: Key_Level_Stop_Reverse_EA_v5_comment.ex4
3 commenti:
Ciao Carlo, compilando un EA mi viene dato il seguente messaggio di errore:
')' wrong parameters count
questo mi succede probabilmente perchè nella funzione OrderSend ho inserito al posto del parametro corrispondente allo Stop loss una funzione:
ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,3,StopLoss(),takeprofit,"EA1",e_MagicID,0,Red);
Non è possibile utilizzare una funzione per calcolare lo stoploss e inserirlo poi come parametro stoploss nella funzione Ordersend?
Si è possibile, ovviamente la funzione che richiami deve restituire una variabile dello stesso tipo del parametro in ingresso richiesto.
Mi aspetto quindi che la dichiarazione della tua funzione sia la seguente:
double StopLoss(){
...
...
return(1.4000);
}
Un'altra cosa a cui devi fare attenzione è takeprofit, se è una funzione deve avere le tonde alla fine "takeprofit()", se è una variabile allora è ok così come l'hai scritta.
Ah ok, ora ho capito! Si nell'esempio che ti ho postato prima il takeprofit non è una funzione ma una variabile.
Grazie Carlo. Ho un altro quesito da porti, ma devo cambiare discussione perchè di altra tematica :-)
Posta un commento