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
Cosa fa questa funzione che è chiara a tutti?
int OpenSell(double volume,int slippage=10,string comment="Open Short EUR/USD (Sell)",int magic0=102406)
{
MqlTradeRequest my_trade;
MqlTradeResult my_trade_result;
my_trade.action=TRADE_ACTION_DEAL;
my_trade.symbol=Symbol();
my_trade.volume=NormalizeDouble(volume,1);
my_trade.price=NormalizeDouble(Bid,_Digits);
my_trade.sl=NormalizeDouble(Bid+StopLoss*_Point,_Digits);
my_trade.tp=NormalizeDouble(Bid-TakeProfit*_Point,_Digits);
my_trade.deviation=slippage;
my_trade.type=ORDER_TYPE_SELL;
my_trade.type_filling=ORDER_FILLING_AON;
my_trade.comment=commento;
my_trade.magic=magico;
ResetLastError();
if(OrderSend(my_trade,my_trade_result))
{
time_oc=TimeLocal();
md=0;
Print( "Operation result code - " ,my_trade_result.retcode);
}
else
{
Print("Operation result code - ",my_trade_result.retcode);
Print("Order open error = ",GetLastError());
}
ritorno(0);
}
Nella procedura OnTick()
...
OpenSell(Lots,10, "EUR/USD (Sell)",102406);
...
All'inizio:
doppio StopLoss=250,
TakeProfit=1400;
extern double Lots = 0.1;
Perché diavolo ci sono 220 dollari nei risultati del test?
<DATA> <SALDO> <PATRIMONIO> <LIVELLO DI MARGINE
01,01,2010 0 :00:00 10000 10000 0
11,01,2010 2 :57:00 9779,29 9841,92 6827
15,01,2010 16:00:00 9829,8 9941,9 6857
22,01,2010 14:32:00 10124,1 10135,9 7167
26,01,2010 2 :14:00 10048,6 10048,6 0
26,01,2010 4 :06:00 10048,6 10038,4 7099
27,01,2010 21:12:00 10188,5 10188,5 0
29,01,2010 2 :16:00 10188,5 10308 7346
29,01,2010 7 :14:00 10188,5 10277,4 7324
04,02,2010 22:05:00 10418,63 10480,83 7592
Se ho torto, datemi un pugno sul naso.
Non vi lascerò vedere l'intero EA. La funzione su Buy è simile...
Chiudo la posizione con l'ordine opposto.
Tutto a posto. Ho urlato a squarciagola. Sto imparando la lingua. Se ho offeso qualcuno, mi scuso. Lavorerò e cercherò il problema. Probabilmente l'ho fatto da solo, ma voglio davvero imparare a fare buoni EAs usando mql5. È un sistema molto buono, ma. Finora ho problemi con esso.
Anche se ho 20 Expert Advisors su mql4 senza alcun problema.
...
Ho iniziato a studiare la sezione "Operazioni sui file" poco a poco. Sapete se ci sono dei tutorial su come lavorare con i file in MQL5?
Come posso cancellare correttamente tutti gli ordini con una certa modalità?
Ho due funzioni per questo, check_orders controlla gli ordini con una certa modalità, e remove_sl li elimina:
Il problema è che nel diario di EA appaiono queste righe:
2011.05.11 21:40:19 Trades '726238' : failed cancel order #4375237 buy 0.00 at 0.00000 [Invalid request]
Cioè ci sono richieste ridondanti al server commerciale per cancellare l'ordine la richiesta di cancellazione che è già stata inviata.
Credo di avere un problema con la chiusura e l'apertura delle posizioni.
In qualche modo, invece di avere una posizione per 0,1 lotti, in realtà ho diversi lotti. Apparentemente le posizioni di un simbolo si sovrappongono e il volume della posizione cresce. Questo è l'unico modo per spiegare i problemi sopra menzionati con grandi valori di stop e grandi differenze durante i test. Significa che sto analizzando la presenza di trade aperti in modo errato o sto chiudendo le tracce in modo errato.
Questa è la procedura che uso per determinare se c'è una posizione aperta da un simbolo:
int Total()
{
count=0;
for (i=0; i<=PosizioniTotali(); i++)
{
if (PositionGetSymbol(i)==_Symbol) {count++;}
}
return(count);
}
Naturalmente, la funzione restituisce o 0 o 1.
Uso la seguente voce per aprire gli ordini
se (Totale()<1)
{
if (# qualche controllo sugli indicatori#) OpenBuy(Lots,10, "EUR/USD (Buy)",102406);
se (#qualche controllo sugli indicatori#) OpenSell(Lots,10, "EUR/USD (Sell)",102406);
}
Ho aperto l'acquisto e la vendita sembra:
int OpenSell(double volume,int slippage=10,string comment="Open Short EUR/USD (Sell)",int magic0=102406)
{
MqlTradeRequest my_trade;
MqlTradeResult my_trade_result;
my_trade.action=TRADE_ACTION_DEAL;
my_trade.symbol=Symbol();
my_trade.volume=NormalizeDouble(volume,1);
my_trade.price=NormalizeDouble(Bid,_Digits);
my_trade.sl=NormalizeDouble(Bid+StopLoss*_Point,_Digits);
my_trade.tp=NormalizeDouble(Bid-TakeProfit*_Point,_Digits);
my_trade.deviation=slippage;
my_trade.type=ORDER_TYPE_SELL;
my_trade.type_filling=ORDER_FILLING_AON;
my_trade.comment=commento;
my_trade.magic=magico;
ResetLastError();
if(OrderSend(my_trade,my_trade_result))
{
time_oc=TimeLocal();
md=0;
Print( "Operation result code - " ,my_trade_result.retcode);
}
else
{
Print("Operation result code - ",my_trade_result.retcode);
Print("Order open error = ",GetLastError());
}
ritorno(0);
}
Chiudo i trade nella procedura principale allo stesso modo:
se (Totale()>0) TryToClose();
TryToClose è così:
}
L'indicatore controlla che se ci dovrebbe essere una posizione Buy e c'è una posizione Sell, allora facciamo un Buy.
Dove ho fatto un errore. Perché mi si allargano le posizioni.
Inserisci il codice tramite il pulsante SRC
Conoscete la differenza tra un ordine MT4 e un ordine MT5?In mql4 gli ordini sono sia commerciali che pendenti.
In mql5 un ordine è un trade pendente. L'entrata nel mercato è l'apertura di una posizione. Quando l'ordine viene attivato, viene aperta una posizione. Ci può essere solo una posizione per un simbolo, e ci possono essere tutti gli ordini che vogliamo.
Tutti continuano ad insinuare che io sia stupido. Forse sono stupido. Bene, trova i miei errori così posso correggerli.
Mi viene da pensare alla stupidità. Forse sono stupido. Bene, trova i miei errori in modo che io possa correggerli.
Non sto alludendo a nulla, sono solo passato a chiedere quale sia la ragione più frequente, non conosco il tuo livello di allenamento.
Sono qui da molto tempo, mi sono già fatto un'opinione su molte persone (ognuno è forte a modo suo), non ti conosco ancora, quindi non accennerò a nulla.
Non vedo il quadro generale della strategia. A giudicare dal modo in cui stai attraversando le posizioni, la strategia è multi-valuta.
Ma hai prescritto un solo strumento, se lo strumento è uno solo, perché scorrere ciclicamente le posizioni?
Se conoscete lo strumento, non avete bisogno di cercare tutte le posizioni per trovarle, basta usare questa funzione: