Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1024

 
WinZip:
Pouvez-vous me conseiller sur ce problème ? Je suis en train de créer un Conseiller Expert de trading, pour des raisons de commodité, j'ai fait une copie du Conseiller Expert en tant que nouveau, et j'y fais des expériences. Mais il y a une heure, Expert Advisor pour les expériences a commencé à renvoyer l'erreur "Trading for Expert Advisor is prohibited". J'ai deux Expert Advisors presque identiques, l'un est commercialisé et l'autre non. J'ai raté le moment où mon conseiller expert a arrêté de négocier. J'ai essayé de créer une fonction pour fermer les transactions, mais lorsque je supprime tout ce que j'ai ajouté, il n'y a toujours pas de transaction.

Dans ses paramètres, cochez la case pour l'autoriser à faire des échanges.

 
Les journaux et les résultats des tests à 0 remplissent le lecteur C, y a-t-il un moyen de changer l'autre lecteur pour les journaux dans les paramètres ?
 

Je m'excuse pour cette question stupide, qui a probablement été discutée un million de fois...

Comment se fait-il que je ne reçoive pas de notifications de réponses ou même de suppressions de fils de discussion... Pas dans le courrier ou dans les messages locaux... ?

Et comment je le répare ? Je pense que c'est vérifié mais ça ne marche pas...

 
//+------------------------------------------------------------------+
int OnInit()
  {
  datetime open_bars_time = iTime(NULL,0,0); 
  Alert("старт ",open_bars_time);
  int i=0;
  while(iTime(NULL,0,0)==open_bars_time && !IsStopped()) 
  {Comment(iTime(NULL,0,0));}
  Alert("Цикл закончен",open_bars_time);
//--- create timer
   EventSetTimer(Period()*60);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+

требуется запускать прогу в начале бара. Почему значение возвращаемое iTime(NULL,0,0) не изменяется?
 
Sergey Guliaev:

Vous devez ajouter Sleep() et RefreshRates() à la boucle, sinon rien ne bouge.

Et en général, l'idée est fondamentalement fausse. Vous ne pouvez pas faire cela dans OnInit.

Si vous devez attendre l'ouverture de la barre, vous devez attendre dans OnTick. Si vous voulez changer d'heure, attendez dans OnTimer.

 
Maxim Kuznetsov:

Vous devez ajouter Sleep() et RefreshRates() à la boucle, sinon rien ne bougera.

et l'idée est fondamentalement fausse. Vous ne pouvez pas faire cela dans OnInit

S'il est nécessaire d'attendre l'ouverture de la barre - cela doit être fait dans OnTick. Si vous devez attendre le changement d'heure, vous devez attendre sur OnTimer.

Merci. La tâche consiste à faire en sorte que le premier tick ait +/- quelques secondes au début de la barre. D'après mes observations, les ticks ne sont pas synchronisés avec le début de la barre.

 
Sergey Guliaev:

Merci. L'objectif est que le premier tic soit à +/- quelques secondes du début de la barre. D'après mes observations, les ticks ne sont pas synchronisés avec le début de la barre.

Vos observations sont étranges. Vous avez confondu cause et effet. Non pas les ticks dépendent des barres, mais l'ouverture d'une nouvelle barre dépend de l'arrivée d'un nouveau tick. S'il n'y a pas de tic, il n'y a pas de barre. Cela arrive fréquemment sur les procès-verbaux.

 

Bonjour, chers collègues !

Je ne comprends pas la raison, j'ai le volume (LotSize) calculé en fonction du risque. Lorsque je retire la taille du lot avec le message Alert(LotSize), il affiche 0,12 par exemple, mais la fonction OrderSend se plaint de la taille. Lorsque j'écris LotSixe=0.12 dans le code ; OrderSend fonctionne bien.

Quelle peut en être la raison ?

 
Sandjar Ikramov:

Bonjour, chers collègues !

Je ne comprends pas la raison, j'ai le volume (LotSize) calculé en fonction du risque. Lorsque je retire la taille du lot avec le message Alert(LotSize), il affiche 0,12 par exemple, mais la fonction OrderSend se plaint de la taille. Lorsque j'écris LotSixe=0.12 dans le code ; OrderSend fonctionne bien.

Quelle peut en être la raison ?

Dans ces cas-là, ils demandent toujours un code... ...qui sait ce qui est écrit là et comment c'est écrit...

 
Sandjar Ikramov:

Bonjour, chers collègues !

Je ne comprends pas la raison, j'ai le volume (LotSize) calculé en fonction du risque. Lorsque je retire la taille du lot avec le message Alert(LotSize), il affiche 0,12 par exemple, mais la fonction OrderSend se plaint de la taille. Lorsque j'écris LotSixe=0.12 dans le code ; OrderSend fonctionne bien.

Quelle peut en être la raison ?

Eh bien... probablement parce que ce sont des variables différentes... Et 0,12 (virgule) n'est pas du tout égal à 0,12(point).