Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 249

 
Sepulca:

C'est peut-être mieux.

Il suffit d'échanger les places. Hour()>OuvrirHH plus souvent que l'heure et les minutes.
 
artmedia70:
Seulement échanger les places. Pourtant, Hour()>OpenHH plus souvent que l'heure et les minutes.


Pensez-vous que cela augmentera la vitesse de l'EA ? Je me demande, peut-être... Franchement, je n'ai jamais pensé à l'ordre des conditions dans IF...)
 
Sepulca:

Pensez-vous que cela augmentera la vitesse de l'EA ? Intéressant, peut-être... Honnêtement, je n'ai jamais vraiment réfléchi à l'ordre de définition des conditions dans IF...)
Eh bien... Je ne parle pas d'une énorme augmentation, mais quand même... jusqu'à la sortie du terminal mis à jour avec le nouveau MQL4, toutes les conditions logiques sont lues jusqu'à la fin, même si la première est fausse.
 
Sepulca:


Tout semble être correct, cela devrait fonctionner. J'ai essayé votre code dans le mien - il fonctionne avec des minutes. Mais seulement de 14 h 25 à 14 h 59, de 15 h 25 à 15 h 59, etc.


Merci pour la réponse rapide, mais, hélas, quelque chose ne fonctionne pas... Le code ne fonctionne que de cette façon, tant dans le corps du script que dans le corps de l'EA. Par le temps et la fonctionnalité - tout va bien. Les commandes sont passées par horloge uniquement !
int start()
{
int OpenHH=14,OpenMM=25;
bool Trade=true;
//----
if (Trade) // Разрешение на торговлю.
if (TimeHour(TimeCurrent()) >= OpenHH ) // В назначенный час
{ OpenOrders();Print("Время пришло ",TimeHour(TimeCurrent()),":",TimeMinute(TimeCurrent())); return(0); } // открыть ордера.
//----
return(0);
}
//+------------------------------------------------------------------+
void OpenOrders(){return(0);}

Mais dès que j'ajoute des minutes ( TimeMinute(TimeCurrent()) >= OpenMM ) - aucun résultat.

L'EA refuse également de placer des ordres par minutes lorsqu'il utilise la fonction StrToTime().

Merci encore... Je vais continuer à creuser...

 
Sepulca:

C'est peut-être mieux.

Nah... Cela ne fonctionne pas non plus...

Même en utilisant une autre fonction StrToTime() - si je spécifie le temps en heures entières - tout va bien, mais dès que j'ajoute des minutes - aucun résultat. Bien que, comme je l'ai écrit dans le 1er post, les commandes se ferment à 23h45 le vendredi sans aucun problème...

bool Trade=true;

string OpenTime = "14:00"; // Вот так работает!!!

string OpenTime = "14:25"; // А вот так - не работает!!!

if ( StrToTime(OpenTime) == TimeCurrent() && Trade )

{ OpenOrders();Print("Время пришло ",TimeHour(TimeCurrent()),":",TimeMinute(TimeCurrent())); return(0); }
//----
return(0);
}
//+------------------------------------------------------------------+
void OpenOrders(){return(0);}

 
Crosswert:

Nah... Cela ne fonctionne pas non plus...

Même en utilisant une autre fonction StrToTime() - si je spécifie le temps en heures entières - tout va bien, mais dès que les minutes sont ajoutées - aucun résultat. Bien que, comme je l'ai écrit dans le 1er post, les ordres se ferment à 23:45 le vendredi sans aucun problème...

bool Trade=true;

string OpenTime = "14:00"; // Вот так работает!!!

string OpenTime = "14:25"; // А вот так - не работает!!!

if ( StrToTime(OpenTime) == TimeCurrent() && Trade )

{ OpenOrders();Print("Время пришло ",TimeHour(TimeCurrent()),":",TimeMinute(TimeCurrent())); return(0); }
//----
return(0);
}
//+------------------------------------------------------------------+
void OpenOrders(){return(0);}


Je ne sais pas... Ce code fonctionne pour moi aussi....

 
Comment le testez-vous ? Si, par exemple, sur H1 et aux prix d'ouverture, cela ne fonctionnera probablement pas.
 
Sepulca:
Comment le testez-vous ? Si, par exemple, sur H1 et aux prix d'ouverture, cela ne fonctionnera probablement pas.
Conseillez de tester aux prix d'ouverture du procès-verbal.
 
Sepulca:
Comment faites-vous les tests ? Si, par exemple, sur H1 et aux prix d'ouverture, cela ne fonctionnera probablement pas.

Vous voyez, c'est aussi simple que ça... Les minutes doivent être un multiple de TF ...

Maintenant / si ( TimeCurrent() == StrToTime(OpenTime) && Trade ), si OpenTime = 14:25 / fonctionnera, mais seulement sur TF=M1 et M5 ... La fonction d'ouverture des ordres a besoin des cours actuels mais la fonction de fermeture des ordres n'en a pas besoin...

J'ai manqué ce point d'une manière ou d'une autre (à cause de mon inexpérience)...

Merci beaucoup, j'ai résolu le problème...

 

Sepulca:

Comment faites-vous les tests ? Si, par exemple, sur H1 et aux prix d'ouverture, cela ne fonctionnera probablement pas.


Ha ha... Et voici un mensonge...

Le problème s'est avéré être dans la fonction OpenOrders(). J'ai complètement oublié de supprimer le contrôle de l'ouverture des ordres sur une rupture de bougie (barre) :

if (Volume[0] > 1) return;

Donc, sur quelle TF le Conseiller Expert testait, il ouvrait des ordres sur ces minutes...

Stupide en général, sur un coup dur...

Merci...