Errori, bug, domande - pagina 2350

 

Ciao

Mi sono perso qualcosa o ora è possibile inviare ordini bylimit al di sopra del prezzo corrente e in modo che vengano eseguiti immediatamente. Come in un vero sistema borsistico?

Come limitare lo slittamento?

 

Non riesco a capirlo, quindi per favore dammi un suggerimento. C'è un'acquisizione di tempo

int GetHandle() { return(0); }

bool SelectHandle( int ) { return(true); }
  
int NewHandle = 0;  
int PrevHandle = GetHandle();    

datetime time = SelectHandle(NewHandle) ? TimeCurrent() : 0;  
SelectHandle(PrevHandle);


Come scrivere una macro che faccia la stessa cosa

time = MACROS(NewHandle, TimeCurrent()); // Макрос


Il problema è che PrevHandle non viene creato nella macro.

 

Ciao a tutti.

Terminal build 1960 (lo stesso in beta 1966). Le funzioni CopyTicks, CopyTicksRange funzionano correttamente nell'indicatore, in esecuzione nel terminale, ma nel tester, lo stesso indicatore in queste funzioni mostra -1 risultato ed errore 4014. Sviluppatori, per favore consigliate perché?

 
fxsaber:

Come scrivere una macro che faccia la stessa cosa

Cosa c'è di sbagliato in una funzione?
 
Alexey Navoykov:
Cosa c'è di sbagliato nella funzione?

Perché invece di TimeCurrent, può essere qualsiasi funzione.

 
fxsaber:

Il fatto che invece di TimeCurrent, può essere qualsiasi funzione.

Bene, allora solo se si usa una variabile globale.
 
fxsaber:

Come scrivere una macro che faccia la stessa cosa

Il problema è che PrevHandle non può essere creato nella macro.

Penso che il grande problema sia che non c'è l'operatore virgola, senza di esso è improbabile ottenere una tale macro.

 
Sindrome tipica dei geni non riconosciuti... Parlare di cose alte e non essere in grado di risolvere il problema più semplice...
Pensateci... per una settimana
Suggerimento: il fatto che la soluzione in MQL esiste già è un suggerimento in sé.
 
pavlick_:

Secondo me, il grande problema è che non c'è l'operatore virgola, senza il quale è improbabile ottenere una tale macro.

Si potrebbe fare così:

int MACROS_helper_int;
#define  MACROS(NEW_HANDLE_, FN_)  (MACROS_helper_int=GetHandle())*0+(SelectHandle(NEW_HANDLE_) ? FN_ : 0);  \
                                  SelectHandle(MACROS_helper_int);

Ma crosta, non puoi metterlo da qualche parte in una condizione, solo attraverso =.

SZY: e usare con attenzione in dopo if, while, ecc.

if(true)
   MACROS(...);

Probabilmente non ne userei uno.

 
A100:
Sindrome tipica dei geni non riconosciuti... Parlare di cose alte e non essere in grado di risolvere il problema più semplice...
Pensateci... per una settimana
Ecco un indizio: il fatto che la soluzione in MQL esiste già è un indizio in sé.

Beh, dai, tu, maestro, sorprendi la plebe con una soluzione brillante.

Motivazione: