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
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?
è 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.
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.
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.
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.
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
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