![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Non sei tu che hai bisogno di una pausa.
A livello globale, ci sono due modi:
1) analisi dell'ambiente (aspirando la storia delle transazioni, controllando la posizione aperta o il volume della posizione);
2) analisi delle transazioni.
Il primo funziona più lentamente. Ma è più affidabile. Abbiamo bisogno di un compromesso. Forse, dobbiamo guardare la strategia e dipendere da essa.
Sì, FORTS ha un ticker completo, quindi non si dovrebbe lavorare con i tick ma con l'evento BookEvent.
È strano che Vasily Sokolov non abbia commentato questo argomento. Il suo punto di vista è interessante...
Comunque, la linea di fondo, imho, è questa.
A livello globale, ci sono due modi:
1) analisi dell'ambiente (aspirando la storia delle transazioni, controllando la posizione aperta o il volume della posizione);
2) analisi delle transazioni.
Il primo funziona più lentamente. Ma è più affidabile. Abbiamo bisogno di un compromesso. Forse, dobbiamo guardare la strategia e dipendere da essa.
Sì, FORTS ha un ticker completo, quindi non si dovrebbe lavorare con i tick ma con l'evento BookEvent.
È strano che Vasily Sokolov non abbia commentato questo argomento. Il suo punto di vista è interessante...
Comunque, la linea di fondo, imho, è questa.
A livello globale, ci sono due modi:
1) analisi dell'ambiente (aspirando la storia delle transazioni, controllando la posizione aperta o il volume della posizione);
2) analisi delle transazioni.
Il primo funziona più lentamente. Ma è più affidabile. Abbiamo bisogno di un compromesso. Forse, dobbiamo guardare la strategia e dipendere da essa.
Sì, FORTS ha un ticker completo, quindi non si dovrebbe lavorare con i tick ma con l'evento BookEvent.
È strano che Vasily Sokolov non abbia commentato questo argomento. Il suo punto di vista è interessante...
Cioè posso trasferirvi completamente la mia strategia?
Una volta ho lavorato su questo ordine e ho scritto la classe CiOnTrade:
Quindi, la soluzione ottimale che ho trovato è stata nell'elaborazione degli stati. E ce n'erano così tanti:
{
TRADE_STATE_NONE=0, // "ничего"
TRADE_STATE_ORDERS=1, // "только ордера"
TRADE_STATE_POSITION=2, // "только позиция"
TRADE_STATE_ALL=3, // "все"
};
2) "Solo ordini" - questo è lo stato quando gli ordini vengono effettuati.
3) "Solo posizione" è lo stato in cui gli ordini sono completamente eseguiti.
4) "Tutti" è lo stato in cui gli ordini non sono stati eseguiti completamente e c'è già una posizione sul mercato.
Quindi ogni stato doveva essere elaborato. Sì, a proposito, ammetto che ci sono anche stati intermedi. Quindi la mia classe potrebbe essere migliorata.
A proposito, è sorta una domanda: l'eventoBookEvent può essere usato allo stesso modo del Tick o del Timer?
cioè posso trasferirvi completamente la mia strategia?
Sì, ma considera che il vetro ha più probabilità di generare eventi. Pertanto, avete bisogno di qualche filtro per setacciare gli eventi non necessari. Per esempio, i prezzi non sono cambiati, ma solo i volumi di alcune offerte...
La linea di fondo, imho, è questa.
A livello globale, ci sono due modi:
1) l'analisi dell'ambiente (risucchiando la storia degli scambi, controllando la posizione aperta o il volume della posizione);
2) l'analisi delle transazioni.
Il primo funziona più lentamente. Ma è più affidabile. Ci deve essere un compromesso. Forse dobbiamo guardare la strategia e dipendere da essa.
Presumo che le informazioni sull'accordo non siano ancora arrivate. Qui (segnato in rosso), ci si affida alla fortuna. Ed è una signora capricciosa :-))
{
MqlTradeRequest Request;
MqlTradeResult Results;
ZeroMemory(Request);
ZeroMemory(Results);
Request.price=SymbolInfoDouble(_Symbol,SYMBOL_BID);
Request.action=TRADE_ACTION_DEAL;
Request.type=ORDER_TYPE_SELL;
Request.symbol=symbol;
Request.volume=volume;
Request.deviation=deviation;
Request.comment=comment;
Request.type_filling=filling;
bool res=false;
res=OrderSend(Request,Results);
if(res)
{
if(Results.deal>0) return(true);
else return(false);
}
return(false);
}
Anche conORDER_STATE_FILLED, Results.order può avere un problema - Results.deal è zero. La riproduzione al 100% di questa situazione si ottiene sul server FXOpen-MT5.
Raccomando di aprire molte demo su diversi server e raggiungere la piena funzionalità del codice. L'ho fatto per MT4 biblica. Ecco perché non c'è nessun problema con il sottogioco.
OrderSend+Sleep(0) non è più lento di OrderSend+OnTradeTransaction. L'ho misurato. Pertanto, non uso la seconda variante non per le transazioni asincrone.
La variante OrderSend+Sleep(0) è temporanea, perché è una lacuna degli sviluppatori (non usarla come esempio :) ).
Quando sarà corretto, rimarrà solo OrderSend