Die Sprache MQL5 von Grund auf selbst erlernen - Seite 70

 
MrBrooklin:

Wir sollten die Dinge bei ihren richtigen Namen nennen - im Moment bin ich beim Programmieren dumm wie Bohnenstroh! Ich verstehe elementare Dinge nicht. Ich muss es beim Namen nennen - im Moment bin ich dumm im Programmieren und verstehe grundlegende Dinge nicht. Letztes Wochenende habe ich mit einem Multimeter und der Lupe meines Großvaters einen defekten SMD-Kondensator mit mikroskopisch kleinen Abmessungen gefunden. Es zeigte eine Panne, einen Kurzschluss oder "koza", wie die Abkürzung für "short circuit", d.h. Kurzschluss, früher genannt wurde. Hier ist ein Foto des "durchstochenen" SMD-Kondensators mit 4-facher Vergrößerung auf einem Smartphone und anschließender Bearbeitung in Paint, da es sich um ein zu mikroskopisches Element handelt.


Ich beschloss, ein wenig abzuschweifen und wenigstens etwas zu zeigen!

Und was den Wunsch angeht, die Sprache zu lernen, so habe ich ihn, ebenso wie die Hoffnung, die Grundlagen der Programmierung zu beherrschen.

Mit freundlichen Grüßen, Vladimir!


Super! Diese Dinge liegen übrigens dicht beieinander.
Als ich in den 90er Jahren studierte, waren diese Abteilungen im selben Fachbereich für Informationstechnologie angesiedelt.
 
Roman Shiredchenko:

Hier muss ich Ihnen widersprechen, Sie können und sollten codieren, was hindert Sie daran, der Sache auf den Grund zu gehen? zu verstehen und so weiter... auch IMHO, gibt es Artikel, gibt es Roboter in kodobase - lesen, parsen den Code bereits bereit - lernen Sie den Stil des Schreibens rechts weg. Warum sollten Sie das Rad neu erfinden wollen? Lernen Sie von Anfang an von lesbarem Code.

Hier ist ein Schleppnetz von V. Karputov - es ist in ROBOTS, schauen Sie - passen Sie es an Ihre Bedürfnisse (Begriffe und Ihre Phantasien).

P.S. Dank Ihnen, dem Thema dieses Zweiges, begann ich, den Code zu verstehen, seine Funktionen ..., Artikel zu studieren und grundlegende Dinge für mich zu wiederholen ...

Danke für den Tipp! :-) (kein Scherz)

Hallo Roman! Es ist erfreulich zu lesen, dass das Thema, das ich geschaffen habe, auch für jemand anderen als mich hilfreich ist. Ich danke Ihnen!

Was die von Wladimir Karputow geschriebenen Codes betrifft, so sind sie für mich bisher unerreichbar. Im Allgemeinen verstehe ich die Codes nicht, die Include-Dateien und Klassen enthalten. Warum die eine oder andere Datei in einen anderen EA aufgenommen wurde, ist ein großes Rätsel!

Ich suche und studiere hauptsächlich den Code, der ohne die enthaltenen Dateien und Klassen geschrieben wurde. Die von Vladimir Khlystov geschriebenen Expert Advisors eignen sich sehr gut zum Selbststudium. Ein besonderes GROSSES DANKESCHÖN an ihn! Es ist schade, dass es in MQL5 zu wenige Expert Advisors gibt.

Jetzt möchte ich Ihnen erklären, warum ich Sie bitte, keinen vorgefertigten Code zu verwenden. Der Grund dafür ist, dass der fertige Code Sie darauf hinweisen könnte und Sie nicht mehr daran interessiert sind, die Sprache zu lernen. Nun haben Sie den vorgefertigten Code in Ihren Expert Advisor eingefügt; er ist nun wirksam geworden, aber was bringt er nun? Und im Gegenteil, wenn man etwas nicht sofort verstehen und schreiben kann, wie z. B. das aktuelle Missverständnis des Schleifenoperators, ist das sehr belebend und motivierend!

Ich sehe nichts Falsches daran, MQL5 zu lernen. Ich erlebe gerade ungefähr die gleiche Phase in meinem Leben, als ich Elektronik studierte und vom Studium einer Elementbasis zum Studium einer anderen überging. Der einzige Unterschied ist, dass in der Jugend alles leichter wahrgenommen und verarbeitet wird als heute. Das habe ich bereits erlebt.

Ich danke Ihnen ALLEN für Ihre Unterstützung und Ihre konstruktiven Vorschläge! Ich studiere weiter MQL5! Ich werde einen halben Tag lang "verschwinden", weil ich geschäftlich an das andere Ende Moskaus muss, und dann werde ich weitermachen.

Mit freundlichen Grüßen, Vladimir.

 
Aleksey Masterov:

Super! Diese Dinge sind übrigens alle in der Nähe...
An meiner Universität, an der ich in den 90er Jahren studierte, waren diese Abteilungen in derselben IT-Abteilung angesiedelt.

In den 90er Jahren kauften sie Diplome.

- Sehen Sie denn nicht, dass die Abteilungsleiter in allen Büros sitzen?

 
SanAlex:

In den90er Jahren kaufte ich Diplome.

- Siehst du denn nicht, dass diese Kanzeln in allen Büros stehen?

Es geht nicht einmal um die Möglichkeit, damals ein Diplom zu kaufen, Tatsache ist, dass die Technologie in den letzten 30 Jahren so weit fortgeschritten ist, dass die Kenntnisse SEHR gering sind, ich musste z. B. Autocad lernen, das es damals noch nicht gab, und habe auch ein SEHR grundlegendes C++ gelernt.)

 
VVT:

Es geht nicht einmal darum, dass man damals einen Abschluss kaufen konnte, Tatsache ist, dass die Technologie in den letzten 30 Jahren so weit fortgeschritten ist, dass die Kenntnisse schon SEHR gering sind, zum Beispiel musste ich damals erst Autocad lernen, das es damals einfach noch nicht gab, auch ein SEHR grundlegendes C++. und so muss man in allem ständig lernen, sich verbessern, mit der Zeit gehen)

DieTechnologie hat sich in den letzten 30 Jahren so weit entwickelt- sie nutzt immer noch die Entwicklungen aus den 60er Jahren.

 

Guten Tag zusammen!

Wenn ich noch etwas Interessantes hinzufügen wollte, so halte ich die Idee des "Selbsttrainings in MQL5 von Grund auf" für nicht ganz richtig. Wenn eine Person 0 in der Programmierung ist, muss sie zuerst lernen, wie man programmiert. Wenn das Ziel ist zu lernen, wie man in MQL von Grund auf zu programmieren, muss eine Person zuerst lernen, wie manin C zu programmieren, zumindest die Grundlagen, und dann lernen, in MQL zu schreiben, weil MQL ist in der Tat C, aber es ist für eine bestimmte Aufgabe spezialisiert, eine Person nicht verstehen, wie Schleifen arbeiten, und bereits versuchen, Programme zu schreiben. Das ist so, als würde man versuchen, Latein zu lernen, ohne Russisch zu können...

Ein weiterer Punkt ist, dass C keine sehr freundliche Sprache ist, um das Programmieren zu lernen, sie ist zwar einfach, aber zu prägnant, es ist schwierig für einen Anfänger, den Code zu lesen und zu verstehen, ohne ein Grundverständnis von Algorithmen, Datentypen und Boolescher Algebra zu haben. In C können drei Zeichen in einer Reihe mehrere Strings in einer anderen Sprache bedeuten.

Um einfach von Grund auf programmieren zu lernen, für die Basis, um zu lernen, mit einem Computer in einer (egal welcher) Sprache zu sprechen, würde ich empfehlen, mit Pascal zu beginnen, das einfachste Buch, um damit zu beginnen (2-3 Wochen mit Leichtigkeit), dann C (dort nach Pascal max Woche mit Fleiß, beherrschen die Syntax, ich meine die grundlegenden Sprachkenntnisse!) und dann auf spezialisierte Sprachen wie MQL zurückgreifen, denn MQL ist C, das eine kleine Wendung und Vereinfachung aufweist, da es für eine einzige Aufgabe konzipiert ist und der Compiler das Offensichtliche kennt. Und C wiederum ist eine Art RAR-komprimiertes Pascal, aber Pascal ist fast Englisch =).

Nun zu den Schleifen:

Als ich programmieren lernte, half mir die Analogie zur Summe in der Algebra, bei der man den Anfangswert von n, den Endwert von n und die Formel mit diesem n berechnen muss.

 
VVT:

Es geht nicht einmal um die Möglichkeit, damals ein Diplom zu kaufen, sondern darum, dass die Technologie in den letzten 30 Jahren so weit fortgeschritten ist, dass diese Kenntnisse SEHR fehlen. Ich musste zum Beispiel Autocad lernen, das es damals noch nicht gab, und auch SEHR grundlegende C++-Kenntnisse erwerben.)



:-) gab es Autocad. Wir hatten darauf aufbauenden Unterricht, um Schaltkreise und die Anordnung von Schichten zu lernen...Leiterplatten
 
Aleksey Masterov:
:-) autocad war. Wir hatten eine Klasse, die darauf basierte, um Schaltungen und das Layout von Lagen ... von Leiterplatten zu lernen
.

Wir hatten nur 22 Computer, die erst am Ende des Unterrichts geladen wurden), der Lehrer ließ sie den ganzen Tag über eingeschaltet, es war unmöglich zu arbeiten, wir sprachen nicht einmal über cad...

 
MrBrooklin:

Hallo Roman! Es ist schön zu lesen, dass das Thema nicht nur mir, sondern auch anderen Menschen hilft. Ich danke Ihnen!

Was die von Vladimir Karputov geschriebenen Codes angeht, so ist das ein Niveau, das ich noch nicht erreichen kann. Im Allgemeinen verstehe ich die Codes nicht, die Include-Dateien und Klassen enthalten. Warum die eine oder andere Datei in einen anderen EA aufgenommen wurde, ist ein großes Rätsel!

Ich suche und studiere hauptsächlich den Code, der ohne die enthaltenen Dateien und Klassen geschrieben wurde. Die von Vladimir Khlystov geschriebenen Expert Advisors eignen sich sehr gut zum Selbststudium. Ein besonderes GROSSES DANKESCHÖN an ihn! Es ist schade, dass es in MQL5 zu wenige Expert Advisors gibt.

Jetzt möchte ich Ihnen erklären, warum ich Sie bitte, keinen vorgefertigten Code vorzuschlagen. Der Grund dafür ist, dass der fertige Code Sie darauf hinweisen könnte und Sie nicht mehr daran interessiert sind, die Sprache zu lernen. Nun haben Sie den vorgefertigten Code in Ihren Expert Advisor eingefügt; er ist nun wirksam geworden, aber was bringt er nun? Und im Gegenteil, wenn man etwas nicht sofort verstehen und schreiben kann, wie z.B. das aktuelle Missverständnis des Schleifenoperators, ist das so anspornend und motivierend, dass man es kaum glauben kann!

Ich sehe nichts Falsches daran, MQL5 zu lernen. Ich erlebe gerade ungefähr die gleiche Phase in meinem Leben, als ich Elektronik studierte und vom Studium einer Elementbasis zum Studium einer anderen überging. Der einzige Unterschied ist, dass in der Jugend alles leichter wahrgenommen und verarbeitet wird als heute. Das habe ich bereits erlebt.

Ich danke Ihnen ALLEN für Ihre Unterstützung und Ihre konstruktiven Vorschläge! Ich studiere weiter MQL5! Ich werde einen halben Tag lang "verschwinden", weil ich geschäftlich an das andere Ende Moskaus muss, und dann werde ich weitermachen.

Mit freundlichen Grüßen, Vladimir.

Ich stimme zu - seine Codes sind auch gut! Du regst dich wegen nichts auf. Kümmern Sie sich in aller Ruhe und ohne Eile um den Code, und das ist alles. Hier ist alles elementar - wählen Sie aus und stöbern Sie: (wie viel einfacher - nur Ihr Thema der Wahl Notwendige Position ... :-))

//--- при таком методе мы будет сюда попадать на каждом тике.
   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);
                    }
                 }
              }
           }
  }

Abgesehen davon, Include-Dateien - das bedeutet, dass Sie sie auch in Ihrem Code als Funktionen haben und das war's.

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

Hier ist ein weiterer Artikel - Schleppnetz 2010 - Schleppnetz ist in den Berater von der Standard-MACD Lieferung.



Hier ist ein weiterer großartiger Beitrag über die Berechnung des Umfangs der Positionen!!! Ich bin selbst tief drin... :-)

Eine andere Möglichkeit, das gesamte Positionsvolumen eines Symbols zu ermitteln, besteht darin, alle Positionen in der Schleife zu durchlaufen, wobei die Anzahl der Positionen durch die Funktion PositionsTotal() bestimmt wird. Durch Überprüfung mit der Funktion PositionGetSymbol() finden Sie das benötigte Symbol und bestimmen das Positionsvolumen und die Richtung(PositionGetDouble() mit der Kennung POSITION_VOLUME und PositionGetInteger() mit der Kennung POSITION_TYPE).

In diesem Fall sieht die vollständige Funktion wie folgt aus

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. Лишний раз не помешает определиться с понятиями "позиция" и "ордер": Позиция - это рыночное обязательство, количество купленных или проданных контрактов по финансовому инструменту. Позиция по одному инструменту может быть только одна. Ордер - это распоряжение...
Grund der Beschwerde: