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

 
Vitaly Muzichenko:

Vous êtes dans une branche de théoriciens du clown, vous aimez dessiner, on ne sait pas trop quoi, ni pourquoi.

Et il y a beaucoup de fils similaires sur ce forum - discutez-en au moins !

Je ne comprends pas Vitaly ! - Vous êtes sérieux ? - Ou vous plaisantez ?

Comme on le sait, la théorie du trading en tant que telle n'existe pas dans la nature.

Il existe différentes "vagues d'Elliott", des nombres de Fibonacci, des fonctions de Weierstrass, etc...

Mais cela n'a rien à voir avec la "théorie du commerce".

Et de quelle "théorie de trading" pouvons-nous parler, si 99,9999% des utilisateurs du forum, des développeurs et des traders ne peuvent pas construire la plus simple tendance de moyenne mobile.

Ils dessinent donc "je ne sais pas quoi" et "je ne sais pas pourquoi" - comme vous l'avez dit.

------------------------------------------------------------------------------

Et vous ne pouvez pas non plus "dessiner" correctement la tendance la plus simple. - J'en suis sûr. Pardonnez-moi d'être franc. Mais vous ne pouvez pas.

Mais vous parlez facilement des CLOWNS, et vous vous prononcez sur quelque chose que vous ne connaissez pas vous-même, et que vous ne pouvez pas faire.

C'est le paradoxe auquel nous assistons.

----------------------------------------------------------------------------------

Mais ce n'est pas cela qui m'étonne le plus, c'est tout autre chose.

Je vois des milliers d'indépendants et toutes sortes d'universitaires sur le marché du forex qui offrent leurs services à tout le monde.

Il y a de la publicité partout. Payez - et ils aideront, payez - et ils enseigneront ...

D'accord - je vous paie, je leur réponds.

Mais vous me montrez vos qualifications.

CONSTRUISEZ-MOI LA TENDANCE LA PLUS SIMPLE ! !!

Personne ne l'a jamais construit. Ni les indépendants, ni les universitaires, ni les développeurs - PERSONNE.

Ils ont peur d'être embarrassés. Parce qu'ils ne savent pas comment faire. Bien qu'à première vue, il n'y ait rien de difficile.

C'est la procédure standard. Nous l'avons dans MT4/MT5. Ils l'ont simplement construit et ont montré leur maîtrise.

Mais il n'y a pas de tels cas. Ils dessinent tous "Je ne comprends pas quoi" et "Je ne comprends pas pourquoi". Tout le monde est un clown ?

----------------------------------------------------------------------------------

Et vous dites des CLOWNS THEORIQUES !

Qui sont les plus CLOWNS ici - Je ne sais même pas !!!

 
Artyom Trishkin:

1. Pourquoi ?

2. Qu'est-ce que c'était ? Comment c'était ?

1. pourquoi ? - pour les calculs.

2. qu'est-ce que c'était ? - Donc des nombres différents,Bid-buyPrice= 1.00000000000006551e-05 et non 0.00001. et pourquoidouble(Bid-buyPrice) a donné 0.00001, ceux-ci ont nécessité une conversion endouble, si j'ai bien compris, alors que Bid et buyPrice sont déjà de type double?

 
Andrey Sokolov:

1. pourquoi ? - Pour les calculs.

2. qu'est-ce que c'était ? - Donc des nombres différents,Bid-buyPrice= 1.00000000000006551e-05 et non 0.00001. et pourquoidouble(Bid-buyPrice) a donné 0.00001, ceux-ci ont nécessité une conversion endouble, si j'ai bien compris, alors que Bid et buyPrice sont déjà de type double?

Pourquoi convertir explicitement les types en double si vous opérez avec des nombres doubles ? Je vous ai montré une conversion du type double en type string lors de l'impression.

Êtes-vous sûr que 1,000000000000000006551e-05 et 0,00001 sont des nombres différents ? Format de sortie différent - vous n'avez pas spécifié la méthode de sortie dans Comment(), il s'agit donc d'un format de sortie scientifique. C'est pourquoi j'ai écrit - soit vous faites une conversion explicite du type double en chaîne, soit vous utilisez DoubleToString() avec la précision requise.

Tout est dans l'aide - et ce n'est même pas en accessibilité pas à pas, juste à un clic de souris dans le menu de la documentation.

En voici une de l'aide, j'ai marqué ce dont j'ai besoin:

Commentaire

Affiche un commentaire défini par l'utilisateur dans le coin supérieur gauche du graphique.

void  Comment(
   argument,     // первое значение
   ...           // последующие значения
   );

Paramètres

...

[in] Toutes les valeurs, séparées par des virgules. Un caractère de saut de ligne "\n" ou "\r\n" peut être utilisé pour répartir la sortie sur plusieurs lignes. Le nombre maximum de paramètres est de 64. La longueur totale du message (y compris les caractères de service non affichables) ne peut être supérieure à 2045 caractères (les caractères superflus seront tronqués à la sortie).

Valeur retournée

Pas de valeur de retour

Note

Les tableaux ne peuvent pas être passés à Comment(). Les tableaux doivent être imprimés en tant qu'éléments.

Les données de type double sont imprimées jusqu'à 16 chiffres décimaux après la virgule, et peuvent être éditées au format traditionnel ou scientifique - selon la manière dont la saisie est la plus compacte. Les données de type flottant sont éditées avec 5 chiffres décimaux après le point. Pour produire des nombres réels avec une précision différente ou dans un format explicitement spécifié, utilisez DoubleToString().

Les données de type bool sont émises sous forme de "true" ou "false". Les dates sont imprimées sous la forme AAAA.MM.DD HH:MI:SS. Pour afficher la date dans un autre format, utilisez la fonction TimeToString(). Les données du type de couleur sont éditées sous la forme d'une chaîne R, V, B ou d'un nom de couleur, si cette couleur est présente dans le jeu de couleurs.

Lorsque voustravaillez dans le testeur de stratégie en mode optimisation, la fonction Comment() n'est pas exécutée.

 
Artyom Trishkin: Êtes-vous sûr que 1,000000000000000006551e-05 et 0,00001 sont des nombres différents ? Format de sortie différent - vous n'avez pas spécifié de méthode de sortie dans Comment(), c'est donc le format de sortie scientifique qui vous est substitué par le terminal. C'est pourquoi j'ai écrit - soit faire une conversion explicite du type double en chaîne, soit utiliser DoubleToString() avec la précision souhaitée.

La question s'est posée parce que la condition où la variable*Point était comparée et le résultat de cette soustraction ne fonctionnait pas, où une autre variable avec une valeur double était soustraite de Bid avec une valeur double et le résultat de la soustraction devait être converti en double à nouveau.

Pourquoi n'est-ce pas le type double dans le processus de soustraction ?

J'ai lu l'aide mais je n'ai pas vu de réponse, alors je pose la question ici.

 
Andrey Sokolov:

La question s'est posée parce que la condition où la variable*Point était comparée et le résultat de cette soustraction ne fonctionnait pas, où une autre variable avec la valeur double était soustraite de Bid avec la valeur double et le résultat de la soustraction devait être converti en double à nouveau.

Pourquoi n'est-ce pas le type double dans le processus de soustraction ?

J'ai lu l'aide mais je n'ai pas vu de réponse, alors je pose la question ici.

Lorsque vous soustrayez le double du double, le résultat sera le double. C'est une chose sûre.

Mais vous seul savez à quoi vous le comparez.

 
Artyom Trishkin:

Lorsque vous soustrayez un double d'un double, le résultat est un double. Ça, c'est sûr.

Mais vous êtes le seul à savoir à quoi vous le comparez.

extern double First_PartialTrailingStart=15 ;

if(Digits() ==3 || Digits()==5) {First_PartialTrailingStart*=10 ; }

si(double(Bid-buyPrice)>=First_PartialTrailingStart*Point) - fonctionne

if((Bid-buyPrice)>=First_PartialTrailingStart*Point) - ne fonctionne pas

 
Andrey Sokolov:

extern double First_PartialTrailingStart=15 ;

if (Digits() ==3 || Digits()==5) {First_PartialTrailingStart*=10 ; }

si(double(Bid-buyPrice)>=First_PartialTrailingStart*Point) - fonctionne

if((Bid-buyPrice)>=First_PartialTrailingStart*Point) - ne fonctionne pas

Tout fonctionne. Script :

//+------------------------------------------------------------------+
//|                                                  TestCompare.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                             https://mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://mql5.com/ru/users/artmedia70"
#property version   "1.00"
#property script_show_inputs
#define   Bid       SymbolInfoDouble(Symbol(),SYMBOL_BID)
//--- input parameters
input uint     InpFirstPartialTrailingStart  =  15;   // Старт трала через (пунктов)
input uint     InpMultiplier                 =  10;   // Множитель пунктов
input int      InpPriceShift                 =  20;   // Отступ цены Buy от Bid
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
double part_trailing_start=double(InpFirstPartialTrailingStart<1 ? 1 : InpFirstPartialTrailingStart);
double multiplier=double(InpMultiplier<1 ? 1 : InpMultiplier);
double value=part_trailing_start*multiplier*Point();
double shift=InpPriceShift*Point();
double buy_price=Bid-shift;
//---
   double res=NormalizeDouble(Bid-buy_price,Digits());
   bool   cmp=NormalizeDouble(res-value,Digits())>=0;
   Alert
     (
      "Старт трала через ",(string)value," пп."
      ", Цена Bid=",(string)Bid,
      ", цена Buy=",(string)buy_price,
      ", Bid-цена Buy=",DoubleToString(res,Digits()),
      ", Bid-buy_price>=value: ",string(cmp)
     );
//---
  }
//+------------------------------------------------------------------+
 
Artyom Trishkin:

Tout fonctionne. Le scénario :

Merci, je vais m'en occuper.

 
Est-il possible d'obtenir le prix de clôture d'une bougie sur son dernier tick ?
 
Andrey Sokolov:
Est-il possible d'obtenir le prix de clôture d'une bougie sur son dernier tick ?
Il s'agit du prix de l'offre. Autre question : comment savez-vous que c'est le dernier tic-tac ?
Raison: