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

 
Artyom Trishkin:
Wo genau führen Sie den Indikator im Terminal aus?
Wenn du meins meinst,C:\Users\AppData\Roaming\MetaQuotes\Terminal\CE01488447B8E5332C971089AB90, wenn du BB meinst, weiß ich ehrlich gesagt nicht, woher es läuft, aber ich habe das Problem mal ausgedruckt (ich habe herausgefunden, ob die BB selbst mehr als 4 Ziffern gibt) und ich habe auch BB aus diesem Ordner genommen.
 
Павел Козлов:
Ich habe mich mit dem Code beschäftigt, um mir diese Dinge anzusehen.

Ich weiß nicht, über alle, aber ich habe zwei Orte, wo Indizes und Experten befinden, es ist C:\Programme (x86)\ MT4\MQL4\Indikatoren und C:\Benutzer\AppData\Roaming\MetaQuotes\Terminal\CE01488447B8E5332C971089AB90 (dieser Ordner öffnet sich von Terminal File-Open-Daten-Verzeichnis) in beiden Orten habe ich für Code gesucht und es ist identisch.Vielleicht habe ich es wieder nicht richtig verstanden, können Sie es für jemanden, der es nicht weiß, klarstellen? Was ist der Unterschied zwischen benutzerdefiniert und Standard und wo sind beide zu finden?

Die Standardversion heißt BollingerBands und die angepasste Version heißt Bands und befindet sich an verschiedenen Stellen.


 
Artyom Trishkin:
Wo genau führen Sie den Indikator im Terminal aus?

Ich bezweifle, dass sie mit dem /portable mode vertraut ist.

 
Alexey Viktorov:

Der Standardwert heißt BollingerBands und der benutzerdefinierte Wert heißt Bands und befindet sich an verschiedenen Stellen.


Ich danke Ihnen. Ich kann Seiner Majestät von meinem Mobiltelefon aus nicht erklären, wo und was sich befindet.
Deshalb habe ich versucht zu sagen, dass es eine Sache startet, aber der Code sieht etwas anderes vor.
 
Alexey Viktorov:

Ich bezweifle, dass er mit /portable mode vertraut ist.

Ich bin wirklich nicht vertraut mit diesem Modus und in meinem Thread, den ich separat zu diesem Problem erstellt habe, habe ich meinen Wissensstand offenbart, bitte verzeihen Sie die Dummheit noch, aber es war nicht so einfach, wie Sie vielleicht gedacht haben. Dennoch haben Sie mir das Problem aufgezeigt, und jetzt werde ich versuchen, eine Lösung zu finden. Vielen Dank für Ihren Rat und den Rat von Artem.
 
Павел Козлов:
Ich bin wirklich nicht vertraut mit diesem Modus und in meinem Thread, den ich separat zu diesem Problem erstellt habe, habe ich meinen Wissensstand offenbart, bitte verzeihen Sie die Dummheit noch, aber es war nicht so einfach, wie Sie vielleicht gedacht haben. Dennoch haben Sie mir das Problem aufgezeigt, und jetzt werde ich versuchen, eine Lösung zu finden. Vielen Dank für Ihren Rat und den Rat von Artem.

Ich wollte Sie nicht in irgendeiner Weise überrumpeln. Es war ein Dialog mit Artem, eine einfache Klarstellung, dass er nach dem fragt, was Sie nicht wissen, aus meiner Sicht. Unwissenheit ist keine Schande und völlig normal.

 
Was mache ich jetzt falsch, ich beherrsche die iCustom-Funktion. Erstellen Sie den Code (nehmen Sie die oberste Zeile als Beispiel). Aber es werden immer noch 4 Zeichen ausgegeben. DoubleToString gibt 5 aus, aber Blödsinn, keine echten Daten.
double BUp = iCustom(NULL,0, "Bands",20,0,2,1,1);
Bitte um Hilfe, Hilfe im Code. Nicht im Drucker, schreiben Sie einfach die Daten aus dem Indikator Bands.ex4 in meine Indikatorvariable, zum Beispiel die obere Zeile. Vorzugsweise unter Verwendung von numerischen Werten, die nicht durch Variablen ersetzt werden.
 
Павел Козлов:
Nun, was mache ich jetzt falsch, beherrsche die iCustom-Funktion. Erstellen Sie den Code (nehmen Sie die oberste Zeile als Beispiel). Aber es werden immer noch 4 Zeichen ausgegeben. DoubleToString gibt 5 aus, aber das ist Blödsinn, keine echten Daten. Nicht im Drucker, schreiben Sie einfach die Daten aus dem Indikator Bands.ex4 in die Variable in meinem Indikator, zum Beispiel die obere Zeile. Es ist wünschenswert, numerische Werte zu verwenden und sie nicht durch Variablen zu ersetzen.

Der Code wird in OnInit() eingefügt, da OnTick() heute nicht funktioniert.


Hmmm: Ich habe es nicht genau gelesen. Diese Formulierung ist mir nicht aufgefallen.

Es ist wünschenswert, numerische Werte zu verwenden und sie nicht durch Variablen zu ersetzen.


Aber es kommt nicht darauf an, ob Sie eine Zahl oder eine Variable in die iCustom eingeben.

Dateien:
 
Павел Козлов:
Was mache ich jetzt falsch, ich beherrsche die iCustom-Funktion. Erstellen Sie den Code (nehmen Sie die oberste Zeile als Beispiel). Aber es werden immer noch 4 Zeichen ausgegeben. DoubleToString gibt 5 aus, aber das ist Blödsinn, keine echten Daten. Nicht im Drucker, schreiben Sie einfach die Daten aus dem Indikator Bands.ex4 in die Variable in meinem Indikator, zum Beispiel die obere Zeile. Verwenden Sie vorzugsweise numerische Werte und ersetzen Sie diese nicht durch Variablen.
Sie prüfen falsch. iCustom, iBands runden den Rückgabewert nicht.
   double   BUp = iCustom(NULL,0,"Bands",20,0,2.0,1,1);
   Print(DoubleToString(BUp,16));
 

Helfen Sie mir herauszufinden, warum der Indikator nicht gerendert wird. Ich möchte irgendwann so etwas wie ZigZag schaffen.

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property link      ""
#property version   "1.00"
#property strict
#property indicator_chart_window
//--------------------------------
#property indicator_buffers 1       // Количество буферов
#property indicator_color1 Blue     // Цвет линии 0 буфера
double Buf_0[];
double Max_B=0,
Min_B=10000;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   SetIndexBuffer(0,Buf_0);                  //Назначение массива буфера
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1); //стильлинии
   return(0);
  }
//------------------------------
int start()
  {
   int i;
   int n,
   step=10;
   int Counted_bars;
   double Max_A,
   Min_A;
   Counted_bars=IndicatorCounted();
   i=Bars-Counted_bars-1;
//--------------------------------------------------------------------------------------------------------------+
   while(i>=0) //цикл, который считает просчитывает значение на i-ом баре               
     {
      Max_A=High[i];                         //присвоили максимальное значение i-ого бара переменной Max_A            
      Min_A=Low[i];                          //присвоили минимальное значение i-ого бара переменной Min_A
      if(Max_A>Max_B)
         Max_B=Max_A;
      if(Min_A<Min_B)
         Min_B=Min_A;
      //------------------------------------------------------------------------------------------------------------- 
      if(i>=step)
        {
         for(n=0;n<step;n++) //цикл, который будет сравнивать значения баров на определённом интервале        
           {
            if(High[i+n]>Max_A)
              {
               Max_A=High[i+n];
              }
            else
              {
               if(High[i+n]<Min_A)
                  Min_A=High[i+n];
              }
           }
        }
      if(i<step)
        {
         for(n=step;n>0;n--) //цикл, который будет сравнивать значения баров на определённом интервале        
           {
            if(High[i-n]>Max_A)
              {
               Max_A=High[i-n];
              }
            else
              {
               if(High[i-n]<Min_A)
                  Min_A=High[i-n];
              }
           }
        }
      if(Max_A>Max_B)
        {
         Buf_0[i]=Max_A;
        }
      else
        {
         if(Min_A<Min_B)
            Buf_0[i]=Min_A;
        }
      i--;
     }
   return(0);
  }
//+------------------------------------------------------------------+