[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 573

 
//+------------------------------------------------------------------+
//|                                                       iTicks.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#include <WinUser32.mqh>
extern int  delay_MSecond = 2000;
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   while(!IsStopped()){
      PostMessageA (WindowHandle (Symbol(), Period()), WM_COMMAND, 33324, 0);
      PostMessageA (WindowHandle (Symbol(), 0), RegisterWindowMessageA ("MetaTrader4_Internal_Message"), 2, 1);
      Sleep(delay_MSecond);
   }
//----
   return(0);
  }
//+------------------------------------------------------------------+
 

Comment les requêtes sont-elles adressées au testeur de stratégie? Comment, par exemple, exécuter la commande suivante : "Exécuter un test sur un EA sur une période spécifique avec un ensemble spécifique et, une fois terminé, enregistrer le rapport".

 
alsu:
C'est difficile de comprendre le code de quelqu'un d'autre en même temps... Si je devais deviner, je vérifierais les valeurs Imin,Imax,Jmin,Jmax dans la fonction Neuron.Study(). A l'époque 0, la valeur 32 est passée en tant que lR, qui est ensuite utilisée dans l'indexation (habituellement nous indexons les tableaux de 0 à la taille-1). Il est tout à fait possible que ce soit là que se situe l'erreur.

En effet, l'erreur était liée à ces calculs. Merci
 
alkador:

Comment sont traitées les requêtes adressées au testeur de stratégie ? Comment, par exemple, exécuter la commande suivante : "Exécutez un test sur un EA à un certain intervalle avec un certain fichier et, une fois terminé, enregistrez le rapport".

Configuration au démarrage

Le terminal client peut être démarré avec des paramètres prédéfinis. À cette fin, le nom du fichier de configuration est transmis au terminal client en tant que paramètre.

Par exemple :

  terminal.exe config\start.ini terminal.exe test1.txt terminal.exe "C:\Program Files\MetaTrader 4\config\settings25.ini"

Si le chemin complet du fichier n'est pas spécifié (Drive:\SubDirectory\FileName), le fichier sera recherché dans le répertoire du terminal du client. Le fichier de configuration comporte les lignes suivantes :
[Paramètre] = [Valeur].

Les commentaires commencent par un point-virgule ( ;) et ne sont pas évalués.

Les paramètres du fichier de configuration peuvent être divisés en plusieurs groupes : paramètres généraux, paramètres du serveur proxy(onglet "Serveur" dans le tableau des paramètres du terminal), paramètres FTP(onglet "Publier" dans le tableau des paramètres du terminal), paramètres des conseillers experts(onglet "Conseillers experts" dans le tableau des paramètres du terminal), paramètres du lancement unique d'un conseiller expert ou d'un script, paramètres du lancement du testeur de stratégie.

Paramètres communs

  • Profil - nom du sous-répertoire dans le répertoire des profils. Les graphiques seront ouverts dans le terminal client selon le profil spécifié. Si cette option n'est pas spécifiée, le profil actuel sera ouvert.

  • MarketWatch - nom du fichier (répertoire \symbolsets) qui contient la liste des symboles à afficher dans la fenêtre de surveillance du marché. Un tel fichier peut être reçu en utilisant la commande du menu contextuel de la fenêtre "Market Watch - Symbolsets - Save As".

  • Login - numéro du compte auquel se connecter au démarrage. Si ce paramètre est absent, le login actuel sera utilisé.

  • Password - mot de passe pour la connexion. Ce paramètre sera ignoré si le terminal client stocke des données personnelles sur disque et que le numéro de compte à connecter figure dans la liste.

  • Serveur - nom d'un serveur commercial auquel la connexion doit être établie. Le nom du serveur coïncide avec le nom du fichier srv correspondant stocké dans le répertoire config. Ce paramètre sera ignoré si les informations sur le compte à connecter sont enregistrées sur le disque.

  • AutoConfiguration - "true" ou "false" selon que l'auto-configuration doit être activée. Si ce paramètre est absent, la valeur des paramètres actuels du serveur sera utilisée.

  • DataServer - adresse du centre de données. Si l'autoconfiguration du serveur est activée, cette entrée peut être ignorée. Si ce paramètre est absent, la valeur des paramètres actuels du serveur sera utilisée.

  • EnableDDE - "true" ou "false" selon que le serveur DDE doit être activé ou non. Si ce paramètre est absent, la valeur des paramètres actuels du serveur sera utilisée.

  • EnableNews - "true" ou "false" selon que la réception de nouvelles doit être autorisée ou non. Si ce paramètre n'est pas présent, la valeur des paramètres actuels du serveur sera utilisée.

Exemple :

  ; paramètres communs Profil=test 3 MarketWatch=set2.set Login=12345 Password=xxxxxx Server=MetaQuotes-demo AutoConfiguration=false DataServer=192.168.0.1:443 EnableDDE=true EnableNews=false

Paramètres du proxy

  • ProxyEnable - "true" ou "false" selon que le serveur proxy doit être utilisé pour se connecter au serveur commercial.

  • ProxyServer - adresse du serveur proxy.

  • ProxyType - type de serveur proxy. Il peut s'agir de "HTTP", "SOCKS4" ou "SOCKS5".

  • ProxyLogin - connexion au serveur proxy.

  • ProxyPassword - mot de passe pour accéder au serveur proxy.

Si l'un de ces paramètres est manquant, les paramètres actuels du terminal client sont utilisés (paramètres du proxy dans l'onglet "Serveur" du tableau des paramètres du terminal client).

Exemple :

  ; paramètres du proxy ProxyEnable=true ProxyServer=proxy.company.com:3128 ProxyType=HTTP ProxyLogin=user45 ProxyPassword=xxx

Paramètres FTP

  • FTPEnable - active/désactive la publication. Les valeurs acceptables sont "true" ou "false".

  • FTPPassiveMode - active/désactive le mode passif. Valeurs acceptables "true" ou "false".

  • FTPAccount - numéro du compte dont les données d'état doivent être envoyées à FTP.

  • FTPServer - adresse du serveur FTP.

  • FTPLogin - login pour l'autorisation sur le serveur FTP.

  • FTPPassword - mot de passe pour l'accès au serveur FTP.

  • FTPPath - nom du répertoire sur le serveur FTP où le rapport est placé.

  • FTPPeriod - périodicité de l'envoi du rapport au serveur FTP en minutes.

Si l'un des paramètres énumérés est absent, les paramètres actuels du terminal client sont utilisés(onglet "Publication" dans le tableau des paramètres du terminal).

Exemple :

  ; paramètres ftp FTPEnable=true FTPPassiveMode=false FTPAccount=12345 FTPServer=ftp.company.com FTPLogin=admin FTPPassword=pAssWOrd123 FTPPath=/inetpub FTPPeriod=10

Paramètres des experts

  • ExpertsEnable - active/désactive les experts.

  • ExpertsDllImport - active/désactive l'importation de DLL.

  • ExpertsDllConfirm - active/désactive la confirmation manuelle des appels de fonctions DLL.

  • ExpertsExpImport - permet/interdit l'importation de fonctions à partir d'Expert Advisors externes ou de bibliothèques MQL4.

  • ExpertsTrades - active/désactive le trading EA.

  • ExpertsTradesConfirm - active/désactive la confirmation manuelle des opérations de trading par le conseiller expert.

Remarque : tous les paramètres d'un groupe de conseillers experts ne peuvent prendre que les valeurs "true" ou "false".

Si l'un des paramètres mentionnés ci-dessus est absent, les paramètres actuels du terminal client sont utilisés(onglet "Expert Advisors" dans le tableau des paramètres du terminal).

Exemple :

  ; Paramètres des experts ExpertsEnable=true ExpertsDllImport=true ExpertsExpImport=true ExpertsTrades=true ExpertsTradesConfirm=false

Paramètres du conseiller expert unique et/ou du script

  • Symbole - nom du symbole dont le graphique doit être ouvert juste après le démarrage du terminal. Après la fermeture du terminal client, les informations relatives à ce graphique supplémentaire ne sont pas sauvegardées. Si le terminal est redémarré sans fichier de configuration, ce tableau ne sera pas ouvert. Si ce paramètre est absent, aucun graphique supplémentaire n'est ouvert.

  • Période - période du graphique (M1, M5, M15, M30, H1, H4, D1, W1, MN). Si ce paramètre est absent, H1 est utilisé.

  • Modèle - nom du fichier modèle (répertoire \templates) à appliquer au graphique.

  • Expert - nom de l'Expert Advisor à lancer après le démarrage du terminal client. L'Expert Advisor démarre sur le graphique qui est ouvert selon les paramètres Symbole et Période. Si le paramètre Symbole est absent, aucun graphique supplémentaire n'est ouvert, et l'EA est lancé sur le premier graphique du profil actuel. S'il n'y a pas de graphiques dans le profil actuel, le conseiller expert ne sera pas lancé. Si ce paramètre n'est pas disponible, aucun expert ne sera lancé.

  • ExpertParameters - nom du fichier contenant les paramètres de l'EA (répertoire \experts\presets). Un tel fichier peut être créé dans la fenêtre des propriétés de l'Expert Advisor en appuyant sur le bouton "Paramètres d'entrée - Enregistrer". Il est généralement utilisé pour stocker les paramètres qui sont différents de ceux par défaut. Si ce paramètre est absent, les paramètres par défaut sont utilisés.

  • Script - nom du script à lancer après le démarrage du terminal client. Le script est lancé selon les mêmes règles que le conseiller expert (décrit ci-dessus).

  • ScriptParameters - nom du fichier contenant les paramètres du script (répertoire \experts\presets). Ce fichier est généré de la même manière que pour le conseiller expert.

Exemple :

  ; ouvrir le graphique et exécuter l'expert et/ou le script Symbol=EURUSD Period=H4 Template=popular.tpl Expert=MACD Sample ExpertParameters=macd.set Script=period_converter ScriptParameters=

Paramètres de lancement de Strategy Tester

  • TestExpert - nom du conseiller expert à lancer pour les tests. Si ce paramètre est absent, aucun test n'est effectué.

  • TestExpertParameters - nom du fichier contenant les paramètres (répertoire \tester). Ce fichier peut être créé dans la fenêtre des propriétés de l'Expert Advisor, en cliquant sur le bouton "Paramètres d'entrée - Enregistrer". Il est généralement utilisé pour stocker des paramètres différents de ceux par défaut. Les autres paramètres de l'EA testé dans les onglets "Test" et "Optimisation" (et dans l'onglet "Paramètres d'entrée" si ce paramètre est absent) sont remplis avec les valeurs enregistrées automatiquement dans le fichier \tester\[nom de l'expert].ini après le dernier test.

  • TestSymbol - nom de l'instrument, sur les données duquel le test de l'Expert Advisor doit être effectué. Si ce paramètre n'est pas disponible, la dernière valeur utilisée dans le testeur est utilisée.

  • TestPeriod - période du graphique (M1, M5, M15, M30, H1, H4, D1, W1, MN). H1 est utilisé si ce paramètre est absent.

  • TestModel - 0, 1 ou 2 selon le modèle de test (All ticks, Benchmarks, Open prices). Si ce paramètre n'est pas disponible, la valeur 0 (Tous les ticks) est utilisée.

  • TestOptimization - active/désactive l'optimisation. Les valeurs acceptables sont "true" ou "false". Si ce paramètre n'est pas disponible, la valeur "false" est utilisée.

  • TestDateEnable - active/désactive l'option "Utiliser les dates". Les valeurs acceptables sont "true" ou "false". Si cette option n'est pas disponible, "false" est utilisé.

  • TestFromDate - date de début de la plage de tests sous la forme AAAA.MM.JJ. Si ce paramètre est absent, "1970.01.01" est utilisé.

  • TestToDate - date de fin de la plage de test sous la forme AAAA.MM.JJ. Si ce paramètre est absent, il s'agit de 1970.01.01.

  • TestReport - nom du fichier du rapport de test. Le fichier sera créé dans le répertoire du terminal du client. Le chemin relatif peut être spécifié, par exemple : tester\MovingAverageReport". Si aucune extension n'est spécifiée dans le nom du fichier du rapport, l'extension ".htm" sera utilisée. Si ce paramètre n'est pas spécifié, le rapport de test ne sera pas généré.

  • TestReplaceReport - autorise/interdit l'écriture répétée du fichier de rapport. Les valeurs acceptables sont "true" ou "false". Si "false" est défini et que le fichier de rapport portant ce nom existe déjà, le nom du fichier de rapport sera complété par un numéro de séquence entre crochets. Par exemple, "MovingAverageReport[1].htm". Si ce paramètre est absent, "false" sera utilisé.

  • TestShutdownTerminal - active/désactive l'arrêt du terminal après le test. Les valeurs acceptables sont "true" ou "false". Si ce paramètre est absent, "false" est utilisé. Si, pendant le test, l'utilisateur a appuyé sur le bouton "Stop", la valeur de ce paramètre est remise à "false", car l'utilisateur a pris le contrôle.

Exemple :

  TestExpert=Moving Average TestExpertParameters=ma0.set TestSymbol=EURUSD TestPeriod=H1 TestModel=2 TestOptimization=false TestDateEnable=true TestFromDate=1970.01.01 TestToDate=2006.06.06 TestReport=MovingAverageReport TestReplaceReport=false TestShutdownTerminal=true

 
AndEv:
Si quelqu'un le sait, j'ai une question : j'ai besoin d'un script en boucle qui "appuierait" sur le bouton "Refresh" une fois toutes les 0,5 secondes dans le graphique actuel et qui réinitialiserait les indicateurs. "J'ai essayé de faire un script en boucle en utilisant WindowRedraw(). J'ai essayé de faire un script en boucle en utilisant WindowRedraw() et Sleep(500), mais les indicateurs ne sont pas réinitialisés.
Cette bibliothèque contient diverses fonctions pour le contrôle de MT4. Incluant des fonctions de mise à jour du graphique pour les Expert Advisors et les indicateurs. Il existe même des fonctions autonomes. J'ai exécuté le script une fois et c'est tout. Il est déchargé et les graphiques continuent à se mettre à jour jusqu'à ce que vous déchargiez MT4.
 

Adapté de

Armen63 18.02.2012 14:47 |

Bonjour, j'aibesoin d'aide, mais je ne sais pas comment l'implémenter... Quelqu'un peut-il me conseiller ? xocu chtobi v sovetnike obshee chislo sell ili buy ordersov kontrolirovalos int Total1 = OrdersTotal() ;

si (Total1 <= MaxOrders || MaxOrders == 0) tak ya kontroliruyu v all tipi orders a nado po otdelnosti i dlya sell i dlya buy

 

à Armen63

int CountBuys() 
{
   int l_count_4 = 0;
   int l_ord_total_12 = OrdersTotal();
   for (int l_pos_8 = 0; l_pos_8 < l_ord_total_12; l_pos_8++) {
      OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
      if (OrderType() == OP_BUY) l_count_4++;
   }
   return (l_count_4);
}

int CountSells() 
{
   int l_count_4 = 0;
   int l_ord_total_12 = OrdersTotal();
   for (int l_pos_8 = 0; l_pos_8 < l_ord_total_12; l_pos_8++) {
      OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
      if (OrderType() == OP_SELL) l_count_4++;
   }
   return (l_count_4);
}
 

Bonjour, chers utilisateurs du forum !

Je viens de commencer à apprendre mql4 et j'ai décidé d'écrire mon propre EA.

Savez-vous comment écrire la condition suivante dans le code : si les trois derniers prix de vente sont supérieurs au précédent (ask3>ask2>ask1), alors placez un ordre d'achat.

J'espère avoir énoncé l'idée clairement), si quelque chose ne va pas, demandez, je préciserai)

Je vous serai très reconnaissant pour votre aide ;))

 
comme ça.
datetime ask=TimeCurrent();
   double ask1=0,ask2=0,ask3=0;
   ask1=Ask;
   if(ask!=TimeCurrent()){ask2=Ask;ask=TimeCurrent()}
   if(ask!=TimeCurrent()){ask3=Ask;}
   
Je me trompe peut-être. J'apprends juste.
 
openlive:
Par exemple, je me trompe peut-être - je suis en train d'apprendre
.


Si nous supposons que l'EA traite chaque tick, alors nous devons faire les choses un peu différemment.

int start(){
   static double ask1=1, ask2=-1, ask3=-1;
   ask3=ask2;
   ask2=ask1;
   ask1=Ask;

   if (ask3>0) {
      if (ask1>ask2) {
         if (ask2>ask3) {
             //условие выполнено для бай
         }
      }
      if (ask1<ask2) {
         if (ask2<ask3) {
             //условие выполнено для селл
         }
      }
   }
}
Raison: