Erreurs, bugs, questions - page 2350

 

Je n'arrive pas à comprendre, alors donnez-moi un indice. Il y a une acquisition de temps

int GetHandle() { return(0); }

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

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


Comment écrire une macro qui fait la même chose ?

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


Le problème est que PrevHandle n'est pas créé dans la macro.

 

Bonjour à tous.

Terminal build 1960 (identique en beta 1966). Les fonctions CopyTicks, CopyTicksRange fonctionnent correctement dans l'indicateur, exécuté dans le terminal, mais dans le testeur, le même indicateur dans ces fonctions montre un résultat -1 et l'erreur 4014. Développeurs, veuillez nous dire pourquoi ?

 
fxsaber:

Comment écrire une macro qui fait la même chose ?

Quel est le problème avec une fonction ?
 
Alexey Navoykov:
Quel est le problème de la fonction ?

Parce qu'au lieu de TimeCurrent, il peut s'agir de n'importe quelle fonction.

 
fxsaber:

Le fait qu'au lieu de TimeCurrent, il peut s'agir de n'importe quelle fonction.

Eh bien, seulement si une variable globale est utilisée.
 
fxsaber:

Comment écrire une macro qui fait la même chose ?

Le problème est que PrevHandle ne peut pas être créé dans la macro.

Je pense que le gros problème est qu'il n'y a pas d'opérateur de virgule, sans lequel il est peu probable d'obtenir une telle macro.

 
Syndrome typique des génies méconnus... Parler de choses élevées et ne pas être capable de résoudre le problème le plus simple...
Pensez-y... pendant une semaine
Conseil : le fait que la solution en MQL existe déjà est un conseil en soi.
 
pavlick_:

À mon avis, le gros problème est qu'il n'y a pas d'opérateur de virgule, sans lequel vous avez peu de chances d'obtenir une telle macro.

Tu pourrais faire ça :

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

Mais croustillant, tu ne peux pas le mettre quelque part dans un état, seulement à travers =.

SZY : et utiliser soigneusement dans après si, pendant, etc.

if(true)
   MACROS(...);

Je n'en utiliserais probablement pas.

 
A100:
Syndrome typique des génies méconnus... Parler de choses élevées et ne pas être capable de résoudre le problème le plus simple...
Pensez-y... pendant une semaine
Voici un indice : le fait que la solution en MQL existe déjà est un indice en soi.

Eh bien, allez, vous, maître, surprenez la plèbe avec une solution brillante.

 
Kuzmich:

Bonjour à tous.

Terminal build 1960 (identique en beta 1966). Les fonctions CopyTicks, CopyTicksRange fonctionnent correctement dans l'indicateur, exécuté dans le terminal, mais dans le testeur, le même indicateur dans ces fonctions montre un résultat -1 et l'erreur 4014. Pouvez-vous expliquer pourquoi ?

Quel est le mode de simulation?

Seuls "based on real ticks" et "Jitter" fonctionnent. Il y a une restriction sur egetik - la demande est satisfaite uniquement dans les ticks générés.

m1 ohlc et les prix d'ouverture ne sont pas adaptés (votre cas ?)