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
se nel mio esempio:
copiare i valori asc e bid nel metodo onTick() e usare _Ask, _Bid (commercio virtuale) nel resto dei metodi
sarà come lavorare con le variabili globali?
ZS: come opzione, posso naturalmente passare per riferimento &tick a tutti i metodi, ma ancora una volta mi chiedo quale sia più efficiente
Una volta ho fatto una domanda su due modi per inizializzare le variabili in una classe. Questo:
E questo:
Ho chiesto qual è il vantaggio del secondo modo e mi è stato detto che si possono inizializzare i membri statici con esso. Ma i membri statici non sono inizializzati in questo modo.
Quindi la domanda è la stessa - qual è la differenza di principio e qual è il vantaggio del secondo modo?
Cita
Una volta ho fatto una domanda su due modi per inizializzare le variabili in una classe. Eccone uno come questo:
https://www.mql5.com/ru/forum/85652/page45#comment_15975127
Ho chiesto qual è il vantaggio del secondo modo e mi è stato detto che i membri statici possono essere inizializzati da esso. Ma i membri statici non sono inizializzati in questo modo.
Sono campi costanti , non statici.
Quindi la domanda è sempre la stessa - qual è la differenza di principio e qual è il vantaggio del secondo modo?
Se scartiamo l'affermazione "è considerata cattiva forma", allora qualunque cosa sia più conveniente, è quello che useremo, imho.
Ricomincio il topic, ho cancellato il post precedente, pensavo di averlo capito da solo....
ecco il codice:
class CSetting { public: enum T {T1, T2, T3, T4, T5, T6, T7, T8}; enum D {D1, D2, D3, D4, D5, D6, D7, D8}; enum V {V1, V2, V3, v4}; private: int param1, param2; T t; D d; V v; public: CSetting(const int in_param1,const int in_param2,const T in_t,const D in_d,const V in_v); }; //+------------------------------------------------------------------+ CSetting::CSetting(const int in_param1,const int in_param2,const T in_t,const D in_d,const V in_v) : param1(in_param1), param2(in_param2), t(in_t), d(in_d), v(in_v) {} //--- input parameters input int Input_p1 = 1; // p1 = -1000 ... +1000 input int Input_p2 = 2; // p2 = -1000 ... +1000 input CSetting::T Input_T = CSetting::T::T1; input CSetting::D Input_D = CSetting::D::D1; input CSetting::V Input_V = CSetting::V::V1;Voglio riempire 3 enum e 2 int dalla sezione privat di CSetting con un int in cui bit per bit memorizzerò questi dati, ho abbozzato il codice:
in teoria, dovrebbe funzionare, prendo i 2 + 3 +3 bit inferiori dai dati per enum, e i restanti 24 bit dall'int per riempire param1 e param2, mantenendo il 12° bit come carattere del numero
Come faccio a controllare se c'è un errore? )))
o sarebbe grato per le idee di qualcun altro su come salvare questi dati su int
come si controlla se ci sono errori? )))
o t+d*10+v*100
questo non funzionerà,
dovete spostare bit per bit o moltiplicare/splittare per 2, che è equivalente a spostare
bene, come al solito - imballalo, disimballalo, controlla l'identità. preferibilmente controlla tutti i casi limite.
Quindi, sì... logicamente
ma non avevo intenzione di fare il packing - sto diminuendo il numero di variabili di input per l'ottimizzatore e ho bisogno di molti passaggi di GA su di loro, in modo che GA non converga rapidamente
I casi limite sono già stati controllati, ma dall'esperienza.... gli insetti sono così astuti!!! )))
HH: posso naturalmente reimpostare il ciclo da 0...MAX_UINT in un file e guardarlo visivamente, ma non è la migliore opzione, imho.
non funzionerà,
...
Perché non dovrebbe funzionare? Tre enumerazioni, nessuna delle quali superiore a 10. Aritmetica delle scuole elementari di secondo grado.