Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1457

 
Aleksey Vyazmikin #:

In der Code-Basis gibt es Expert Advisors und Indikatoren, die ursprünglich für MT4 geschrieben und dann für MT5 umgeschrieben wurden - Sie können sie zum Training verwenden.

In vielerlei Hinsicht ähneln sich die Sprachen, stellen Sie sich die Aufgabe, den Code, den Sie verstehen, auf MT5 umzuschreiben - und nutzen Sie aktiv die Suche in den Anleitungen und im Portal - Sie werden immer die Antwort finden, auch in den Artikeln.

Vielen Dank für Ihre wertvollen Ratschläge. Wenn es Ihnen nichts ausmacht, senden Sie mir bitte einen Link zu dem Expert Advisor (nicht Indikator), der auf 4 war und dann auf 5 wurde (wenn es auf dem einfachsten möglich ist), oder den EA selbst in 4 und dann das gleiche in 5
begonnen zu studieren. Ich habe festgestellt, dass Handelsoperationen für einen Anfänger am einfachsten in der Handelsklasse STrade zu öffnen sind, und ich habe es sogar geschafft, Aufträge und Geschäfte mit Hilfe dieser Klasse zu öffnen
Aber sobald ich die Öffnung eines Auftrags konditioniert habe, hörten die Aufträge auf, sich zu öffnen, bitte sagen Sie mir, was ich falsch gemacht habe. Hier ist der Code, der die Aufträge öffnete, wenn es keine Bedingungen gab.

#include<Trade\Trade.mqh>
 CTrade  trade;

void OnTick()
{
MqlDateTime time_now;  
if(time_now.hour==10||time_now.hour==11&&time_now.min==0)


trade.Buy(0.1);


}

Ich habe diesen Punkt noch nicht verstanden.... Wenn die Aufträge BAY geöffnet wurden, wurden sie, wie ich verstanden habe, durch Gegenaufträge CEL geschlossen. Und ich verstehe nicht, woher der Code die Informationen darüber hat, um wie viele Pips die Orders geschlossen werden sollen, denn ich habe nirgendwo die Größe von SL und TP angegeben und ich habe die Funktion zum Schließen der Orders überhaupt nicht angegeben. Ich vermute, dass diese Informationen an irgendeiner Stelle in einer angehängten Datei, d.h. in einer Klasse oder Struktur, gespeichert sind. Wenn dem so ist, wie kann ich diese Stelle finden, um Änderungen an den Parametern der offenen Order vorzunehmen?

Nochmals vielen Dank für Ihre Hilfe

 
ANDREY #:

Vielen Dank für Ihren wertvollen Rat. Wenn es Ihnen nichts ausmacht, senden Sie mir bitte einen Link zu einem Expert Advisor (kein Indikator), der auf 4 war und dann auf 5 wurde (wenn Sie können auf die einfachste), oder der Expert Advisor selbst in 4 und dann das gleiche in 5
Ich begann zu studieren. Ich habe festgestellt, dass die Handelsoperationen für einen Anfänger am einfachsten in der Handelsklasse STrade zu öffnen sind, und ich habe es sogar geschafft, Aufträge und Geschäfte mit Hilfe dieser Klasse zu öffnen
Aber sobald ich die Öffnung eines Auftrags konditioniert habe, hörten die Aufträge auf, sich zu öffnen, bitte sagen Sie mir, was ich falsch gemacht habe. Hier ist der Code, der die Aufträge öffnete, wenn es keine Bedingungen gab.

Ich habe diesen Punkt noch nicht verstanden.... Wenn die Aufträge BAY geöffnet wurden, wurden sie, wie ich verstanden habe, durch Gegenaufträge CEL geschlossen. Und ich verstehe nicht, woher der Code die Informationen darüber hat, um wie viele Pips die Orders geschlossen werden sollen, denn ich habe nirgendwo die Größe von SL und TP angegeben und ich habe die Funktion zum Schließen der Orders überhaupt nicht angegeben. Ich vermute, dass diese Information irgendwo in einer angehängten Datei geschrieben ist, d.h. in einer Klasse oder Struktur. Wenn dem so ist, wie kann ich diese Stelle finden, um Änderungen an den Parametern der geöffneten Order vorzunehmen?

Nochmals vielen Dank für Ihre Hilfe

Ich kann nur Ratschläge geben - ich wurde im Land der Sowjets geboren...

Suchen Sie danach - hier ist eine Möglichkeit.

Ich selbst habe noch nicht alle Nuancen der Handelsoperationen gelernt - ich habe vor vielen Jahren einen Kurs in Freiberuflichkeit bestellt und benutze ihn mit kleinen Änderungen.

 
Aleksey Vyazmikin #:

Ich kann nur Ratschläge geben - ich wurde im Land der Sowjets geboren....

Sie können danach suchen, das ist eine Möglichkeit.

Ich selbst habe immer noch nicht alle Nuancen der Handelsoperationen gelernt - ich habe vor vielen Jahren einen Kurs in Freiberuflichkeit bestellt und verwende ihn mit kleinen Änderungen.

Das war's. Vielen Dank für die wertvollen Informationen

 
ANDREY #:

Vielen Dank für Ihre wertvolle Beratung. Wenn Sie nichts dagegen haben, senden Sie mir bitte einen Link zu einem Expert Advisor (nicht ein Indikator), die auf 4 war, und wurde dann auf 5 (wenn Sie auf die einfachste können), oder die EA selbst in 4 und dann das gleiche in 5.

Hier ist die einfachste. Es ist so genannt. Es hat sowohl MQL5 Code und MQL4.

Simple advisor
Simple advisor
  • www.mql5.com
Советник на отложенных ордерах
 
Alexey Viktorov #:

Hier ist die einfachste. Das ist sein Name. Er enthält sowohl MQL5- als auch MQL4-Code.

Vielen Dank für Ihre Hilfe.

 
ANDREY #:

Aber sobald ich die Eröffnung eines Auftrags konditioniert, die Aufträge nicht mehr öffnen, bitte sagen Sie mir, was ich falsch gemacht habe. Hier ist der Code, der Aufträge geöffnet, wenn es keine Bedingungen waren.

Ich habe diesen Punkt noch nicht verstanden.... Wenn die Aufträge BAY geöffnet wurden, wurden sie, wie ich es verstanden habe, durch Gegenaufträge CEL geschlossen. Und ich verstehe nicht, woher der Code die Informationen darüber hat, um wie viele Pips die Orders geschlossen werden sollen, denn ich habe nirgendwo die Größe von SL und TP angegeben und ich habe die Funktion zum Schließen der Orders überhaupt nicht angegeben. Ich vermute, dass diese Informationen an irgendeiner Stelle in einer angehängten Datei, d.h. in einer Klasse oder Struktur, gespeichert sind. Wenn dem so ist, wie kann ich diese Stelle finden, um Änderungen an den Parametern der geöffneten Order vorzunehmen?

Nochmals vielen Dank für Ihre Hilfe

Sie haben die MqlDateTime-Struktur zwar deklariert, aber nicht initialisiert, so dass sie entweder leer oder unbrauchbar ist.

So werden bei jedem Tick ab 10:00 Uhr für eine Minute Kaufpositionen eröffnet. Um 11:00 Uhr werden dann für eine weitere Minute Kaufpositionen eröffnet.

//+------------------------------------------------------------------+
#include<Trade\Trade.mqh>
 CTrade  trade;
//+------------------------------------------------------------------+
void OnTick()
  {
   MqlDateTime time_now;
   TimeCurrent(time_now);
   if((time_now.hour == 10 || time_now.hour == 11) && time_now.min == 0)
      trade.Buy(0.1);
  }
//+------------------------------------------------------------------+
Dieser Code kann keine Positionen schließen, es gibt nichts dergleichen in der CTrade-Klasse.
 
Aleksandr Slavskii #:

Sie haben die Struktur MqlDateTime deklariert , aber nicht initialisiert. Sie ist nun entweder leer oder fehlerhaft.

So werden bei jedem Tick ab 10:00 Uhr für eine Minute Kaufpositionen eröffnet. Dann, um 11:00 Uhr, werden weitere Kaufpositionen für eine Minute eröffnet.

Dieser Code kann keine Positionen schließen, es gibt nichts dergleichen in der CTrade-Klasse.

Herzlichen Dank.... Sie haben mich bei der Beherrschung der 5. Sie sagen, dass dieser Code keine Positionen schließen kann. Aber wenn Sie alle Bedingungen entfernen, dann werden Positionen durch Gegenaufträge geöffnet und geschlossen CEL.... wie ich es verstehe. Welcher Code-Befehl wird dann zum Schließen von Aufträgen verwendet? Woher bekommt das Programm die Daten für das Schließen von Aufträgen genau nach einer bestimmten Anzahl von Punkten oder beim Eintreten eines bestimmten Ereignisses? Ich verstehe nicht einmal, nach welcher Regel es sie schließt.

#include<Trade\Trade.mqh>
 CTrade  trade;

void OnTick()
{
trade.Buy(0.1);
}

Mir ist auch aufgefallen, dass SEL-Aufträge, die zum Schließen von BAY-Aufträgen verwendet werden, aus irgendeinem Grund eine Ticketnummer haben, die sehr weit von der Ticketnummer des BAY-Auftrags, den sie schließen, entfernt ist. Dererste BAY-Auftrag hat zum Beispiel die Ticketnummer 2, aber der CEL-Auftrag, der ihn schließt, hat aus irgendeinem Grund nicht die Ticketnummer 3 (was logisch wäre), sondern 91779.

Und wenn Sie nur 1 Auftrag öffnen, wird alles logisch. Der BAY-Auftrag hat die Nummer 2, und der abschließende CEL-Auftrag hat die Nummer 3.

int y;
#include<Trade\Trade.mqh>
 CTrade  trade;
//+------------------------------------------------------------------+
void OnTick()
  {
   MqlDateTime time_now;
   TimeCurrent(time_now);
   if(time_now.hour == 10&&y==0)
   {trade.Buy(0.1);y =1;}
      
  }


 
ANDREY #:

Vielen Dank.... Sie haben mich bei der Beherrschung der 5. Sie sagen, dass dieser Code keine Positionen schließen kann. Aber wenn Sie alle Bedingungen entfernen, dann werden Positionen durch Gegenaufträge geöffnet und geschlossen CEL.... wie ich es verstehe. Welcher Code-Befehl wird dann zum Schließen von Aufträgen verwendet? Woher bekommt das Programm die Daten für das Schließen von Aufträgen genau nach einer bestimmten Anzahl von Punkten oder beim Eintreten eines bestimmten Ereignisses? Ich verstehe nicht einmal, nach welcher Regel es sie schließt.

Mir ist auch aufgefallen, dass SEL-Aufträge, die zum Schließen von BAY-Aufträgen verwendet werden, aus irgendeinem Grund eine Ticketnummer haben, die sehr weit von der Ticketnummer des BAY-Auftrags, den sie schließen, entfernt ist. Dererste BAY-Auftrag hat beispielsweise die Ticketnummer 2, aber der CEL-Auftrag, der ihn abschließt, hat aus irgendeinem Grund nicht die Ticketnummer 3 (was logisch wäre), sondern 91779.

Und wenn Sie nur 1 Auftrag öffnen, wird alles logisch. Der BAY-Auftrag hat die Nummer 2, und der abschließende CEL-Auftrag hat die Nummer 3.


Nun, es ist schwer zu verstehen, was hier vor sich geht, aber ich denke, Sie eröffnen mehr Positionen als vom Broker für dieses Instrument erlaubt und der Tester beginnt, die zusätzlichen Positionen zu schließen.

Eigentlich sollte er diese zusätzlichen Positionen nicht öffnen. Aber anders kann ich mir nicht erklären, was bei Ihnen passiert.


Eine Position verstehe ich auch nicht. Warum sie am Ende des Tages geschlossen wird. Vielleicht verbietet Ihr Broker, Positionen auf den nächsten Tag zu übertragen.

 
Aleksandr Slavskii #:

Nun, es ist schwer zu verstehen, was da vor sich geht, aber ich denke, Sie eröffnen mehr Positionen als vom Broker für dieses Instrument erlaubt und der Tester beginnt, die zusätzlichen Positionen zu schließen.

Eigentlich sollte er diese zusätzlichen Positionen nicht öffnen. Aber anders kann ich mir nicht erklären, was bei Ihnen los ist.


Eine Position verstehe ich auch nicht. Warum sie am Ende des Tages geschlossen wird. Vielleicht erlaubt Ihr Broker Ihnen nicht, Positionen auf den nächsten Tag zu übertragen.

Ich danke Ihnen. Die Erklärung sieht sehr logisch aus. Bei einem Quad mit genau demselben Code und demselben Zeitraum passiert das Gleiche, nur werden die Aufträge nicht mit einem Gegenauftrag geschlossen. Mein Broker ist Alpari. Nach Ihren Erklärungen ist mir klar geworden, warum die Anzahl der schließenden Gegenaufträge so stark von den Aufträgen abweicht, die sie schließen. Weil alle abschließenden Aufträge ganz am Ende nach allen abschließenden Aufträgen geöffnet werden.

 

Guten Tag zusammen!
Ich versuche zu lernen, wie man mit der Klasse CTrade Orders in den five platziert, da es mir schien, dass dies der schnellste und einfachste Weg ist, sie zu setzen. Um genauer zu sein, versuche ich zu lernen, wie man den Parameter STOPLOSS setzt. In 4 wurde der letzte Geldkurs im vordefinierten Bid gespeichert, und in 5, so wie ich es verstanden habe, wird der letzte Geldkurs nicht gespeichert, sondern, wenn ich mich nicht irre, als eine der Optionen, in der Bid-Methode der CSymbolInfo-Klasse berechnet. Aber damit diese Methode den Preis berechnen kann , muss das Symbol vorher durch die Name-Methode ausgewählt worden sein. Wie die Name-Methode funktioniert , ist mir klar: Sie müssen entweder den Namen des Symbols oder NULL eingeben, und es wird false oder true zurückgegeben.

Aber ich verstehe nicht, wie und wo ich die Name-Methode und die Bid-Methode kombinieren kann , so dass der Bid-Preis in der Variablen c gespeichert wird.

In vier Orders wurden mit der Select()-Funktion ausgewählt, aber in fünf Orders sollten nicht Orders, sondern Symbol..... ausgewählt werden. Ich verstehe nicht, wie man das macht.

Ich wäre Ihnen sehr dankbar, wenn Sie ein Fragment in meinen Code schreiben könnten, um den Bid-Preis in der Variable with zu speichern, die ich im SL-Parameter der Btsu-Methode der CTrade-Klasse verwende.

int y;
double c,d;
#include<Trade\Trade.mqh>        //класс
#include <Trade\SymbolInfo.mqh>  //класс 
CTrade  trad;                   //класс (создание объекта класса)
CSymbolInfo pris;
//+------------------------------------------------------------------+
void OnTick()
  {
   c=pris.Bid();//
   Print(" ---------------------CТОП------------------------------------------------------------  ",c);
   MqlDateTime t;                //структура (объявление структуры)
   TimeCurrent(t);               //структура (инициализация структуры)
   if(t.hour == 9&&y==0)
   {trad.Buy(0.1,NULL,0,c);y =1;}   //класс
      
  }
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / Name
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / Name
  • www.mql5.com
Name - CSymbolInfo - Торговые классы - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5