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

 
MakarFX #:

Oui, tu as fait un gâchis)

Maintenant, dans chaque dossier, un par un, renommez le dossier Experts en _Experts et le dossier Indicateurs en _Indicateurs.

Renommer dans un dossier - démarrer le terminal, si cela n'a pas aidé - le renommer à nouveau et passer au dossier suivant.

P.S. La première fois, le terminal démarrera un peu plus longtemps que d'habitude.

Makar !

L'événement a eu lieu aujourd'hui. Par conséquent, je n'ai pas touché aux dossiers comportant des dates anciennes.

Et faire des changements dans les dossiers frais n'a rien changé.

J'ai donc fait glisser les profils, les indicateurs et les Expert Advisors vers un autre terminal. J'ai enfin fini le bazar.

Maintenant, tout fonctionne. Je l'ai sur un autre terminal, cependant. Mais l'important, c'est le résultat : vous pouvez travailler.

Je supprimerai ce terminal plus tard.

Je pense que votre suggestion de trouver les indicateurs et les profils via l'éditeur est parfaite !

Surtout pour les "nuls" en programmation, comme moi.

Merci beaucoup pour votre aide et votre réactivité !

Bonne chance !

Salutations !

 

Bonjour à tous. Je commence à peine à comprendre tout ce qui s'y passe pour dire d'emblée que je suis plus vert que vert. Je ne sais pas combien de temps j'ai, mais je vais acquérir de l'expérience. Pouvez-vous me dire qui a été confronté à cette situation ? J'ai besoin d'un script ou d'un code qui surveille les 10 prochains points à la hausse et à la baisse et qui ne soit pas ouvert à l'achat et à la vente.

1.....Par exemple un tick est venu - le code regarde si dans les 10 prochains points vers le bas et (ou) vers le haut l'ordre n'est pas, puis fixer un ordre de vente. si oui, alors rien. Également avec un ordre d'achat

Voici un exemple deschéma dans le Forex EA Generator



Dossiers :
hktrabmcw4.jpg  222 kb
 
valentin104 un script ou d'un code qui surveille les 10 prochains points à la hausse et à la baisse et qui ne soit pas ouvert à l'achat et à la vente.

1.....Par exemple un tick est venu - le code regarde si dans les 10 prochains points vers le bas et (ou) vers le haut l'ordre n'est pas, puis fixer un ordre de vente. si oui, alors rien. Également avec un ordre d'achat

Voici un exemple deschéma dans le Forex EA Generator



Ce système est stupide.

 
Artyom Trishkin #:

C'est un projet idiot.

Non, ça ressemble à ça sans if et else). Mais ce n'est pas ce que je voulais dire.

SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)

Le script donne tick_s =1.0 tick_vflue =80.32786885245902, mais dans le hibou tick_value =80.37529660186777 tick_size =1e-05

Le score se décompose.




 
Artyom Trishkin #:

C'est un projet idiot.

Vous n'avez pas compris.

valentin104 #:

Salut, tout le monde. Je commence à peine à comprendre tout ça, alors je vais juste dire ceci... Je suis plus vert que vert.

 
Galim_V #:

Non, ça ressemble à ça sans if et else). Mais ce n'est pas ce que je voulais dire.

Le script donne tick_s =1.0 tick_vflue =80.32786885245902 et dans le hibou tick_value =80.37529660186777 tick_size =1e-05

Le tick_value est cassé.




tick_size =1e-05

Normaliser DoubleToString( tick_size , 2)

 
MakarFX #:

tick_size =1e-05

Normaliser DoubleToString( tick_size , 2)

Des zéros tout seuls. Pas même un centième.

//+------------------------------------------------------------------+
//|                                                     MAX+risk.mq4 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property script_show_inputs
enum Mani
  {
   free_margin,
   balans
  };
input Mani risk_mani;
input double Lot=0.0;
input int max_risk =0; //В% от свободных средсв или...
input int stoploss=300;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   double Lots=0;
   int    Max_Risk=0;

   printf("ACCOUNT_MARGIN_FREE =  %G",AccountInfoDouble(ACCOUNT_MARGIN_FREE)); //Размер свободных средств на счете  в валюте
   printf("ACCOUNT_BALANCE =  %G",AccountInfoDouble(ACCOUNT_BALANCE)); //Баланс счета в валюте депозита
   printf("ACCOUNT_MARGIN_LEVEL =  %G",AccountInfoDouble(ACCOUNT_MARGIN_LEVEL));    // Уровень залоговых средств в %

   double freemani=AccountInfoDouble(ACCOUNT_MARGIN_FREE);
   double balance=AccountInfoDouble(ACCOUNT_BALANCE);
   double tick_s =  SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)/_Point;  //Минимальное изменение цены
   double tick_value= SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE);//Размер минимального изменения цены инструмента в валюте депозита
   if(risk_mani==balans)
     {
      if(max_risk>0&&stoploss>0)
        {
         double tmp= balance*max_risk/100/(stoploss*_Point*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)/SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE));
         Lots=NormalizeDouble(tmp,2);
         printf(" Чтобы max_risk был не более %f%s%d%s%f",max_risk," в % от ACCOUNT_BALANCE при stoploss =",stoploss,",неоходим Lots =",Lots);
        }
      if(Lot>0)
        {
         Max_Risk= (int)MathRound(Lot*(stoploss*_Point*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)/SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE))/balance*100);
         printf(" Max_Risk при Lot=%f%s%d,%s%d%s",Lot," и stoploss =",stoploss," будет =",Max_Risk,"%");
        }
     }
   if(risk_mani==free_margin)
     {
      if(max_risk>0&&stoploss>0)
        {
         double tmp= freemani*max_risk/100/(stoploss*_Point*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)/SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE));
         Lots=NormalizeDouble(tmp,2);
         printf(" Чтобы max_risk был не более %f%s%d%s%f",max_risk," в % от ACCOUNT_MARGIN_FREE при stoploss =",stoploss,",неоходим Lots =",Lots);
        }
      if(Lot>0)
        {
         Max_Risk= (int)MathRound(Lot*(stoploss*_Point*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)/SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE))/freemani*100);
         printf(" Max_Risk при Lot=%f%s%d,%s%d%s",Lot," и stoploss =",stoploss," будет =",Max_Risk,"%");
        }
     }
   Print("Lots =",Lots," Max_Risk =",Max_Risk," tick_s =",tick_s," tick_vflue =",tick_value);
  }
//+------------------------------------------------------------------+

Ça marche ici. Dans le tableau, des variables au lieu de fonctions. Mais dès le début, la fonction génère des absurdités dans OnTick().

 
Galim_V #:

Tous les zéros. Je n'ai même pas pu trouver un centième.

Ça marche ici. Dans owl, des variables au lieu de fonctions. Mais la fonction génère déjà des absurdités dans OnTick().

Je l'ai trouvé. Désolé. La valeur de tick_size =1e-05 est 0.00001 et est correcte.

 
valentin104 #:

Je vous le dis d'emblée, je suis plus vert que vert. Je ne sais pas combien de temps je vais tenir.


Avec cette approche de l'apprentissage de la programmation, il est préférable d'engager un programmeur et de ne pas avoir à s'en soucier.

 

Nous avons un indicateur ZigZag standard, mais son style de dessin de ligne est DRAW_SECTION, c'est-à-dire quela plupart des valeurs dans le buffer de l'indicateur sont égales à EMPTY_VALUE et seulement parfois il y a des valeurs différentes de cette valeur (points de rupture), qui permettent de dessiner la ligne. Je pense que tout le monde a vu cet indicateur et/ou son code au moins une fois dans sa vie.

La tâche consiste à obtenir la valeur qui correspond au dernier point d'arrêt, c'est-à-dire la dernière valeur du tampon de l'indicateur qui n'est pas égale à EMPTY_VALUE.

Attention : Est-ce la bonne approche de boucler à travers les valeurs du tampon de l'indicateur, en partant d'un décalage de zéro vers le bas, en appelant la fonction iCustom à chaque itération, jusqu'à ce que la valeur obtenue soit différente de EMPTY_VALUE ?

Ou existe-t-il un moyen plus simple d'obtenir cette valeur ?

Raison: