Dannato errore 130 all'inferno

 

Qualcuno sa perché dovrei ricevere l'errore 130, mi sono assicurato che il mio SL sia abbastanza ampio e che sia sul lato giusto del mercato (cioè sotto per un acquisto). Qualsiasi aiuto sarebbe molto apprezzato e un grande sollievo* sigh

if(COMPRARE)
{
if(stoploss > 0) //SL è impostato a 35
realSL = Ask - (stoploss * Point);
se(takeprofit > 0)
realTP = Ask + takeprofit * Point;
//ACQUISTO!
ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, slippage, realSL, realTP, nameEA, 887722,0,Red);

se(biglietto < 0)
Print("OrderSend (",nameEA,") fallito con errore #", GetLastError());
Alert("CODE_TEST: BUY BUY BUY BUY");

Grazie a tutti,

Pat

 
FXpipclash:

Qualcuno sa perché dovrei ricevere l'errore 130, mi sono assicurato che il mio SL sia abbastanza ampio e che sia sul lato giusto del mercato (cioè sotto per un acquisto). Qualsiasi aiuto sarebbe molto apprezzato e un grande sollievo* sigh

if(BUYING)
{
if(stoploss > 0) //SL è impostato a 35
realSL = Ask - (stoploss * Point);
se(takeprofit > 0)
realTP = Ask + takeprofit * Point;
//ACQUISTO!
ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, slippage, realSL, realTP, nameEA, 887722,0,Red);

se(biglietto < 0)
Print("OrderSend (",nameEA,") fallito con errore #", GetLastError());
Alert("CODE_TEST: BUY BUY BUY BUY");

Grazie a tutti,

Pat

prova questo... Penso che tu stia confondendo quando usare Bid e Ask


se(COMPRARE)
{
if(stoploss > 0) //SL è impostato a 35
realSL = Bid-(stoploss * Point);
se(takeprofit > 0)
realTP = Bid+ takeprofit * Point;
//ACQUISTO!
ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, slippage, realSL, realTP, nameEA, 887722,0,Red);

se(biglietto < 0)
Print("OrderSend (",nameEA,") fallito con errore #", GetLastError());
Alert("CODE_TEST: BUY BUY BUY BUY");



************************************

Regola empirica... se entri in ask, esci con bid, se entri in bid esci con ask


LongStop = Bid-(stoploss*Point)

LongLimit =Bid+(limit*Point)

LongEntry= ASK

LongTrail = Bid-(stoploss*Point)



ShortStop = Ask+(stoploss*Point)

ShortLimit =Ask-(limite*Punto)

ShortEntry= BID

ShortTrail = Ask+(stoploss*Point)




Seawolf

 
seawolf wrote >>

prova questo... Penso che tu stia confondendo quando usare Bid e Ask

if(BUYING)
{
if(stoploss > 0) //SL è impostato a 35
realSL = Bid-(stoploss * Point);
se(takeprofit > 0)
realTP = Bid+ takeprofit * Point;
//ACQUISTO!
ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, slippage, realSL, realTP, nameEA, 887722,0,Red);

se(biglietto < 0)
Print("OrderSend (",nameEA,") fallito con errore #", GetLastError());
Alert("CODE_TEST: BUY BUY BUY BUY");

************************************

Regola empirica... se entri sull'ask, esci con il bid, se entri sul bid esci con l'ask

LongStop = Bid-(stoploss*Point)

LongLimit =Bid+(limit*Point)

LongEntry= ASK

LongTrail = Bid-(stoploss*Point)

ShortStop = Ask+(stoploss*Point)

ShortLimit =Ask-(limite*Punto)

ShortEntry= BID

ShortTrail = Ask+(stoploss*Point)

Seawolf

Grazie per la tua risposta seawolf, quindi nel mio pezzo di codice originale, se sto per comprare, non dovrei usare il prezzo ask per il mio calcolo, perché quello sarà il prezzo che dovrò pagare?

 
Chi è il vostro broker?
 

è il prezzo che paghi entrando, ma devi coprire lo spread quindi paghi l'altro prezzo uscendo... il fatto che tu stia usando l'ask per entrare e uscire è assolutamente sbagliato.


Segui la regola empirica che ti ho dato e tutto funzionerà bene... So che può essere molto confuso, ecco perché lo tengo scritto sulla mia lavagna bianca e dopo molti anni di trading e di programmazione, faccio ancora riferimento ad esso quasi quotidianamente. Ho trovato molti articoli che non ci azzeccano nemmeno, quindi non sentitevi in colpa.

 

Ciao

Anche se il codice originale è sbagliato perché stai usando Bid invece di Ask per comprare, dovrebbe comunque funzionare se lo stoploss è veramente di 35 punti. Assicurati che il sistema su cui stai girando non sia passato a 5 decimali altrimenti lo stoploss dovrebbe essere 350 punti. Interbank stava eseguendo 5 decimali sulla demo ma 4 sul sistema live ad un certo punto.

 
FXpipclash:

Qualcuno sa perché dovrei ricevere l'errore 130, mi sono assicurato che il mio SL sia abbastanza ampio e che sia sul lato giusto del mercato (cioè sotto per un acquisto). Qualsiasi aiuto sarebbe molto apprezzato e un grande sollievo* sigh

if(BUYING)
{
if(stoploss > 0) //SL è impostato a 35
realSL = Ask - (stoploss * Point);
if(takeprofit > 0)
realTP = Ask + takeprofit * Point;
//BUYING!
ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, slippage, realSL, realTP, nameEA, 887722,0,Red);

if(ticket < 0)
Print("OrderSend (",nameEA,") failed with error #", GetLastError());
Alert("CODE_TEST: BUY BUY BUY");

Grazie a tutti,

Pat

Posso affermare categoricamente che Seawolf e Ruptor stanno parlando a vanvera.

Per un ordine OP_BUY, è assolutamente corretto utilizzare il prezzo di Ask per generare il prezzo di entrata e gli stop.

Quello che dovete fare è controllare i valori dei vostri stop usando un'istruzione Print("realSL =, "DoubleToStr(realSL,Digits)," realTP=",DoubleToStr(realTP,Digits)) direttamente prima dell'invio del vostro ordine per assicurarvi che i valori siano come vi aspettate. Se sono come ti aspetti, allora dovresti controllare i valori accettabili usando la funzione MarketInfo() con l'identificatore MODE_STOPLEVEL.

 
Stai usando un broker a 5 cifre? Se è così, la tua variabile "Punto" renderà tutti i tuoi SL/TP 1/10 del valore reale.
 
cloudbreaker wrote >>

Posso affermare categoricamente che Seawolf e Ruptor stanno parlando a vanvera.

Per un ordine OP_BUY, è assolutamente corretto utilizzare il prezzo Ask per generare il prezzo di entrata e gli stop.

Quello che dovete fare è controllare i valori dei vostri stop usando un'istruzione Print("realSL =, "DoubleToStr(realSL,Digits)," realTP=",DoubleToStr(realTP,Digits)) direttamente prima dell'invio del vostro ordine per assicurarvi che i valori siano come vi aspettate. Se sono come ti aspetti, allora dovresti controllare i valori accettabili usando la funzione MarketInfo() con l'identificatore MODE_STOPLEVEL.

Grazie cloudbreaker, sapevo di avere ragione con il pagamento dell'ask, non c'è scritto da nessuna parte che sto pagando anche l'ask in uscita dal trade, stampare il valore SL è una grande idea, grazie per tutti i tuoi input.

 
eacoder wrote >>
Stai usando un broker a 5 cifre? Se è così, la tua variabile "Punto" renderà tutti i tuoi SL/TP 1/10 del valore reale.

No, sto usando FXDD che è un broker a 4 cifre, il tutto è piuttosto misterioso per me, proverò

 
FXpipclash wrote >>

Grazie Cloudbreaker, sapevo di essere nel giusto con il pagamento dell'ask, non c'è scritto da nessuna parte che sto pagando anche l'ask in uscita dal trade, stampare il valore SL è una grande idea, grazie per tutti i tuoi input.

Va bene Cloud, questo mi stava dando del filo da torcere ma penso di averlo risolto, per qualche motivo sia il TP che lo SL venivano retrocessi come 1.0 (troppo piccolo) così ho tracciato le mie variabili attraverso l'intero processo e ho notato che ho dichiarato i valori takeprofit e stoploss come doppi e i valori realSL realTP come interi, cambiando realTP & realSL in doppi ho risolto il problema, grazie ancora.

Motivazione: