Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 99

 
fxsaber:

Si presenta la necessità di trasferire per riferimento senza modifiche - sia per la velocità, sia per l'oggetto.

Se non c'è bisogno di passarlo per la modifica, allora potete ignorare tutto quello che ho scritto).

Avete un esempio reale in MQL5 quando si verifica questo problema?

Manca un vero esempio di convenienza.

Ho descritto tutto in dettaglio, sia a parole che in codice. Se ti sembra incomprensibile per qualche motivo, allora evidentemente non hai i problemi descritti, e mi congratulo con te per questo. Buona notte, caro amico).

Il mio post era probabilmente destinato più ai templatori hardcore e agli amanti del controllo dei tipi.

 
Alexey Navoykov:

C'è spesso la necessità di passare una variabile come argomento di un template per riferimento per modificarla. Tuttavia, la specifica esistente dei template C++ purtroppo non permette di specificare esplicitamente la non costanza dell'argomento, come accade nelle funzioni normali:

Primo, C++ ha semplicemente capacità di template molto più ricche, e secondo, C++ ha SFINAE, che vi permette di incasinare le cose così tanto da farvi rizzare i capelli.

Questo è quello che può sembrare:

template<class T>
    static void const_check(T & t){
        BOOST_STATIC_ASSERT(! boost::is_const<T>::value);
    }
È lo stesso che con un puntatore: non puoi specificare direttamente che il tipo che vuoi non sia un puntatore, ma puoi farlo attraverso una specializzazione non compilata.
 
TheXpert:

questo potrebbe apparire così

Per quanto ho capito, causa un errore di compilazione nel corpo della funzione (che può essere chiamata comunque), ma non influisce sul processo di selezione dei template. Devi manipolare con il tipo del valore di ritorno della funzione. Ma non importa. Ma tutto questo è implementato lì non solo attraverso i template ma anche attraverso lo specificatore decltype, che è assente in MQL e ancora necessario.

 
Alexey Navoykov:

Il mio post era probabilmente rivolto più ai templatori hardcore e agli amanti del controllo di tipo nerd.

Pensavo che dopo aver scritto TypeToBytes fossi diventato più competente in materia di template.

 
fxsaber:

Pensavo che dopo aver scritto TypeToBytes fossi diventato più competente in materia di template.

Mi sono reso conto ora che la frase "hardcore pattern maker" in relazione a MQL suona ironica. È come un "programmatore certificato MQL". ))

Il problema è che non c'è niente di particolarmente difficile da fare nei template, e non solo per la mancanza di funzionalità aggiuntive del linguaggio, ma anche per l'errato funzionamento di quello esistente. Costantemente incappato in bug.

 

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

Bug, bug, domande

Slava, 2018.09.19 06:37

Per mettere un oggetto sopra tutti gli altri, indipendentemente dall'ordine, dovete prima renderlo invisibile su tutti i timeframe e poi renderlo nuovamente visibile
 

Buon pomeriggio!

La documentazione afferma esplicitamente che mentre il gestore OnTickè in esecuzione https://www.mql5.com/ru/docs/runtime/event_fire#newtick

è inattivo e non vengono gestiti nuovi tick. È lo stesso per igestori OnBookEvent, OnTimer, OnChartEvent o no.

La domanda è causata dal fatto che in tutti i gestori di cui sopra uso la mia gestione dei tick.

Документация по MQL5: Программы MQL5 / События клиентского терминала
Документация по MQL5: Программы MQL5 / События клиентского терминала
  • www.mql5.com
Сразу же после того, как клиентский терминал загрузит программу (эксперт или пользовательский индикатор) и запустит процесс инициализации глобальных переменных, будет послано событие Init, которое обрабатывается функцией OnInit(), если она есть. Это событие также генерируется после смены финансового инструмента и/или периода графика, после...
 
Andrey Kotrin:

Buon pomeriggio!

La documentazione afferma esplicitamente che mentre il gestore OnTickè in esecuzione https://www.mql5.com/ru/docs/runtime/event_fire#newtick

È lo stesso per i gestori OnBookEvent, OnTimer, OnChartEvent o no.

La domanda è causata dal fatto che tutti i gestori di cui sopra usano la propria gestione dei tick.

Non è corretto.

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

Biblioteche: HistoryTicks

fxsaber, 2018.04.10 17:53

Combat EA su un simbolo ad alta frequenza (200-350 tick al minuto) con frequenti ordini di trading (diverse volte al minuto) e un ping di 100 ms in modalità standard perde ~5% dei tick.

In modalità HistoryTicks nessuna perdita.


Sentitevi liberi di usare OnTick multivaluta in MT5.

 
fxsaber:

Sicuramente non è corretto.


ZZY Si può tranquillamente usare OnTick multicurrency sotto MT5Z

Grazie per il link! In realtà, il problema non è nella perdita di tick, ma nel possibile aggiornamento parziale delle informazioni durante l'elaborazione di quella corrente. Ho risolto un problema simile quando si comunica tra robot che fanno trading simultaneamente

Dato che il robot è orientato su un servizio di hosting cheusa dllesterne e quindi ilmutexè impossibile, ho usato l'emulazione GlobalVariableSetOnCondition.

 
Andrey Kotrin:

Grazie per il link! In realtà, il problema non è nella perdita di tick, ma nel possibile aggiornamento parziale delle informazioni durante l'elaborazione di quella corrente. Ho avuto un problema simile nell'organizzare la comunicazione tra i robot che fanno trading simultaneamente

Poiché il mio robot è orientato su un servizio di hosting cheutilizza dll diterze parti e quindi ilmutexè impossibile, ho usato l'emulazione GlobalVariableSetOnCondition.

Forse puoi usare Resources per trasferire i dati.

Motivazione: