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

 
Vladimir Karputov:

Gehen Sie bei der Fehlersuche durch und prüfen Sie, in welchen Fällen Ihre Bedingung erfüllt wird.


Rates_total - prev_calculates ist sehr effektiv.

  • Wenn sie gleich Null ist, bedeutet dies, dass die Berechnung für den aktuellen Balken um einen Tick durchgeführt wird.
  • Wenn sie gleich 1 ist, bedeutet dies , dass es einen neuen Balken gibt und zwei Balken berechnet werden - der vorherige und der aktuelle.
  • Ist der Wert größer als 1, bedeutet dies entweder den ersten Lauf oder eine Änderung in den Verlaufsdaten
Wir berechnen den Grenzwert. Und in der Schleife von Grenzwert bis größer oder gleich Null berechnen wir die Indikatordaten. Und Sie berechnen selbst, wie hoch das Limit ist, wenn Sie Limit = rates_total - prev_calculates berechnen.
 
Artyom Trishkin:

rates_total - prev_calculates ist eine sehr effektive Konstruktion.

  • Wenn er gleich Null ist, bedeutet dies, dass die Berechnung für den aktuellen Balken durch den Tick durchgeführt wird.
  • Wenn sie gleich 1 ist, bedeutet dies , dass es einen neuen Balken gibt und zwei Balken berechnet werden - der vorherige und der aktuelle
  • Ist der Wert größer als 1, bedeutet dies entweder den ersten Lauf oder eine Änderung in den Verlaufsdaten
Wir berechnen den Grenzwert. Und in der Schleife von Grenzwert bis größer oder gleich Null berechnen wir die Indikatordaten. Und Sie berechnen selbst, wie hoch das Limit ist, wenn Sie limit = rates_total - prev_calculates berechnen.

Sehen Sie sich den Code an.

Dann geben Sie Ihre Kommentare ab.

 
Vladimir Karputov:

Sehen Sie sich den Code an.

Dann kommentieren Sie es.

Warum die Unhöflichkeit? Ich war nicht unhöflich.

Ich habe geantwortet, wann die von Ihnen zitierte Zeile und ihr Zustand gelten werden:

Forum für Handel, automatisierte Handelssysteme und Strategietests

FAQ von Anfängern MQL5 MT5 MetaTrader 5

Wladimir Karputow, 2020.08.06 13:03

Gehen Sie bei der Fehlersuche durch und prüfen Sie, in welchen Fällen Ihre Bedingung erfüllt wird.


Ich habe sogar eine Antwort auf drei mögliche Bedingungen hinzugefügt und was in einem solchen Fall zu tun ist:

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

FAQ von Anfängern MQL5 MT5 MetaTrader 5

Artyom Trishkin, 2020.08.06 15:17

rates_total - prev_calculates ist ein sehr effizienter Algorithmus.

  • Wenn er gleich Null ist, bedeutet dies, dass die Berechnung für den aktuellen Balken um den Tick erfolgt.
  • Wenn er gleich 1 ist, bedeutet das , dass es einen neuen Balken gibt und zwei Balken berechnet werden - der vorherige und der aktuelle
  • Ist der Wert größer als 1, bedeutet dies entweder den ersten Lauf oder eine Änderung in den Verlaufsdaten
Wir berechnen den Grenzwert. Und in der Schleife von Grenzwert bis größer oder gleich Null berechnen wir die Indikatordaten. Und berechnen Sie, wie hoch die Grenze ist, wenn Sie die Grenze berechnen = rates_total - prev_calculates.

Sie brauchen für die Verarbeitung nichts zu tun - genau diese Berechnung wird den Zyklus mit dem erforderlichen Wert in jedem der drei Zustände beginnen.

 
Artyom Trishkin:

Warum unhöflich sein? Ich war nicht unhöflich.

Ich habe beantwortet, in welchen Fällen die von Ihnen zitierte Zeile und ihre Bedingung erfüllt werden:

Und ich habe die Antwort sogar mit drei möglichen Zuständen ergänzt, und was in einem solchen Fall zu tun ist:

Sie brauchen nichts zu tun, um es selbst zu verarbeiten - diese exakte Berechnung startet eine Schleife ab dem gewünschten Wert in jedem der drei Zustände.

Nehmen Sie den Code und führen Sie eine Fehlersuche durch. Als Nächstes können Sie es selbst tun - aber jetzt gehen Sie zum Ende und erklären Sie mindestens drei Fehler.

 
Vladimir Karputov:

Nehmen Sie den Code und führen Sie eine Fehlersuche durch. Erledigen Sie den Rest allein - aber machen Sie jetzt weiter und erklären Sie mindestens drei Fehler.

Nein. Ich habe keine Zeit. Ich habe nur auf die von Ihnen zitierte Zeile geantwortet - dort liegt kein Fehler vor. Und von hier aus (ich habe den Code aus den Augenwinkeln betrachtet) soll er versuchen, es selbst herauszufinden (es gibt Fehler, und sie sind an der Oberfläche).

Es gibt viele Beispiele für solche Konstruktionen hier im Forum und seinen Diensten.

Victor Nikolaev hat es immer benutzt (oder tut es immer noch, wenn er nicht faul ist), und hat es mir vor langer Zeit beigebracht.

Victor Nikolaev
Victor Nikolaev
  • www.mql5.com
Профиль трейдера
 
Artyom Trishkin:

Nein, dazu habe ich keine Zeit. Ich habe nur auf die von Ihnen zitierte Zeile geantwortet - sie enthält keinen Fehler. Und außerdem (ich habe mir den Code aus dem Augenwinkel angesehen) soll er versuchen, es selbst herauszufinden (es gibt Fehler, und sie sind an der Oberfläche).

Es gibt viele Beispiele für solche Konstruktionen hier im Forum und seinen Diensten.

Victor Nikolaev hat es immer benutzt (oder benutzt es immer noch, wenn er nicht faul ist), und hat es mir vor langer Zeit beigebracht.

Lesen Sie das Forum besser nicht von einem Mobiltelefon, sondern von einem Computer aus. Und lesen Sie ALLE Beiträge, nicht nur Ihre Favoriten. Wenn Sie nicht helfen wollen, sollten Sie sich gar nicht erst an dem Gespräch beteiligen.

 
Сергей Таболин:


Hier ein Beispiel: Basierend auf DRAW_COLOR_CANDLES wird die Kerze nicht gezeichnet, wenn die Größe der Kerze kleiner ist als eingestellt.

Hinweis: Dies ist ein neu gestalteter Indikator - ursprünglich zeichnete er Candlesticks nach High und Low. Und keine Ticks noch - nur ein Beispiel für die Arbeit mit DRAW_COLOR_CANDLES, wenn die Kerze Größe ist kleiner als eingestellt - die Kerze ist nicht gezeichnet.

//+------------------------------------------------------------------+
//|                                             High Low Candles.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 5
#property indicator_plots   1
//--- plot HLC_
#property indicator_label1  "High Low Candles"
#property indicator_type1   DRAW_COLOR_CANDLES
#property indicator_color1  clrLimeGreen,clrLavender
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- input parameters
input uint     InpMinSize     = 150;            // Candles: min size
//--- indicator buffers
double   OpenBuffer[];  // open
double   HighBuffer[];  // high
double   LowBuffer[];   // low
double   CloseBuffer[]; // close
double   Colors[];
//---
double   m_min_size           = 0.0;            // Candles: min size          -> double
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,OpenBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,HighBuffer,INDICATOR_DATA);
   SetIndexBuffer(2,LowBuffer,INDICATOR_DATA);
   SetIndexBuffer(3,CloseBuffer,INDICATOR_DATA);
   SetIndexBuffer(4,Colors,INDICATOR_COLOR_INDEX);
//--- an empty value
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);
//--- set the display of the symbol
   string symbol=Symbol();
   PlotIndexSetString(0,PLOT_LABEL,symbol+" Open;"+symbol+" High;"+symbol+" Low;"+symbol+" Close");
   IndicatorSetString(INDICATOR_SHORTNAME,"HLC ("+symbol+")");
//---
   m_min_size=InpMinSize*Point();
//---
   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 limit=prev_calculated-1;
   if(prev_calculated==0)
      limit=0;
   for(int i=limit; i<rates_total; i++)
     {
      HighBuffer[i]=high[i];
      LowBuffer[i]=low[i];
      if(open[i]<close[i])
        {
         if(close[i]-open[i]>m_min_size)
           {
            OpenBuffer[i]=low[i];
            CloseBuffer[i]=high[i];
            Colors[i]=1.0;
           }
         else
           {
            OpenBuffer[i]=0.0;
            HighBuffer[i]=0.0;
            LowBuffer[i]=0.0;
            CloseBuffer[i]=0.0;
            Colors[i]=0.0;
           }
        }
      else
        {
         if(open[i]-close[i]>m_min_size)
           {
            OpenBuffer[i]=high[i];
            CloseBuffer[i]=low[i];
            Colors[i]=0.0;
           }
         else
           {
            OpenBuffer[i]=0.0;
            HighBuffer[i]=0.0;
            LowBuffer[i]=0.0;
            CloseBuffer[i]=0.0;
            Colors[i]=0.0;
           }
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+


Ergebnis:


Dateien:
 
Vladimir Karputov:

Sie sollten das Forum von Ihrem Computer und nicht von Ihrem Mobiltelefon aus lesen. Und lesen Sie ALLE Beiträge, nicht nur die bevorzugten. Wenn Sie nicht helfen wollen, sollten Sie sich gar nicht erst an dem Gespräch beteiligen.

Sind Sie krank? :)


 

Leute, Artyom und Vladimir, streitet euch nicht, es gibt wirklich nichts zu streiten... )))

Nun zu den Fehlern. Ich habe mit dem Schreiben dieses Indikators begonnen, um zu visualisieren, was ich in diesem Artikel gelesen habe. Und ich habe mit dem Schreiben begonnen, nachdem ich vor einem Monat ins Bad geschickt wurde. Ich meine damit, dass ich Zeit hatte, meine eigenen Fehler zu finden. Ich konnte sie nicht finden, deshalb habe ich hier um Hilfe gebeten.

Ich habe Sie gebeten, mir zu zeigen, wo ich falsch liege (im Code). Und warum?

Ich kann den Debugger nicht verwenden. Ich weiß nicht, wie das geht. Zu "Watchable" werden keine Variablen hinzugefügt (ich habe vor langer Zeit im Forum darüber geschrieben...).

Sagen Sie mir einfach, wo die Anhängevorrichtung ist?

Дискретизация ценового ряда, случайная составляющая и "шумы"
Дискретизация ценового ряда, случайная составляющая и "шумы"
  • www.mql5.com
Классический способ представления ценовых движений в виде временных отрезков возник на заре становления финансовых рынков, когда еще не было компьютеров и вся торговля шла на реальных рынках, реальными товарами. Хранить каждое изменение цены в течении дня было трудно, да и не имело смысла, цены менялись не так быстро. Поэтому представлялось...
 
Сергей Таболин:

Sagen Sie mir einfach, wo die Anhängevorrichtung ist?

Die Schwierigkeit liegt in der Organisation des Codes. Ich habe versucht, sie zu lesen, aber sie ist so geschrieben, dass mein Gehirn sie nicht begreifen kann. Ich weiß nicht, wie ich erklären soll, was los ist.

Ich kann Ihnen nur raten, von Anfang an und der Reihe nach zu beginnen.

  1. Beginnen Sie damit, jede N-Kerze auszusuchen.
  2. Legen Sie dann eine Bedingung fest, um zu entscheiden, welche Kerze hervorgehoben werden soll.
Und schließlich lernen Sie, wie man den Debugger benutzt.
Grund der Beschwerde: