Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1238

 
Oleg Remizov:

Und nach meinen Beobachtungen mögen es die Nutzer, wenn der Expert Advisor verschiedene Informationen auf dem Bildschirm anzeigt: Er zeichnet Pfeile, Linien, Kanäle und andere Dinge, um die rege Aktivität der "künstlichen Intelligenz" zu zeigen).

Entsprechend den Indikatoren bietet der Expert Advisor Trailing. Ich möchte diesen Prozess visualisieren, damit ein Benutzer die gepunktete Linie mit StopLoss sehen kann.

Verwenden Sie eine Trendlinie, der erste Ankerpunkt ist der aktuelle Balken und der zweite ist 1 Balken in der Geschichte, setzen Sie die Dicke von 2-3

 
Vitaly Muzichenko:

Verwenden Sie eine Trendlinie, ersten Ankerpunkt aktuellen Bar und zweiten 1 Bar in die Geschichte, setzen Sie die Dicke bei 2-3

Großartige Idee! Vielen Dank, das sieht genau richtig aus.

Tendenz

 
ANDREY:

Im Lehrbuch von Kovalev heißt es über die Initialisierung eines Arrays zur gleichen Zeit, in der es deklariert wird, Folgendes

8.4.4 Initialisierung von Arrays

Ein Array kann nur mit Konstanten des entsprechenden Typs initialisiert werden. eindimensionale und mehrdimensionale Arrays werden mit einer eindimensionalen Folge von Konstanten initialisiert, die durch Kommata getrennt sind. Die Folge ist in geschweifte Klammern eingeschlossen:

int Mas_i[3][4] = { 0, 1, 2, 3, 10, 11, 12, 13, 20, 21, 22, 23 }

double Mas_d[2][3] = { 0.1, 0.2, -0.3, -10.2, 1.5, 7.0 };

bool Mas_b[5] = { false, true, false, true, true }

Eine oder mehrere Konstanten können in der Initialisierungssequenz übersprungen werden.

Aus dem Lehrbuch weiß ich, dass bei der Deklaration eines Arrays das gesamte Array mit allen Daten initialisiert wird, nicht nur mit dem ersten Element des Arrays.
Wenn ich das Lehrbuch falsch verstanden habe, wäre ich Ihnen dankbar, wenn Sie mich darauf hinweisen könnten.

Ich habe nicht die geringste Lust, über Ihr Lehrbuch zu diskutieren, ich habe es nicht gelesen.

und schrieb hier im Forum, dass das Lehrbuch veraltet und irrelevant ist.

ein zweidimensionales Feld kann auf diese Weise initialisiert werden:

int arr[2][5] = {{1, 2, 3, 4, 5,}, {6, 7, 8, 9, 10}};
 
Igor Makanu:

nicht die geringste Lust, über Ihr Lehrbuch zu diskutieren, ich habe es nicht gelesen

und haben hier im Forum geschrieben, dass der Leitfaden veraltet und irrelevant ist.

Ein zweidimensionales Array kann auf diese Weise initialisiert werden:

Herzlichen Dank für Ihre Hilfe. Sie haben meine Gedanken direkt erraten. Ich rätsele gerade darüber, wie man ein zweidimensionales Array initialisiert.....aber nur mit Hilfe der FunktionArrayInitialize();
Das Handbuch dieser Funktion gibt Informationen über die Initialisierung nur von eindimensionalen Arrays, wie es mir schien.
Ich wäre Ihnen sehr dankbar, wenn Sie mir das mitteilen würden.

 
ANDREY:

Herzlichen Dank für Ihre Hilfe. Sie haben meine Gedanken direkt erraten. Ich bin gerade rätselhaft, wie man zweidimensionale Array.....aber nur mit Hilfe der Funktion ArrayInitialize ();
In der Referenz auf diese Funktion die Informationen über die Initialisierung nur eindimensionale Array gegeben ist, wie es mir schien.
Ich wäre Ihnen sehr dankbar, wenn Sie mir das mitteilen würden.

ArrayFill() ermöglicht es Ihnen, alle Elemente eines Arrays mit dem gewünschten Wert zu füllen und kann für ein zweidimensionales Array verwendet werden. Sehen Sie sich das Beispiel in der Hilfe zu dieser Funktion an.

Übrigens habe ichArrayInitialize() auf ein zweidimensionales Array angewendet überprüft, es funktioniert auch. In beiden Fällen können Sie jedoch nur alle Elemente mit einem bestimmten Wert initialisieren.

Wenn Sie für jedes Element einen anderen Wert festlegen müssen, werden diese Funktionen nicht funktionieren.

Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Переменные должны быть объявлены перед их использованием. Для идентификации переменных используются уникальные имена. Описания переменных используются для их определения и объявления типов. Описание не является оператором. Индексом массива может быть только целое число. Допускаются не более чем четырехмерные массивы. Нумерация элементов массива...
 
Oleg Remizov:

ArrayFill() ermöglicht es Ihnen, alle Elemente eines Arrays mit dem gewünschten Wert zu füllen und kann für ein zweidimensionales Array verwendet werden. Siehe das Beispiel in der Hilfe zu dieser Funktion.

Übrigens habe ichArrayInitialize() auf ein zweidimensionales Array angewendet überprüft, es funktioniert auch. In beiden Fällen können Sie jedoch nur alle Elemente mit einem bestimmten Wert initialisieren.

Wenn Sie für jedes Element einen anderen Wert einstellen müssen, funktionieren diese Funktionen nicht.

Herzlichen Dank für Ihre Hilfe.

 
Oleg Remizov:

Leider funktioniert die Vorlage bei mir nicht. Die Anzeigefunktion sollte in den Einstellungen ein-/ausgeschaltet werden, und das Zeichnen sollte direkt vom EA aus erfolgen. Der Expert Advisor sollte in einer einzigen Datei übertragen werden können.

Zeichnen Sie anstelle des Pfeils eine Trendlinie, die an beiden Punkten denselben Preis und dieselbe Zeit hat. Verwenden Sie die Dicke der Linie, um die Größe des resultierenden Punktes anzupassen.

 
Hallo, ich bin ein Neuling und würde gerne wissen, wie ich Geld von meinem Konto abheben kann und wann ich es überweisen muss.
 

Grüße.

In MT4 gibt es eine solche Funktion:

#import "user32.dll"
   int SendMessageA(int hWnd, int Msg, int wParam, char &lParam[]);
   int RegisterWindowMessageA(uchar &lParam[]);
#import

string IndiName="TestBot";

void OnStart()
  {
   char buf[];
   StringToCharArray("MetaTrader4_Internal_Message", buf);
   int MT4InternalMsg=RegisterWindowMessageA(buf);
   StringToCharArray(IndiName, buf);
   long handle=ChartGetInteger(0, CHART_WINDOW_HANDLE);
   Print(MT4InternalMsg);
   bool res=SendMessageA((int)handle, MT4InternalMsg, 14, buf);
   Print("Функция SendMessageA завершила работу с результатом: ",res);
  }

Dieser Code sendet einen Befehl an das Terminalfenster, um einen bestimmten EA auszuführen.

Gibt es eine ähnliche Funktion für MT5?

Ich habe es auf diese Weise versucht:

#import "user32.dll"
   int SendMessageA(long hWnd, long Msg, uint wParam, uchar &lParam[]);
   int RegisterWindowMessageA(uchar &lParam[]);
#import

string IndiName="TestBot";

void OnStart()
  {
   uchar buf[];
   StringToCharArray("MetaTrader5_Internal_Message", buf);
   long MT5InternalMsg=RegisterWindowMessageA(buf);
   StringToCharArray(IndiName, buf);
   long handle=ChartGetInteger(0, CHART_WINDOW_HANDLE);
   Print("Window handle: ", handle);
   Print("Message: ",MT5InternalMsg);
   for(int i = 0; i<100; i++){
      bool res=SendMessageA(handle, MT5InternalMsg, i , buf);
      printf("Функция SendMessageA завершила работу с результатом: %d, номер: %d ",res, i);
   }
  }

Funktioniert nicht.

Ich habe versucht, nach Spy++ zu suchen, aber im Gegensatz zu MT4 gibt es im MT5 keine Meldungen.

Ich muss das Fenster mit den Einstellungen des Expert Advisors genau aufrufen.

 
50211108:
Hallo, ich bin ein Neuling und möchte gerne klären, wie man Geld vom Konto abhebt und wann man wieder einzahlt

Sie können nur das abheben, was Sie mit dieser Ressource verdient haben, nämlich den Verkauf von Software, Signalen und Computerleistung. Was eingegeben wird, kann nur für diese Ressource ausgegeben werden.

Grund der Beschwerde: