[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 261

 

Les gars, que signifie un nombre entier invalide comme paramètre 10 pour la fonction OrderSend et comment le corriger ?

 
Pyxlik2009:

Les gars, que signifie un nombre entier invalide comme paramètre 10 pour la fonction OrderSend et comment le corriger ?

Veuillez me donner une ligne de code où cela se produit.

 
Pyxlik2009:

Les gars, que signifie un nombre entier invalide comme paramètre 10 pour la fonction OrderSend et comment le corriger ?


Le délai d'expiration doit être un nombre entier.
 
Roll:

Le délai d'expiration doit être un nombre entier.
Je n'ai même pas de fractionnement dans les paramètres.
 
sergey_r:
Oui, mais mon ordre est passé à la clôture de la barre et j'ai besoin du prix actuel. Si le prix actuel est inférieur au plus bas de la barre précédente... Si le prix actuel est tombé en dessous du prix précédent, l'ordre est placé.

essayez ceci

if (Bid<iLow(NULL, 0, 1)


 
Pyxlik2009:
Je n'ai même pas de fractionnement dans les paramètres.

Se référer au 10ème paramètre de la fonction ci-dessus. Mettez-le à 0.
 
paukas:
Il y a une chose telle qu'un script. Quand on en a besoin, il suffit de l'exécuter.


Il ne s'agit pas d'effectuer l'action une seule fois. Le fait est qu'en exécutant ce script, il lira l'heure de son réglage mais pas l'heure déclenchée.

Par conséquent, le moment même du déclenchement de l'ordre en attente n'est enregistré nulle part dans le terminal. J'ai juste besoin de connaître cette heure et l'idéal serait d'utiliser la fonction intégrée MQL4 PendingOrderFilledTime(), si elle existe. Dans ce cas, MT4 surveille lui-même les ordres en attente et me fournit un résultat prêt à l'emploi.

Je ne vois donc pas d'autre solution que d'utiliser un conseiller expert ou un script en boucle sur un graphique. Pourquoi je demande ici ? Peut-être que quelqu'un a eu un problème similaire et l'a résolu de manière élégante, sans conseiller expert ni script, en utilisant uniquement les moyens de MQ4.


LazarevDenis:

Je ne comprends pas pourquoi vous n'êtes pas satisfait de l'EA, il semble que vous n'allez pas construire un système de trading complexe à réseau neuronal avec auto-optimisation, il suffit de vérifier à chaque tick si le pendule fonctionne et lorsqu'il est déclenché vous auriez un message texte à l'écran ou audio ou les deux, la calculatrice peut se charger de cette tâche, ne vous préoccupez pas des ordinateurs ou vous avez juste des problèmes d'écriture ?

Je n'ai aucun problème pour l 'écrire. Je ne veux pas utiliser un outil improvisé pour recevoir des informations du terminal. Un conseiller expert est une solution à un problème de manière directe.

Si chaque tâche, pour laquelle il n'existe pas de fonction MQ4 standard, était résolue par un conseiller expert, le terminal en disposerait. Et il n'est pas bon de créer des maillons faibles supplémentaires dans la chaîne. Lorsque vous avez beaucoup de terminaux ouverts et que chacun d'entre eux a besoin d'un EA et de vérifier s'il est là ou non, vous convenez que c'est peu pratique et peu judicieux. Écrire une vérification pour l'attachement de l'EA et l'obliger à s'y exécuter est la même chose, alors pourquoi compliquer la chose, si peut-être quelqu'un a déjà résolu ce problème en utilisant la combinaison des fonctions MQL4 existantes ?

 
Starting:
...peut-être que quelqu'un a déjà résolu un problème similaire avec une combinaison de fonctions MQL4 existantes.
Je l'ai lu et je ne comprends pas la logique. Supposons que la fonction dont vous avez besoin soit disponible, comment l'utiliseriez-vous ? Vous devrez de toute façon l'insérer dans un conseiller expert ou dans un script.
Ainsi, la question ne porte pas sur l'absence d'une fonction spéciale (et vous ne pouvez pas remercier pour chaque éternuement), mais sur la complexité de l'écriture d'un code qui répond à vos exigences.
 
granit77:
Je l'ai lu et je ne comprends pas la logique. OK, disons qu'il y a une fonction dont vous avez besoin, comment l'utiliserez-vous ? Vous devrez de toute façon l'insérer dans Expert Advisor ou dans un script.
La question ne porte donc pas sur l'absence d'une fonction spéciale (et vous ne pouvez pas remercier pour chaque éternuement), mais sur la difficulté d'écrire un code qui réponde à vos exigences.
.

L'utilisation est simple : j'exécute un script qui écrit les données de la dernière transaction fermée avec l'heure d'ouverture la plus proche. Les pendants déclenchés par le script provoquent une confusion dans les rangs des ordres fermés. Au moment où le script démarre, il n'a aucun moyen d'obtenir les données relatives aux ordres en attente de déclenchement, puisque leur date de déclenchement est fixée dans l'historique, et non la date de leur exécution.


Un exemple simple.

L 'ordre d'attente 1 a été fixé le 01.01.2011.

02.01.2011 un ordre de marché 2 a été ouvert.

Le 03.01.2011, l'ordre en attente 1 s'est déclenché et est devenu l'ordre de marché 1 dont l'OrderOpenTime() indiquera le 01.01.2011, bien qu'il soit réellement devenu un ordre de marché le 03.01.2011.

04.01.2011 l'ordre de marché 2 a été fermé.

05.01.2011 l'ordre de marché 1 a été fermé.

Dans l'historique, la date du 02.01.2011 de l'ordre de marché 2 sera donnée comme la date d'ouverture du dernier ordre fermé avec la dernière date d'ouverture.

En fait, la date d'ouverture la plus récente (déclenchée) du dernier ordre en suspens fermé 1 est le 03.01.2011.

C'est la question, est-il possible d'obtenir la date réelle de déclenchement de l'ordre afin de trier correctement les ordres fermés par leur date d'ouverture sans que le Conseiller Expert ne surveille le compte ?


Imaginez que vous êtes en train de négocier, vous avez des ordres en attente, fixés il y a longtemps. Et ici vous voyez que certains d'entre eux se sont déclenchés, puis se sont fermés après un certain temps. Mais ils seront pris en compte en fonction de leur date de placement "hirsute", même s'ils ont été placés il y a un an, mais déclenchés et clôturés seulement aujourd'hui. Vous voulez voir ce qui a été réellement ouvert ou déclenché sur le marché en dernier, afin qu'il soit donné en dernier, et non pas tout ce qui a été une fois mélangé avec ceux du marché qui ont été ouverts très récemment. Merci de l'attention que vous portez à ma question.

 

Messieurs, pouvez-vous me dire où j'ai fait une erreur en insérant cette fonction de chronométrage dans mon code EA ?

int init()
  {
  
bool isTradeTimeInt (int hb=05,int mb=50,int he=23,int me=00) 
    {
  datetime db, de;           // Время начала и окончания работы
  int      hc;               // Часы текущего времени торгового сервера

  db=StrToTime(TimeToStr(TimeCurrent(), TIME_MINUTES)+" "+hb+":"+mb);
  de=StrToTime(TimeToStr(TimeCurrent(), TIME_MINUTES)+" "+he+":"+me);
  hc=TimeHour(TimeCurrent());
  if (db>=de) {
    if (hc>=he) de+=24*60*60; else db-=24*60*60;
  

  if (TimeCurrent()>=db && TimeCurrent()<=de) return(True);
  else return(False);
}
   return(0);
  }

Le compilateur m'a juste inondé d'erreurs.

Raison: