Questions des débutants MQL4 MT4 MetaTrader 4 - page 159

 

Bonjour, chers programmeurs, aidez-moi s'il vous plaît à améliorer cet EA.



1. ouverture automatique des commandes.
2. lorsqu'il atteint +, il ouvre un ordre du même côté avec le lot initial.
3. lorsqu'il atteint le -, il inverse l'ordre (ouvre l'ordre dans la direction dans laquelle il a été reçu).
Dossiers :
 
Salutations, chers collègues !
Pouvez-vous nous dire si quelqu'un a rencontré ce problème ?
1) Testé en coopérative MT4. There are Error to order modify1 in the log. Quelle est la raison de l'erreur de commande de modify1 et comment la corriger ?
2) Je ne peux pas installer et exécuter l'EA. Je déplace l'EA vers la fenêtre graphique et soit il ne se colle pas au coin supérieur droit, soit il reste collé, mais ne démarre pas. Au lieu d'un colobe, c'est un rectangle ! (Voir la capture d'écran)
3) Comment installer correctement MT4 sur mon ROSA (Linux) ? J'ai installé MT4 sur c/Program Files (x86)/MT4 . Dois-je copier les fichiers de c/Program Files (x86)/MT4 vers c/users/xxl/AppData/ et vers _c/users/xxl/Application Data/MetaQuotes/ ? Si oui, quels fichiers dois-je placer dans les dossiers LocalLow et Roaming et lesquels dans les dossiers Terminal et WebInstall ?
Merci pour cette réponse détaillée ! )

 

Bonjour à tous. Voici l'essentiel. Il y a un point d'intersection de l'alligator avec la barre N. Nous devons trouver l'angle entre l'alligator et, par exemple, le creux de la première barre à partir de ce point d'intersection. La difficulté est que nous avons deux valeurs incompatibles - le nombre de barres et le prix. Je voulais, comme suggéré par quelqu'un, danser sur la taille d'une cellule du graphique. Mais si le nombre de barres dans le carré est proportionnel au changement d'échelle, le prix n'a pas une telle proportion.

J'ai deux questions basées sur ce qui précède :

1. Peut-être que quelqu'un a rencontré ou connaît la solution à ce problème.

2. Le conseiller expert fonctionne-t-il avec une certaine échelle du graphique, ou seulement avec le prix ?

 
Alexander Dubovik:

Une dernière remarque pour les développeurs.

La documentation relative à la construction du langage typedef (ainsi que le typedef lui-même) laisse perplexe.

typedef char My_Char ; - ne compile pas.

Extrait de la documentation :"Le mot clé typedef en C++ vous permet de créer des types de données personnalisés .....". Excusez-moi, mais POURQUOI faites-vous référence au C++ dans la documentation sur MQL, si en fait MQL ne contient que la déclaration de pointeurs vers des fonctions ?

Dans MQL4/5, le typedef est neutralisé et ne sert qu'à déclarer des pointeurs vers des fonctions et n'est utile pour rien d'autre.


typedef int (*TFunc)(int,int);

int add(int x,int y) 
{
    return(x+y); 
}

void OnStart()
{
    TFunc pfunc = add;   
    Print(pfunc(4,5));    
}
 
Alex Pirate:

Bonjour à tous !

J'ai un EA simple, il est simple, quelque chose ne va pas, il me donne une erreur... je veux y attacher un chalut mais il ne s'ouvre même pas... il dit - la valeur de retour de 'OrderSend' devrait être vérifiée

pourquoi ça vérifie toujours ??? qu'est-ce qui ne va pas ?? on dirait que les programmeurs et ceux qui sont bons pour aider tout le monde ici.... Dommage (( !)

https://translate.google.ru/?hl=ru&tab=TT#en/ru/return%20value%20of%20 'OrderSend'%20should%20be%20checked

Google Переводчик
  • translate.google.ru
Бесплатный сервис Google позволяет мгновенно переводить слова, фразы и веб-страницы с английского на более чем 100 языков и обратно.
 
Alex Pirate:

Bonjour à tous !


 
Artyom Trishkin:


Merci, je suis conscient de cela... c'est la question traduite que j'ai posée en bas de page... pas ce qu'il dit je me demande... pourquoi ? qu'est-ce qui ne va pas avec le code ??? qu'est-ce que j'ai mal écrit ???

 
Alex Pirate:

Merci, je suis conscient de cela... c'est la question traduite que j'ai posée en bas de page... Je me demande pourquoi ? Quel est le problème avec le code ?

 
Artyom Trishkin:

extern int    MA_1_Period   = 22;
extern int    MA_1_MAShift  = 1;
extern int    MA_1_Method   = 1;
extern int    MA_1_Price    = 1;
extern int    MA_1_Shift    = 0;

extern int    MA_2_Period   = 55;
extern int    MA_2_MAShift  = 1;
extern int    MA_2_Method   = 1;
extern int    MA_2_Price    = 1;
extern int    MA_2_Shift    = 0;

extern int    MA_3_Period   = 163;
extern int    MA_3_MAShift  = 1;
extern int    MA_3_Method   = 1;
extern int    MA_3_Price    = 1;
extern int    MA_3_Shift    = 0;

extern double lot           = 0.1;
extern int    TP            = 60;
extern int    SL            = 40;
extern int    Slippage      = 5;
extern int    Magic         = 888;

int timeprev;

//+------------------------------------------------------------------+
int init()
{ 
   if (Digits == 3 || Digits == 5)
   {
     TP           *= 10;
     SL           *= 10;
     Slippage     *= 10;
     
   }

   return(0); 
}
//+------------------------------------------------------------------+
int deinit() 
{
   return(0);
}
//+------------------------------------------------------------------+

int start()
{
   if (timeprev == Time[0]) return(0);
   timeprev = Time[0];
   
   double MA_1_1 = iMA(Symbol(), 0, MA_1_Period, MA_1_MAShift, MA_1_Method, MA_1_Price, MA_1_Shift);
   double MA_1_2 = iMA(Symbol(), 0, MA_1_Period, MA_1_MAShift, MA_1_Method, MA_1_Price, MA_1_Shift);
   
   double MA_2_1 = iMA(Symbol(), 0, MA_2_Period, MA_2_MAShift, MA_2_Method, MA_2_Price, MA_2_Shift);
   double MA_2_2 = iMA(Symbol(), 0, MA_2_Period, MA_2_MAShift, MA_2_Method, MA_2_Price, MA_2_Shift);
   
   double MA_3_1 = iMA(Symbol(), 0, MA_3_Period, MA_3_MAShift, MA_3_Method, MA_3_Price, MA_3_Shift);
   double MA_3_2 = iMA(Symbol(), 0, MA_3_Period, MA_3_MAShift, MA_3_Method, MA_3_Price, MA_3_Shift);
     
 //+------------------------------------------------------------------+  
 // покупаем
 
   if (CountBuy() + CountSell() == 0 && MA_1_1 > MA_1_2 && MA_2_1 > MA_2_2 && MA_3_1 > MA_3_2 )
   
      {
         OrderSend(Symbol(), OP_BUY , lot, Ask, Slippage, SL, TP, "", Magic,0, Green);
      }
// продаём
   
   if (CountBuy() + CountSell() == 0 && MA_1_1 < MA_1_2 && MA_2_1 < MA_2_2 && MA_3_1 < MA_3_2 )
   
      {
         OrderSend(Symbol(), OP_SELL, lot, Bid, Slippage, SL, TP, "", Magic,0, Red);
      }
          
   return(0);
}
//+------------------------------------------------------------------+
int CountBuy()
{
   int count = 0;
   
   for (int i = OrdersTotal() - 1; i >= 0; i --)
   {
      if (OrderSelect(i,SELECT_BY_POS, MODE_TRADES))
      {
        if (OrderSymbol() == Symbol() && OrderMagicNumber() ==  Magic && OrderType() == OP_BUY)
           count++;
      }
   }
   return(count);
}
//+------------------------------------------------------------------+
int CountSell()
{
   int count = 0;
   
   for (int i = OrdersTotal() - 1; i >= 0; i --)
   {
      if (OrderSelect(i,SELECT_BY_POS, MODE_TRADES))
      {
        if (OrderSymbol() == Symbol() && OrderMagicNumber() ==  Magic && OrderType() == OP_SELL)
           count++;
      }
   }
   return(count);
}
//+------------------------------------------------------------------+
 
Alex Pirate:

Vous comparez avec quoi ?

   double MA_1_1 = iMA(Symbol(), 0, MA_1_Period, MA_1_MAShift, MA_1_Method, MA_1_Price, MA_1_Shift);
   double MA_1_2 = iMA(Symbol(), 0, MA_1_Period, MA_1_MAShift, MA_1_Method, MA_1_Price, MA_1_Shift);
   
   double MA_2_1 = iMA(Symbol(), 0, MA_2_Period, MA_2_MAShift, MA_2_Method, MA_2_Price, MA_2_Shift);
   double MA_2_2 = iMA(Symbol(), 0, MA_2_Period, MA_2_MAShift, MA_2_Method, MA_2_Price, MA_2_Shift);
   
   double MA_3_1 = iMA(Symbol(), 0, MA_3_Period, MA_3_MAShift, MA_3_Method, MA_3_Price, MA_3_Shift);
   double MA_3_2 = iMA(Symbol(), 0, MA_3_Period, MA_3_MAShift, MA_3_Method, MA_3_Price, MA_3_Shift);
     
 //+------------------------------------------------------------------+  
 // покупаем
 
   if (CountBuy() + CountSell() == 0 && MA_1_1 > MA_1_2 && MA_2_1 > MA_2_2 && MA_3_1 > MA_3_2 )

Si 0 > 0 et 0 > 0 et 0 > 0

Raison: