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
Vangrosh
grazie per l'input
puoi aiutarmi a capire
è corretto
Faccio un EA con una traccia automatica
if(OrderType()==OP_SELL && OrderSymbol()==Symbol())
{se (OrderStopLoss()==0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red); // piazza un TP e SL
}
if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) // piazza il TP
{
if(OrderStopLoss()>(Ask+Point*TrailingStop)+Point) // controllare vero
{
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red)) // se vero modificare ordine
Print("Error_Modify - ",GetLastError());
else str=StringConcatenate("\n Il mio numero di ticket è ", OrderTicket(), " e il mio stop loss è ", DoubleToStr(Ask+Point*TrailingStop,Digits)); // nuovo codice
}
}
}
Ecco cosa ho scritto in un altro post, spiegando il diverso approccio.
>>Ecco una facile correzione semplicemente controllando che il nuovo prezzo di stopploss sia almeno 1 punto o maggiore del vecchio stoploss. Basta fare il contrario per un ordine di vendita.
Ecco la funzione completa che uso. Ora che ci penso avrei potuto usare un nome migliore di nextStopLoss, e dovrei anche aggiungere il controllo degli errori a OrderModify().
Anche la mia funzione Trailing Stop è in un EA che può avere più ordini aperti allo stesso tempo, ecco perché ha quei parametri così posso aggiornare il Trailing Stop su più ordini allo stesso tempo.
Poi nella mia funzione start() ho:
Ho lasciato le altre chiamate di funzione lì solo per farvi vedere che mi piace dividere il mio codice in funzioni specifiche il più possibile. Rende le cose molto più facili.
Buona fortuna con il tuo EA.
Ecco cosa ho scritto in un altro post, spiegando il diverso approccio.
>>Ecco una facile correzione semplicemente controllando che il nuovo prezzo di stoploss sia almeno 1 punto o maggiore del vecchio stoploss. Basta fare il contrario per un ordine di vendita.
Ecco la funzione completa che uso. Ora che ci penso avrei potuto usare un nome migliore di nextStopLoss, e dovrei anche aggiungere il controllo degli errori a OrderModify().
Anche la mia funzione Trailing Stop è in un EA che può avere più ordini aperti allo stesso tempo, ecco perché ha quei parametri così posso aggiornare il Trailing Stop su più ordini allo stesso tempo.
Poi nella mia funzione start() ho:
Ho lasciato le altre chiamate di funzione lì solo per farvi vedere che mi piace dividere il mio codice in funzioni specifiche il più possibile. Rende le cose molto più facili.
Buona fortuna con il tuo EA.
grazie - sembra buono
quindi metti la tua funzione start() in fondo all'EA
Anch'io ho un problema con un errore tremendo. Il fatto è che non ho stop loss o take profit, semplicemente non riesce a piazzare l'ordine pendente, un sacco di pips lontano dal mercato dove non ci dovrebbero essere problemi...
Il problema con il buon 130 è che indica (uno di) una classe o un gruppo di errori e non porta a nessuna soluzione immediata.
Si può anche risolvere un problema e il suo ancora lì
L'unica cosa che si verifica qui è un errore di battitura?
Forse state inserendo un Buy Limit sopra l'Ask, quando intendevate un ordine Buy Stop?
FWIW
-BB-
Il problema con il buon 130 è che indica (uno di) una classe o un gruppo di errori e non porta a nessuna correzione immediata.
Si può anche risolvere un problema ed è ancora lì
L'unica cosa che si verifica qui è un errore di battitura?
Forse state inserendo un Buy Limit sopra l'Ask, quando intendevate un ordine Buy Stop?
FWIW
-BB-
Ho una funzione che seleziona il tipo di operazione:
come questo:
09:28:46 2008.06.09 00:00 ForexCraft2 EURGBP,Daily: Apertura Sell sul livello 2 per pilone 0 @ 0.8024 mentre bid = 0.8016
09:28:46 2008.06.09 00:00 ForexCraft2 EURGBP,Daily: OrderSend errore 130
09:28:46 2008.06.09 00:00 ForexCraft2 EURGBP,Daily: Errore ReliableOrderSend : 130: Stop non valido.
Ciao TheEconomist
solo alcune cose veloci...
1. Non vedere alcuna normalizzazione su ToCompare, a meno che WhatOperation() non sia garantito per avere normato l'effettivo dato.
2. Le doppie comps hanno problemi - ad esempio, 'fallimento della dichiarazione condizionale... [A malincuore] se ( 1.4225 > 1.4225) NON è TRUE!!!!!!'
3. Segui la guida in https://book.mql4.com/appendix/limits
Saluti
Ho studiato questo post nella speranza di risolvere il mio errore in 'Domanda veloce' con 130. La funzione di invio dell'ordine è presente così come le voci del giornale con la funzione Print, qualcuno di voi sa cosa sta succedendo?
Grazie,
Ragazzo Bauer
.
come visto su .../24681
1. StopLevel= MarketInfo(Symbol(),MODE_STOPLEVEL);
SL,TP devono essere almeno punti StopLevel lontano da Bid
Vedi sotto (**)
2. ACCTxx = NormalizeDouble(Ask ..(..), Digits);
3. Print("Bid=",DoubleToString(Ask,Digits),", Ask=",DoubleToString(Bid,Digits));
4. Print ("Stop Loss Value",DoubleToString( ACCTSL, Digits),", stopLoss=",stopLoss);
5. Print ("Take Profit Value", DoubleToString(ACCTTP,Dig its),", takeProfit=",takeProfit);
Perché DoubleToString()? Print() visualizza solo QUATTRO CIFRE
Btw, io farei anche somewere almeno una volta Print("MyDig=",MyDig); Perché? Può sembrare insignificante, ma sareste stupiti dai divertimenti che circondano cose così semplici!
5. Tutti i vostri problemi possono essere facilmente risolti ottenendo tutte le informazioni disponibili a portata di mano e visualizzandole.
Poi, con la buona vecchia carta + matita si può vedere dove sono le incomprensioni.
(**)
Rif: https://book.mql4.com/appendix/limits
StopLevel Limitazione della distanza minima.
Un'operazione di compravendita non sarà eseguita se una delle seguenti condizioni è disturbata.
.
come visto su .../24681
1. StopLevel= MarketInfo(Symbol(),MODE_STOPLEVEL);
SL,TP devono essere almeno punti StopLevel lontano da Bid
Vedi sotto (**)
2. ACCTxx = NormalizeDouble(Ask ..(..), Digits);
3. Print("Bid=",DoubleToString(Ask,Digits),", Ask=",DoubleToString(Bid,Digits));
4. Print ("Stop Loss Value",DoubleToString( ACCTSL, Digits),", stopLoss=",stopLoss);
5. Print ("Take Profit Value", DoubleToString(ACCTTP,Dig its),", takeProfit=",takeProfit);
Perché DoubleToString()? Print() visualizza solo QUATTRO CIFRE
Btw, io farei anche somewere almeno una volta Print("MyDig=",MyDig); Perché? Può sembrare insignificante, ma sareste stupiti dai divertimenti che circondano cose così semplici!
5. Tutti i vostri problemi possono essere facilmente risolti ottenendo tutte le informazioni disponibili a portata di mano e visualizzandole.
Poi, con la buona vecchia carta + matita si può vedere dove sono le incomprensioni.
(**)
Rif: https://book.mql4.com/appendix/limits
StopLevel Limitazione della distanza minima.
Un'operazione di compravendita non sarà eseguita se una delle seguenti condizioni è disturbata.
Davvero non riesco a capire cosa sta succedendo e perché questo sta accadendo
2009.08.05 14:32:26 Trender Beta Test EURUSD,H1: OrderSend (Trender Beta Test) fallito con errore #130
2009.08.05 14:32:26 Trender Beta Test EURUSD,H1: MyDig=10
2009.08.05 14:32:26 Trender Beta Test EURUSD,H1: Take Profit Value1.43155, takeProfit=110
2009.08.05 14:32:26 Trender Beta Test EURUSD,H1: Stop Loss Valore1.42255, stopLoss=200
2009.08.05 14:32:26 Trender Beta Test EURUSD,H1: Bid=1.44255, Ask=1.44229
Davvero non riesco a capire cosa sta succedendo e perché questo accade
È davvero il momento di mostrare l'intero codice. Se esitate, potete usare il PM.
Vedo che hai TP più basso allora Bid