Codici di errore - pagina 4

 
 

MT4 - Errore #130 con Ordersend()

Salve, sto cercando di generare un ordine usando OrderSend() in MT4 ma continuo a ricevere l'errore #130. Ho capito che l'errore #130 si riferisce ai livelli di stop-loss o take-profit impostati troppo vicini al prezzo corrente di mercato. Li ho variati senza successo. Ho usato sia valori relativi che effettivi.

1. Utilizzando i valori di take profit e stop loss relativi per un acquisto:

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-50*Point,Ask+50*Point, "Long Breakout",16384,0,Green);

2.Utilizzando i valori effettivi per Stoploss e TakeProfit per un acquisto:

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,StopLoss,TakeProfit, "Long Breakout ",16384,0,Green);

dove:

double StopLoss = NormalizeDouble(StopLoss, Digits);

double TakeProfit = NormalizeDouble(TakeProfit, Digits);

e questi valori sono impostati come valori esterni (es. extern double StopLoss=1.5000, extern double=TakeProfit=1.6000)

Il mio broker è FXCM. Ho provato a moltiplicare i valori di StoplLoss e TakeProfit per 10. Ottengo lo stesso risultato per tutte le coppie di valute.

In ogni caso ottengo l'errore #130. Qualche idea?

Saluti

 

Quando si imposta il take profit per una posizione di acquisto. Il TP è

Bid+(50*Point)

Al contrario di Ask+...

Chris

 

Scusate, sì, colpa mia nel digitare. Tuttavia, il problema persiste temo

 

Prova a mettere un commento o una stampa appena prima della funzione ordersend per stampare i livelli di stoploss e takeprofit. Inoltre, assicurati che lo stoploss/tp sia superiore alla distanza minima.

Mettilo prima dell'invio dell'ordine:

if(StopLoss!=0 && StopLoss<(MarketInfo(Symbol(),MODE_STOPLEVEL)))

{

StopLoss=MarketInfo(Symbol(),MODE_STOPLEVEL);

}

if(TakeProfit!=0 && TakeProfit<(MarketInfo(Symbol(),MODE_STOPLEVEL)))

{

TakeProfit=MarketInfo(Symbol(),MODE_STOPLEVEL);

}

Chris

 
kvhutch:
Ciao, sto cercando di generare un ordine usando OrderSend() in MT4 ma continuo a ricevere l'errore #130. Ho capito che l'errore #130 si riferisce ai livelli di stop-loss o take-profit impostati troppo vicini al prezzo corrente di mercato. Li ho variati senza successo. Ho usato sia valori relativi che effettivi.

1. Utilizzando i valori di take profit e stop loss relativi per un acquisto:

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-50*Point,Ask+50*Point, "Long Breakout",16384,0,Green);

2.Utilizzando i valori effettivi per Stoploss e TakeProfit per un acquisto:

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,StopLoss,TakeProfit, "Long Breakout ",16384,0,Green);

dove:

double StopLoss = NormalizeDouble(StopLoss, Digits);

double TakeProfit = NormalizeDouble(TakeProfit, Digits);

e questi valori sono impostati come valori esterni (es. extern double StopLoss=1.5000, extern double=TakeProfit=1.6000)

Il mio broker è FXCM. Ho provato a moltiplicare i valori di StoplLoss e TakeProfit per 10. Ottengo lo stesso risultato per tutte le coppie di valute.

In ogni caso ottengo l'errore #130. Qualche idea?

Salute

FXCM con 5 cifre... o stai usando FXCM da quale paese?

 

Grazie per le vostre risposte. Sì, ho usato le istruzioni di stampa per controllare i valori di Stop Loss e Take Profit. Sembrava tutto a posto sulla stampa.

Sto usando FXCM nel Regno Unito. Le valute non Yen hanno 5 cifre dopo il decimale (es. GBPUSD: 1.55125). Le croci in yen hanno tre cifre (es. GBPJPY: 132.393). Ho pensato che in questo caso i valori dovrebbero essere moltiplicati per 10.

Saluti

 
kvhutch:
Ho pensato che in questo caso i valori dovrebbero essere moltiplicati per 10. Grazie

Hai qualcosa del genere nella funzione init?

if (Digits == 3 || Digits == 5)

{

Factor = 10;

StopLoss *= 10;

TakeProfit *= 10;

MaxSpread *= 10;

Slippage *=10;

}
 

No, nell'istruzione OrderSend() moltiplico semplicemente i valori Take Profit e StopLoss per 10. Puoi elaborare un po' di più sull'uso di questi valori? Molte grazie

 

Sono solo le variabili esterne moltiplicate per dieci. Li aggiusti per includere le tue variabili. Ma fai solo le variabili che differiscono sui broker a pip frazionari come Stoploss.

Ciò significa che se lo stoploss è inserito come 20 pip nella lista di input, verrà automaticamente regolato a 200 se il broker è frazionario.

Motivazione: