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

 
alex_xss:

1) Ich persönlich stimme dem zu, und wenn es nach mir ginge, würde ich es einfach abschalten und verbieten, dass es in den Code aufgenommen wird. Aber das können Sie nicht)

2) Danke, aber ich habe dort keine Lösung gefunden (es ist überall über OBJ_VLINE Objekt gelöst, es passt mir nicht), ich grabe meinen eigenen Weg

Sie können ein Raster auf einem Canvas erstellen, das manche Leute mögen. Legen Sie die Leinwand als Hintergrund (oder Vorderseite) des Diagramms an, zeichnen Sie darüber und folgen Sie der Geometrie/Preis/Zeit-Beziehung.

Es ist mühsam, aber mit etwas Geschmack und Zeit kann es wunderschön werden.

 
Maxim Kuznetsov:

können Sie ein Raster auf einem Canvas-Favoriten erstellen. Legen Sie die Leinwand als Hintergrund (oder Vorderseite) des Diagramms aus, zeichnen Sie darüber und folgen Sie den Geometrie/Preis/Zeit-Beziehungen.

Es ist schmerzhaft, aber mit etwas Geschmack und Zeit kann es auch schön sein.

Können Sie bitte ein einfaches Beispiel für Kanvas schreiben?

Ich habe keine Ahnung davon, ich brauche nur ein Rechteck in der Größe einer Karte und eine senkrechte Linie darauf.

 
alex_xss:

Können Sie bitte ein einfaches Beispiel für Kanvas schreiben?

Ich habe keine Ahnung davon, ich brauche nur ein Rechteck in der Größe einer Karte und eine senkrechte Linie darauf.

Rufen Sie @Nikolai Semko an, er kennt sich mit Kanvas viel besser aus. Und wenn er unterwegs ist - auf seinem Profil sind viele Dinge auf der Leinwand zu sehen

 
alex_xss:

Können Sie bitte ein einfaches Beispiel für Kanvas schreiben?

Ich habe keine Ahnung davon, ich brauche nur ein Rechteck in der Größe eines Diagramms und eine vertikale Linie darauf

Lustig. Ein solcher Fehler tritt nur in MT4 und nur bei vertikalen Linien auf.

Das einzige Rätsel ist, warum sie sich einmischt. In meinem Leben wäre mir das nicht aufgefallen.

Können Sie das Problem genauer formulieren, um zu verstehen, wie man es am besten lösen kann? Die Interaktion von grafischen Objekten mit der Leinwand ist nuanciert.
Übrigens, eine der möglichen Lösungen ist der Wechsel des Managers. ))
Wenn er/sie glaubt, dass der Farbwechsel eine Krücke ist, dann wird Kanvas erst recht eine Krücke für ihn/sie sein.
Obwohl ich zugeben muss, dass Ihr Manager eine fiktive Figur oder eine Allegorie ist. ))

 

alex_xss
:

Können Sie bitte ein einfaches Beispiel für Kanvas schreiben?

Ich habe keine Ahnung davon, ich möchte nur ein Rechteck in der Größe einer Karte und eine senkrechte Linie darauf.


Nicht optimal in Bezug auf die Leistung (Neuzeichnen geschieht häufiger als es sollte - nur faul, um den Code zu komplizieren), aber es funktioniert.

Sie können eine Leinwand für die Größe des Bildschirms (nicht des Fensters, z. B. 1920x1080) implementieren und sie überhaupt nicht neu zeichnen. Es werden nur 8 Mbyte Speicherplatz benötigt.
Übrigens hilft es nicht, die Farbe des Gitters zu ändern.

#include <Canvas\iCanvas.mqh> //https://www.mql5.com/en/code/23840

int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
   if(id==CHARTEVENT_CHART_CHANGE) DrawGrid();
  }
//+------------------------------------------------------------------+
void DrawGrid() {
  Canvas.Erase(0);
  if (ChartGetInteger(0,CHART_SHOW_GRID)) {
      Canvas.SetBack(false);
      ChartSetInteger(0,CHART_FOREGROUND,0,true);
      uint clr = ColorToARGB((color)ChartGetInteger(0,CHART_COLOR_GRID),255);
      for (int y=0;y<W.Height;y++)
      if (y%6<2 || y%6>4) {
         for (int x=32;x<W.Width;x+=32)
         Canvas.m_pixels[y*W.Width+x]=clr;
      } 
  }
  Canvas.Update();
}
Dateien:
 
Hat jemand eine Funktion zum Sortieren eines Arrays (String) alphabetisch?
 
Aleksey Vyazmikin:
Vielleicht hat jemand eine Funktion , um ein Array (String) alphabetisch zu sortieren?

Ich habe einen dieser Säbel, der einmal geschrieben hat

//===============================================================================================
//--------------------------------- Сортирует строковой массив ---------------------------------+
//===============================================================================================
void ArraySortStr(string &Str[]) {
 string Min;
 int jMin, Size = ArraySize(Str);
  for(int i=0; i<Size-1;i++) {
   Min = Str[i];
   jMin = i;
    for(int j=i+1; j<Size; j++)
     if(Str[j] < Min) {
       Min = Str[j];
       jMin = j;
      }
     if(jMin > i) {
       Str[jMin] = Str[i];
       Str[i] = Min;
     }
   }
 }
 
Vitaly Muzichenko:

Ich habe einen dieser Säbel, auf dem einmal ein Schwert stand

Ich danke Ihnen.

 
Maxim Kuznetsov:

Wir sollten vertikalen Linien auf.

Es ist mir ein Rätsel, warum es mich daran hindert, es zu benutzen. Ich hätte es nie bemerkt.

Können Sie das Problem genauer formulieren, um zu verstehen, wie man es am besten lösen kann? Die Interaktion von grafischen Objekten mit der Leinwand ist nuanciert.
Übrigens, eine der möglichen Lösungen ist der Wechsel des Managers. ))
Wenn er/sie glaubt, dass der Farbwechsel eine Krücke ist, dann wird Kanvas erst recht eine Krücke für ihn/sie sein.
Obwohl ich zugeben muss, dass Ihr Manager eine fiktive Figur oder eine Allegorie ist. ))

Jepp, ein cooles Gimmick, mit dem ich fast eine Woche verbracht habe) Mein Arsch brennt)

Warum sollte das ein Hindernis sein? Es gibt einen Indikator, der Dreiecke zum Zeichnen verwendet. Es ist alles sehr schön geworden, die Farben sind aufgegriffen worden, und jetzt haben Sie einen solchen Fehler bemerkt.
Der Indikator ist nicht für den persönlichen Gebrauch bestimmt und es ist unsinnig, ihn mit diesem Fehler zu veröffentlichen. Ich muss entweder die gesamte Zeichnung ändern, was ziemlich kompliziert ist, weil ich ein Anfänger bin, oder den Fehler beheben.

Das Ändern des Farbrasters hilft nicht, wie Sie bemerkt haben, bin ich selbst dazu gekommen) Anfangs schienen einige Farbkombinationen zu helfen

Die Änderung der Farbe des Gitters (wenn sie denn helfen würde) ist eine inakzeptable Krücke, da der Benutzer darauf Einfluss nehmen kann, falls er die Farbe ändern möchte.
Die Option, diese Funktion für den Benutzer zu sperren, ist auch nicht geeignet, ich denke, es ist klar, warum)))

Die Aufgabe: Der Benutzer soll das Gitter, wenn es aktiviert ist, immer in derselben Farbe sehen. Unter Berücksichtigung der Fehler von MT4 mit vertikalem Raster + gefülltem Objekt. Ich weiß nicht, was ich noch hinzufügen soll)

Im Grunde ist die von Ihnen oben beschriebene Variante in Ordnung. Ich kann es polieren. Du bist ein Goldjunge!!! Es gibt einfach keine Worte, um meine Dankbarkeit auszudrücken. Ich gebe dir fünf Dollar für deine Hilfe.

Nur ein paar kleine Fragen:
Wie groß ist die Verzögerung bei schwachen PCs? Ich weiß, es ist eine abstrakte Frage, aber ich würde mich freuen, von Ihnen zu hören.
"Es wird nur 8 MB Speicher verb rauchen" - ich nehme an, Sie sprechen nicht von RAM?)) Wenn ja, sind 8 MB nichts im Vergleich zu
iCanvas ist ein Muss, ein normales wird nicht ausreichen? Es ist nur ein weiterer Benutzer, der sagt "diese Datei hier, diese Datei dort". Sie sind so dumm, dass sie nicht wissen, wohin sie es stecken sollen.)

 
Guten Tag

Bitte beraten Sie mich - beantworten Sie die Frage

Es gibt einen Bulls.mq4 Indikator in Metatrader.
Warum wird ein zusätzlicher Puffer benötigt, und warum kann nicht einfach eine Zwischenvariable verwendet werden?
dd = iMA(NULL,0,InpBullsPeriod,0,MODE_EMA,PRICE_CLOSE,i);
ExtBullsBuffer[i]=dd;

Die Frage ist, dass ExtBullsBuffer[i] nur verwendet wird, um den berechneten Wert des Ergebnisses der iMA-Funktion zu speichern, und in der nächsten Zeile wird dieser Wert dem Indikatorpufferelement zugewiesen. Der ExtBullsBuffer wird nirgendwo anders verwendet. Warum dieser Zwischenpuffer ExtBullsBuffer hier benötigt wird und nicht nur eine Variable, wie sie in der Abbildung
grün markiert ist ***