Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 24

 
Alexey Viktorov:
Cosa cambierà da questo?
La dichiarazione sugli eventi commerciali è pienamente in linea con l'argomento del thread.
 

Un semplice guasto di rete a breve termine annulla la logica di trading basata SOLO sull'ascolto degli eventi commerciali.

Pertanto, gli adepti di OnTradeTransaction esagerano un po' nel loro ragionamento.

Questo è il meccanismo della logica di trading che servirà fedelmente su qualsiasi piattaforma

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Buon esempio di lavoro con gli ordini limite in un EA

fxsaber, 2017.01.02 23:12

Faccio trading solo attraverso ordini pendenti per la maggior parte del tempo. Non facendo alcuna elaborazione. OrderSend ha restituito -1 (MT4 o MT5+MT4Orders) - non ha funzionato e va bene, perché il prossimo passo è ancora completamente a guardare l'ambiente di trading. E se non c'è nessuna pendenza/posizione ma dovrebbe esserci, la sincronizziamo con lo stato in cui dovrebbe essere - viene inviato il corrispondente OrderSend.

Con questo approccio, tutte le sfumature di regressioni, esecuzioni parziali e così via sono considerate. E l'implementazione è molto semplice ed efficiente. Non ha mai fallito.

Non ho provato i metodi asincroni e qui non è molto più difficile, ma non posso essere sicuro.

 
fxsaber:

Un semplice guasto di rete a breve termine annulla la logica di trading basata SOLO sull'ascolto degli eventi commerciali.

Pertanto, gli adepti di OnTradeTransaction sono un po' sopra le righe nel loro ragionamento.

Questo è il meccanismo di logica commerciale che servirà fedelmente su qualsiasi piattaforma

Sì, l'unico modo affidabile è controllare lo stato del conto di trading. Tutti gli eventi OnTrade* non possono fornire un meccanismo affidabile per la gestione degli ordini di compravendita.

Per quanto riguarda le operazioni asincrone - il loro unico vantaggio è che si possono inviare ordini di compravendita in fila, senza aspettare i risultati degli ordini precedenti. Ma anche il controllo della loro esecuzione non può contare su eventi, in questo senso non c'è differenza con il controllo dei risultati degli ordini sincroni.

Lo stato del conto di trading è quello che abbiamo al momento della richiesta (noi stessi facciamo la richiesta), se ci sono problemi con la rete - nessun problema, possiamo fare richieste finché la rete non si riprende. Affidarsi agli eventi, invece, ci rende completamente dipendenti da fattori esterni.

 

fxsaber:
Questa situazione con gli eventi commerciali è pienamente coerente con l'argomento di questo ramo.

Non sono affatto in disaccordo, sto solo dicendo che non molte persone devono cogliere queste sottigliezze.

fxsaber:

Un semplice guasto di rete a breve termine annulla la logica di trading basata SOLO sull'ascolto degli eventi commerciali.

Pertanto, gli adepti di OnTradeTransaction esagerano un po' nel loro ragionamento.

Questo è il meccanismo di logica commerciale che servirà fedelmente su qualsiasi piattaforma

E non voglio dissuadere nessuno dal farlo. Soprattutto perché penso che sia molto necessario controllare il ritorno dal server. Solo che ci sono approcci diversi. Quello che suggerisci è corretto, ma non è una panacea.

Forse è il mio principio di vita: "Posso fare peggio, ma a modo mio". Se succede qualcosa, non ci sarà nessuno da incolpare".

 

Mi sono abituato a usare la funzione MarketInfo(_Symbol, MODE_TICKVALUE) per il valore del punto di un simbolo in 4. Non ho ancora incontrato alcun problema.

Non è così uniforme in diversi broker di MT5. Ho eseguito un piccolo script su EURUSD e USDJPY su due conti diversi. Nota il valore del punto e la dimensione del contratto.

Questo è un conto demo di MQ.

Questo è unconto demo di Just2Trade:

Qualcuno ha una funzione universale che renda il valore dei punti uguale?
Capisco che la dimensione di un tick e la dimensione del contratto dovrebbero essere considerati, forse qualcos'altro?

Cioè se è EURUSD e il deposito è denominato in dollari - allora 1 punto a cinque cifre per renderlo uguale a 1 dol.

E in quali casi dovremmo usare SYMBOL_TRADE_TICK_VALUE_PROFIT o SYMBOL_TRADE_TICK_VALUE_LOSS?
 
Vasiliy Pushkaryov:

Mi sono abituato a usare la funzione MarketInfo(_Symbol, MODE_TICKVALUE) per il valore del punto di un simbolo in 4. Non ho ancora incontrato alcun problema.

Non è così uniforme in diversi broker di MT5. Ho eseguito un piccolo script su EURUSD e USDJPY su due conti diversi. Nota il valore del punto e la dimensione del contratto.

Questo è un conto demo di MQ.

Questo è unconto demo di Just2Trade:

Qualcuno ha una funzione universale che renda il valore dei punti uguale?
Capisco che la dimensione di un tick e la dimensione del contratto dovrebbero essere considerati, forse qualcos'altro?

Cioè se è EURUSD e il deposito è denominato in dollari - allora 1 punto a cinque cifre per renderlo uguale a 1 dol.

Quando è corretto usare SYMBOL_TRADE_TICK_VALUE_PROFIT o SYMBOL_TRADE_TICK_VALUE_LOSS?
Quando il "Nikonor's Office" avrà la dimensione del contratto come nel normale, CENTINAIA di migliaia, allora il valore del punto sarà come nel normale. Nel frattempo, puoi moltiplicare quello che hai per 100.000 e ottenere quello che vuoi.
 
Alexey Viktorov:
Quando il "nikonor's office" avrà una dimensione di contratto come quelli normali, centomila, allora il valore dei punti sarà come quelli normali. Nel frattempo, puoi moltiplicare quello che hai per 100.000 e ottenere quello che vuoi.
Anche io una volta ho lottato con questo. MetaQuotes-Demo ha una dimensione di contratto; Just2Trade ne ha un'altra. Per i forex è uno, per le azioni, ecc. - un altro per il Forex, ecc. Quello che c'è scritto nel riferimento su come calcolare tutto non quadra, per la miseria. E il cliente sta aspettando... Così abbiamo concordato che non lo calcolerà automaticamente, ma lo moltiplicherà semplicemente per 100. E solo sul suo Just2Trade. Ancora non capisco questo trucco... :((
 
Artyom Trishkin:
Anche io una volta ho lottato con questo. Per MetaQuotes-Demo la dimensione del contratto è una, per Just2Trade è un'altra. Per i forex è lo stesso, ma per le azioni e gli altri è diverso. - per il Forex, uno per le azioni, ecc. Quello che c'è scritto nel riferimento su come calcolare tutto non quadra, per la miseria. E il cliente sta aspettando... Quindi abbiamo concordato che non lo calcolerà automaticamente, ma lo moltiplicherà semplicemente per 100. E solo sul suo Just2Trade. Ancora non capisco questo trucco... :((

Cosa potrebbe non essere chiaro?

Dimensione del contratto standard = 1 Comprato 1000 lotti ottenuto 0,00001*1000/1 = 0,01 per 1 pip

Un'altra opzione, dimensione del contratto = 100000 comprato 0,01 lotto (100000*0,01=1000) ha ottenuto 1 punto 1*1000/100000 = 0,01

Questo è per 5/3 cifre.

ps; E in insta, la dimensione del contratto standard era 10000.
 
Alexey Viktorov:

Cosa potrebbe non essere chiaro?

Dimensione standard del contratto = 1, comprato 1000 lotti, ricevuto 0.00001*1000/1 = 0.01 per 1 pip

Un'altra opzione, dimensione del contratto = 100000 comprato 0,01 lotto (100000*0,01=1000) ha ottenuto 1 punto 1*1000/100000 = 0,01

Questo è per 5/3 cifre.

ps; E in Insta la dimensione standard del contratto era 10000.
Capisco, è solo che non sono abituato a 3000 o 5000 lotti. Mi ci devo abituare.
 
Vasiliy Pushkaryov:
Capisco, è solo che non sono abituato a usare 3000 o 5000 lotti. Dovrete abituarvi.

Se non siete abituati, potete scriverlo così

input double               lot         =  0.1;
input int                  take        =  100;   // TakeProfit

double takePips, contract;

/*******************Expert initialization function*******************/
int OnInit()
{
   contract = 100000/SymbolInfoDouble(_Symbol, SYMBOL_TRADE_CONTRACT_SIZE)*lot;
    takePips = take*_Point;
   return(INIT_SUCCEEDED);
}/*******************************************************************/

E nella funzione OrderSend() inviare una variabile di contratto indipendentemente dal capriccio del commerciante.