Auto-apprentissage du langage MQL5 à partir de zéro - page 70

 
MrBrooklin:

Nous devrions appeler les choses par leurs noms propres - en ce moment, je suis aussi bête qu'un bouchon en programmation ! Je ne comprends pas les choses élémentaires. Je dois l'appeler par son nom - pour l'instant, je suis stupide en programmation et je ne comprends pas les choses élémentaires. Le week-end dernier, j'ai utilisé un multimètre et la loupe de mon grand-père pour trouver un condensateur CMS défectueux de dimensions microscopiques. Il a révélé une panne, un court-circuit ou "koza", comme on l'appelait autrefois de l'abréviation de court-circuit, c'est-à-dire un court-circuit. Voici une photo du condensateur SMD "perforé" avec un grossissement de 4x sur un smartphone et un traitement ultérieur dans Paint, car c'est un élément trop microscopique.


J'ai décidé de m'écarter un peu du sujet et de montrer au moins quelque chose !

Et concernant le désir d'apprendre le langage, je l'ai, ainsi que l'espoir de maîtriser les bases de la programmation.

Salutations, Vladimir !


Cool ! Ces choses, d'ailleurs, sont proches les unes des autres.
Lorsque j'étais étudiant dans les années 90, ces départements étaient situés dans le même département de technologie de l'information.
 
Roman Shiredchenko:

Ici - permettez-moi de ne pas être d'accord avec vous - vous pouvez et devez coder, ce qui vous empêche d'aller au fond des choses... à comprendre et ainsi de suite... aussi IMHO, il y a des articles, il y a des robots dans kodobase - lire, analyser le code déjà prêt - apprendre le style d'écriture tout de suite. Pourquoi vouloir réinventer la roue ? Apprenez directement à partir d'un code lettré.

Voici un chalutage de V. Karputov - il est dans ROBOTS, regardez - ajustez-le à vos besoins (termes et vos fantasmes).

P.S. Grâce à vous, le sujet de cette branche, j'ai commencé à comprendre le code, ses fonctionnalités ..., à étudier les articles et à répéter les choses de base pour moi-même ...

Merci pour le conseil ! :-) (sans blague)

Bonjour Roman ! Il est gratifiant de lire que le sujet créé est encore utile à quelqu'un d'autre que moi. Merci !

En ce qui concerne les codes écrits par Vladimir Karputov, ils sont pour moi, jusqu'à présent, hors de ma portée. En général, je ne comprends pas les codes contenant les fichiers et les classes inclus. La raison pour laquelle un fichier ou un autre a été inclus dans un autre EA est un grand mystère !

Je recherche et étudie surtout les codes écrits sans les fichiers et classes inclus. Les Expert Advisors écrits par Vladimir Khlystov sont très bons pour l'auto-apprentissage. Un GRAND MERCI à lui ! Il est dommage qu'il y ait trop peu de conseillers experts dans MQL5.

Je vais maintenant vous expliquer pourquoi je vous demande de ne pas utiliser un code tout fait. La raison en est que le code prêt à l'emploi peut vous mettre la puce à l'oreille et que vous n'êtes plus intéressé par l'étude de la langue. Vous collez le code tout fait dans votre conseiller expert, il fonctionne, mais à quoi bon ? Et au contraire, quand on ne peut pas comprendre et écrire immédiatement quelque chose, comme, par exemple, l'incompréhension actuelle de l'opérateur de boucle, c'est tellement stimulant et motivant qu'on a du mal à y croire !

Je ne vois rien de mal à apprendre MQL5. Je vis à peu près la même étape de ma vie, lorsque j'étudiais l'électronique et que je suis passé de l'étude d'une base d'éléments à l'étude d'une autre. La seule différence est que tout est perçu et assimilé plus facilement dans la jeunesse que maintenant. J'en ai déjà fait l'expérience.

Merci à TOUS pour vos mots de soutien et vos suggestions constructives ! Je continue à étudier le MQL5 ! Pendant une demi-journée, je vais "disparaître", car je dois me rendre à l'autre bout de Moscou pour affaires, puis je continuerai.

Sincèrement, Vladimir.

 
Aleksey Masterov:

Cool ! Ces choses sont toutes proches, d'ailleurs...
Dans mon université, où j'ai étudié dans les années 90, ces départements faisaient partie du même service informatique.

dans les années 90, ils achetaient des diplômes.

- Ne voyez-vous pas maintenant, il y a ces chefs de service assis dans tous les bureaux

 
SanAlex:

dans les années 90, à acheter des diplômes.

- Ne voyez-vous pas maintenant qu'il y a ces chaires dans tous les bureaux ?

Ce n'est même pas la possibilité d'acheter un diplôme à l'époque, le fait est qu'au cours des 30 dernières années, la technologie a tellement progressé que les connaissances sont TRÈS insuffisantes, par exemple, j'ai dû alors apprendre autocad qui n'existait tout simplement pas à l'époque, j'ai également fait un C++ TRÈS basique. et ainsi en tout, vous devez constamment en apprendre plus, vous améliorer, suivre l'évolution du temps)

 
VVT:

Il ne s'agit même pas de la possibilité d'acheter un diplôme à l'époque, le fait est qu'au cours des 30 dernières années, la technologie a tellement progressé que les connaissances sont déjà TRÈS insuffisantes, par exemple, j'ai ensuite dû finir d'apprendre autocad qui n'existait tout simplement pas à l'époque, j'ai également fait un C++ TRÈS basique. et donc en tout, il faut constamment apprendre, s'améliorer, suivre l'évolution du temps)

La technologie a tellement évolué au cours des 30 dernières années qu'elle utilise encore les développements des années 60.

 

Bonjour à tous !

Si je voulais ajouter quelque chose d'intéressant, je pense que l'idée d'une "auto-formation à MQL5 à partir de zéro" n'est pas tout à fait juste. Si une personne est 0 en programmation, elle doit d'abord apprendre à programmer. Si le but est d'apprendre à programmer en MQL à partir de zéro, une personne doit d'abord apprendre àprogrammer en C, au moins les bases, et ensuite apprendre à écrire en MQL, car MQL est en fait du C, mais il est spécialisé pour une certaine tâche, une personne ne comprend pas comment les boucles fonctionnent, et essaie déjà d'écrire des programmes. C'est comme essayer d'apprendre le latin sans connaître le russe...

Une autre chose est que le C n'est pas un langage très convivial pour apprendre la programmation, il est simple, mais il est trop concis, il est difficile pour un débutant de lire et de comprendre du code sans avoir une compréhension de base des algorithmes, des types de données, de l'algèbre booléenne. En C, trois caractères à la suite peuvent signifier plusieurs chaînes de caractères dans un autre langage.

Pour apprendre à programmer simplement à partir de zéro, pour la base, pour apprendre à parler à un ordinateur dans un (peu importe) langage, je recommanderais de commencer avec Pascal, le livre le plus facile pour commencer avec lui (2-3 semaines à l'aise), puis C (là après Pascal max semaine avec assiduité, maîtriser la syntaxe, je veux dire les compétences de base du langage !) et ensuite se lancer dans des langages spécialisés comme MQL, parce que MQL est du C, qui a un peu de torsion et de simplification, puisqu'il est conçu pour une seule tâche et que le compilateur connaît l'évidence. Et le C est à son tour une sorte de Pascal compressé en RAR, mais le Pascal est presque anglais =).

Maintenant, à propos des boucles :

Lorsque j'apprenais à programmer, l'analogie avec la somme en algèbre m'a aidé, où vous spécifiez la valeur initiale de n, la valeur finale de n et la formule avec ce n à calculer.

 
VVT:

Il ne s'agit même pas de la possibilité d'acheter un diplôme à l'époque, le fait est qu'au cours des 30 dernières années, la technologie est allée si loin que ces connaissances sont TRÈS insuffisantes, par exemple, j'ai dû apprendre autocad qui n'existait pas à l'époque, j'ai également fait du C++ TRÈS basique. et donc en tout, vous devez constamment en apprendre plus, vous améliorer, suivre l'évolution du temps)



:-) autocad était là. Nous avions des cours basés sur ce système pour apprendre les circuits et la disposition des couches... des circuits imprimés.
 
Aleksey Masterov:
:-) autocad était. Nous avions un cours basé sur ce système pour apprendre les circuits et la disposition des couches... des circuits imprimés
.

Nous n'avions que 22 ordinateurs, qui n'étaient chargés qu'à la fin du cours) ; le professeur les laissait allumés pendant la journée, il était impossible de travailler, on ne parlait même pas de cad....

 
MrBrooklin:

Bonjour Roman ! C'est agréable de lire que le sujet aide quelqu'un d'autre que moi. Merci !

Quant aux codes écrits par Vladimir Karputov, ils sont hors de ma portée pour le moment. En général, je ne comprends pas les codes qui incluent des fichiers et des classes. La raison pour laquelle un fichier ou un autre a été inclus dans un autre EA est un grand mystère !

Je recherche et étudie surtout les codes écrits sans les fichiers et classes inclus. Les Expert Advisors écrits par Vladimir Khlystov sont très bons pour l'auto-apprentissage. Un GRAND MERCI à lui ! Il est dommage qu'il y ait trop peu de conseillers experts dans MQL5.

Je vais maintenant vous expliquer pourquoi je vous demande de ne pas utiliser un code tout fait. La raison en est que le code prêt à l'emploi peut vous mettre la puce à l'oreille et que vous n'êtes plus intéressé par l'étude de la langue. Vous avez maintenant inséré le code prêt à l'emploi dans votre conseiller expert ; il est devenu effectif, mais à quoi servira-t-il ? Et au contraire, quand on ne peut pas comprendre et écrire immédiatement quelque chose, comme, par exemple, l'incompréhension actuelle de l'opérateur de boucle, c'est tellement stimulant et motivant qu'on a du mal à y croire !

Je ne vois rien de mal à apprendre MQL5. Je suis en train de vivre une étape similaire dans ma vie, lorsque j'étudiais l'électronique et que je suis passé de l'étude d'une base d'éléments à l'étude d'une autre. La seule différence est que tout est perçu et assimilé plus facilement dans la jeunesse que maintenant. J'en ai déjà fait l'expérience.

Merci à TOUS pour vos mots de soutien et vos suggestions constructives ! Je continue à étudier le MQL5 ! Pendant une demi-journée, je vais "disparaître", car je dois me rendre à l'autre bout de Moscou pour affaires, puis je continuerai.

Sincèrement, Vladimir.

Je suis d'accord - ses codes sont bons aussi! Tu t'énerves pour rien. Régler tranquillement le code sans se presser, et c'est tout. Tout est élémentaire ici - sélectionner et chaluter : (combien plus facile - juste votre sujet de choix Position nécessaire ... :-))

//--- при таком методе мы будет сюда попадать на каждом тике.
   for(int i=PositionsTotal()-1;i>=0;i--)
      if(m_position.SelectByIndex(i))
         if(m_position.Symbol()==Symbol() && m_position.Magic()==m_magic)
           {
            //--- TrailingStop -> подтягивание StopLoss у ПРИБЫЛЬНОЙ позиции
            if(m_position.PositionType()==POSITION_TYPE_BUY)
              {
               //--- когда у позиции ещё нет StopLoss
               if(m_position.StopLoss()==0)
                 {
                  //--- пока StopLoss равен 0.0, TrailingStep не учитываем
                  if(m_symbol.Bid()-ExtTrailingStop>m_position.PriceOpen())
                    {
                     //--- модификация позиции
                     m_trade.PositionModify(m_position.Ticket(),m_position.PriceOpen(),0.0);
                    }
                 }
               //--- у позиции уже есть StopLoss
               else
                 {
                  //--- теперь TrailingStep нужно учитывать, иначе мы будет модифицировать
                  //--- поизцию НА КАЖДОМ ТИКЕ, а это ПЛОХО
                  if(m_symbol.Bid()-ExtTrailingStop-ExtTrailingStep>m_position.StopLoss())
                    {
                     //--- модификация позиции
                     m_trade.PositionModify(m_position.Ticket(),
                                            NormalizeDouble(m_symbol.Bid()-ExtTrailingStop,m_symbol.Digits()),0.0);
                    }
                 }
              }

            if(m_position.PositionType()==POSITION_TYPE_SELL)
              {
               //--- когда у позиции ещё нет StopLoss
               if(m_position.StopLoss()==0)
                 {
                  //--- пока StopLoss равен 0.0, TrailingStep не учитываем
                  if(m_symbol.Ask()+ExtTrailingStop<m_position.PriceOpen())
                    {
                     //--- модификация позиции
                     m_trade.PositionModify(m_position.Ticket(),m_position.PriceOpen(),0.0);
                    }
                 }
               //--- у позиции уже есть StopLoss
               else
                 {
                  //--- теперь TrailingStep нужно учитывать, иначе мы будет модифицировать
                  //--- поизцию НА КАЖДОМ ТИКЕ, а это ПЛОХО
                  if(m_symbol.Ask()+ExtTrailingStop+ExtTrailingStep<m_position.StopLoss())
                    {
                     //--- модификация позиции
                     m_trade.PositionModify(m_position.Ticket(),
                                            NormalizeDouble(m_symbol.Ask()+ExtTrailingStop,m_symbol.Digits()),0.0);
                    }
                 }
              }
           }
  }

En outre, les fichiers d'inclusion - cela signifie que vous les avez dans votre code en tant que fonctions également et c'est tout.

#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>  
 

Voici un autre article - chalut 2010 - le chalut est dans le conseiller de la livraison standard MACD.



Voici un autre excellent article sur le calcul du volume des positions !!! J'y suis allé à fond moi-même... :-)

Une autre façon de déterminer le volume total des positions sur un symbole est de passer par toutes les positions dans la boucle, le nombre de positions est déterminé par la fonction PositionsTotal(). En vérifiant avec la fonction PositionGetSymbol(), trouvez le symbole nécessaire et déterminez le volume de la position et la direction(PositionGetDouble() avec l'identifiant POSITION_VOLUME et PositionGetInteger() avec l'identifiant POSITION_TYPE).

Dans ce cas, la fonction complète ressemblera à ceci

double fSymbolLots(string aSymbol)
  {
   double TmpLots=0;
   for(int i=0;i<PositionsTotal();i++) // Перебор всех позиций
     {
      if(PositionGetSymbol(i)==aSymbol) // Найдена позиция с заданным символом
        {
         TmpLots=PositionGetDouble(POSITION_VOLUME);
         if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
           {
            TmpLots*=-1; // В зависимости от направления позиции устанавливаем знак числа
           }
         break;
        }
     }
   TmpLots=NormalizeDouble(TmpLots,2);
   return(TmpLots);
  }
Как создать свой Trailing Stop
Как создать свой Trailing Stop
  • www.mql5.com
Перед тем как приступить к разговору на тему статьи, предлагаю расставить точки над i. Лишний раз не помешает определиться с понятиями "позиция" и "ордер": Позиция - это рыночное обязательство, количество купленных или проданных контрактов по финансовому инструменту. Позиция по одному инструменту может быть только одна. Ордер - это распоряжение...