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

 
Fast235:

Das ist für mich,

es wird eine zusätzliche Verzögerung geben, bis alle Punkte während der Kompilierung auf dem Diagramm platziert sind

Falls erforderlich (z. B. bei Neukompilierung), erstellen Sie eine Terminalvariable expetname.deinitreason.ChartId() in OnDeinit und geben Sie ihr ein temporäres Flag, setzen Sie den Grundcode dort ein. Dasselbe gilt für verwandte Daten (die Sie möglicherweise benötigen).

in OnInit - feststellen, ob die Variable existiert, auf ihren Wert reagieren.

und löschen Sie diese Variable auf jeden Fall...

---

Hinweis - abnormale Abbrüche werden auf die gleiche Weise erfasst, aber in umgekehrter Reihenfolge :-) In OnInit wird eine Variable geprüft und erstellt, in OnDeinit wird sie gelöscht. Wenn ein kritischer Fehler aufgetreten ist und EA/Terminal gerade abgestürzt ist, bleibt die Variable erhalten.

 
Maxim Kuznetsov:

Falls erforderlich (z. B. beim Neukompilieren), erstellen Sie eine Terminalvariable expetname.deinitreason.ChartId() in OnDeinit und geben Sie ihr das Flag temporary, platzieren Sie den Grundcode dort. Dasselbe gilt für verwandte Daten (die Sie möglicherweise benötigen).

in OnInit - feststellen, ob die Variable existiert, auf ihren Wert reagieren.

und löschen Sie diese Variable auf jeden Fall...

---

Hinweis - abnormale Abbrüche werden auf die gleiche Weise erfasst, aber in umgekehrter Reihenfolge :-) In OnInit wird eine Variable geprüft und erstellt, in OnDeinit wird sie gelöscht. Wenn ein kritischer Fehler aufgetreten ist und EA/Terminal gerade abgestürzt ist, bleibt die Variable erhalten.

Ich bin mit Dateien und globalen Variablen vertraut, es lohnt sich nicht, dies zu erstellen, vielleicht werden die Entwickler von der Kompilierung entfernen - 0, oder sogar einen Zustand hinzufügen, dass das Terminal gestartet, zum Beispiel, kann ich eine Geschichte Loader für Multisymbol anstelle der Eingabe hinzufügen

 

Die Idee war, die Kerzen in verschiedenen Farben herzustellen, je nachdem, ob sie nach oben oder nach unten zeigen. Die letzte Kerze erhält jedoch unterschiedliche Farben, da sich die Richtung der Kerze im Laufe der Zeit ändert. Und mit der Zeit bekommen alle Kerzen unterschiedliche Farben. Die Frage ist, wie man die Farbe der letzten Kerze ändern kann, ohne die anderen zu verändern. Oder vielleicht eine andere Idee.



//+------------------------------------------------------------------+
//|                                      VSA_Volume_Color            |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 3

//////////////
datetime PrevTime = 0;
double iVolume_UP[];
double iVolume_DWN[];
double iVolume_NULL[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   IndicatorDigits(5);
//--- indicator buffers mapping
   SetIndexBuffer(0, iVolume_UP);
   SetIndexBuffer(1, iVolume_DWN);
   SetIndexBuffer(2, iVolume_NULL);
//---
   SetIndexStyle(0, DRAW_HISTOGRAM,EMPTY,2,clrGreen);
   SetIndexStyle(1, DRAW_HISTOGRAM,EMPTY,2,clrWhite);
   SetIndexStyle(2, DRAW_HISTOGRAM,EMPTY,2,clrRed);
//---
   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[])
  {
//---
   int i = 0, counted_bars = IndicatorCounted();
   i = Bars - counted_bars - 1;
   if(counted_bars < 0)
      return(-1);
//---
   if(counted_bars > 0)
      counted_bars--;
//--- return value of prev_calculated for next call
///////////
   while(i >= 0)
     {
      if(Close[i] > Open[i])
         iVolume_UP[i] =  iVolume(NULL, 0, i) * 1.0;
      if(Close[i] < Open[i])
         iVolume_DWN[i] =  iVolume(NULL, 0, i) * 1.0;
      if(Close[i] == Open[i])
         iVolume_NULL[i] =  iVolume(NULL, 0, i) * 1.0;
      i--;
     }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
   return(rates_total);
  }
//+------------------------------------------------------------------+
Ich danke Ihnen!
 

Unnötige Puffer zurücksetzen

iVolume_UP[i]=EMPTY_VALUE;
 

Link zu einem separaten Thema -SERIES_LASTBAR_DATE

der Drucker zeigte an, dass das Signal nicht ankam, weil - das Signal vom Indikator über das benutzerdefinierte Ereignis kam, er mit SERIES_LASTBAR_DATE auf einen neuen Balken prüfte und

in den Druck der Daten des vorherigen bar, nicht neu ..., etwa 50 Trades in insgesamt 7 Zeichen, rutscht so, was können Sie sich, irgendwelche Ideen? ping 150.

Ryzen 3700x Prozessor 16 Threads

----

Wenn ich ein ähnliches Multi-Symbol-Schema verwende, haben Sie ähnliche Ergebnisse auf 2 oder 3 Terminals in Echtzeit gemessen, auf M1 zum Beispiel, ich warte von ein paar Stunden bis zu einem halben Tag auf einen solchen Sprung, mit 40-50 Trades pro Tag

Prozessorlast ein paar % des Roboters, schläft fast.

В моих ТС пропуск сигнала
В моих ТС пропуск сигнала
  • 2021.03.16
  • www.mql5.com
Не люблю создавать новые темы, Небольшие исходные данные: Советник работает в OnChatEvent, 7 символов, циклов нет, прямая передача номера за минусо...
 

ein Handel bei 30-50, okay, er kann sowohl im Plus als auch im Minus schließen, aber

Ich habe ein System zur Berechnung des Gesamtgewinns, das ziemlich kompliziert ist, und es sollte diesen Handel jetzt betreffen, nicht beim nächsten Signal

können Sie 5 Jahre lang tiefer graben.

Wenn das Ereignismodell schief ist, lassen Sie es die Entwickler bitte wissen, damit es verworfen werden kann. Nach den ersten Beiträgen auf spy zu urteilen, wo verschiedene Varianten getestet wurden, gab es auch Streuungen und Auslassungen?
 
Aleksei Stepanenko:

Unnötige Puffer zurücksetzen

Großartig. Alles funktioniert). Ich danke Ihnen!
 
Guys, bitte beraten, ich bin verwirrt mit Indizierung in mql5 Indikator Puffer.
Wenn dieArraySetAsSeries(Buffer, true) Funktion angewendet wird
, nur Indizierung wird entfaltet? Oder werden auch die Pufferwerte erweitert?
 
Roman:
Guys, bitte beraten, ich bin verwirrt mit Indizierung in mql5 Indikator Puffer.
Wenn dieArraySetAsSeries(Buffer, true) Funktion angewendet wird
, nur Indizierung wird erweitert? Oder werden auch die Pufferwerte erweitert?
Wenn dies der Fall ist, ist der Nullbalken des Indikatorpuffers der Balken ganz rechts auf dem Diagramm. Wenn false, ist es der Balken ganz links.
Sonst nichts.
 
Artyom Trishkin:
Bei true ist der Nullbalken des Indikatorpuffers ganz rechts im Diagramm. Bei false ist sie ganz links.
Mehr gibt es nicht zu sagen.

Ich danke Ihnen.
Artem, bitte sagen Sie mir noch etwas.
Die Funktion

ChartSetInteger(ChartID(), CHART_SHOW, false)
Blendet das Hauptfenster des Charts und die Unterfenster des installierten Indikators aus.
Wie kann ich nur das Hauptdiagrammfenster ausblenden? Gleichzeitig sollte das Teilfenster des Indikators sichtbar bleiben.