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

 
Ehrlich gesagt, verstehe ich nicht, wie man die Bibliothek normalerweise im Terminal ohne Such- und Sortierfunktionen verwenden kann... Einfach stupide durch hunderte von Zeilen scrollen?!!!
 
Alena000:
Um ehrlich zu sein, verstehe ich nicht, wie man die Bibliothek im Terminal ohne Suchen und Sortieren überhaupt nutzen kann... Einfach dumm durch hunderte von Zeilen scrollen?!!!

Die Suche ist in den MetaEditor integriert (obere rechte Ecke). Sie können nach Vorkommnissen suchen, indem Sie:

  • Dokument öffnen
  • durch alle Dateien
  • MQL4/MQL5.community
Die Suche ist im Terminal selbst integriert (obere rechte Ecke). Vom Terminal aus können Sie die gesamte MQL5.community durchsuchen (Artikel, Produkte, Bibliothek, Signale, Forum, Blogs, Dokumentation).

 
Hat jemand eine Meinung zu dieser Frage? ))
 
Maxim Dobrovolskii:
Hat jemand eine Meinung zu dieser Frage? ))

Könnte helfen.

Dateien:
Fractal.mq4  4 kb
 
Victor Nikolaev:

Könnte helfen.

Ich würde gerne verstehen und herausfinden, warum meine Variante nicht funktioniert. Ich denke, es geht um die Kombination EA+Indikator, aber was genau das Problem ist, ist nicht klar.
 
Maxim Dobrovolskii:
Ich würde gerne verstehen und herausfinden, warum meine Variante nicht funktioniert. Ich denke, es liegt an der Kombination aus Expert Advisor und Indikator, und ich weiß nicht, woran es genau liegt.
Vielleicht liegt es daran, dass Sie in OnTick() nur den Null-Puffer lesen, aber in OnDeinit() sowohl Null als auch den ersten Puffer?
 
Maxim Dobrovolskii:
Ich danke Ihnen, aber ich möchte verstehen und herausfinden, warum meine Version nicht funktioniert. Ich denke, es liegt an der Kombination aus Expert Advisor und Indikator.

Wollen Sie, dass ich beweise, dass es kein großes Problem gibt?

Ich brauche nur den Code des Indikators. Ich möchte es nicht kopieren.

Vielleicht ändere ich etwas an Ihrem Indikator (und ich weiß sogar, was).

 
Alexey Viktorov:
Vielleicht liegt das Problem darin, dass Sie in OnTick() nur den Nullpuffer lesen und in OnDeinit() sowohl den Null- als auch den ersten Puffer?
Das Deinit soll zeigen, dass sich ein Wert in einem der Puffer befindet.
 
Victor Nikolaev:

Wollen Sie, dass ich beweise, dass es kein großes Problem gibt?

Ich brauche nur den Code des Indikators. Ich möchte es nicht kopieren.

Vielleicht ändere ich etwas an Ihrem Indikator (und ich weiß sogar, was).

//+------------------------------------------------------------------+
//|                                               modify_Fractal.mq4 |
//|          MoneyRobotics Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "MoneyRobotics Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2
#property  indicator_label1  "Up"
#property  indicator_label2  "Down"
#property  indicator_type1   DRAW_ARROW
#property  indicator_type2   DRAW_ARROW
#property  indicator_style1  STYLE_SOLID
#property  indicator_style2  STYLE_SOLID
#property  indicator_width1  1
#property  indicator_width2  1
#property  indicator_color1 Red
#property  indicator_color2 Blue


//--- indicator buffers

double ExtUpFractalsBuffer[];
double ExtDownFractalsBuffer[];

//+-----------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//---- indicator buffers mapping  
    SetIndexBuffer(0,ExtUpFractalsBuffer);
    SetIndexBuffer(1,ExtDownFractalsBuffer);  
//---- drawing settings
    SetIndexStyle(0,DRAW_ARROW);
    SetIndexArrow(0,217);
    SetIndexStyle(1,DRAW_ARROW);
    SetIndexArrow(1,218);
//----
    SetIndexEmptyValue(0,0.0);
    SetIndexEmptyValue(1,0.0);
//---- name for DataWindow
    SetIndexLabel(0,"Modify_Fractal Up");
    SetIndexLabel(1,"Modify_Fractal Down");
//---- initialization done  
   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, nCountedBars;
   double dCurrent;
   nCountedBars=IndicatorCounted();
//---- last counted bar will be recounted    
   
   if(nCountedBars<=8) i=Bars-nCountedBars-4;
   if(nCountedBars>8)
     {
      nCountedBars--;
      i=Bars-nCountedBars-4;
     }
//----Up and Down Fractals
   while ( i >= 4 )
     {
      //----Fractals up bFound=false;
      dCurrent=High[i];
      if(dCurrent>High[i+1] && dCurrent>High[i+2] && dCurrent>High[i+3] &&
         dCurrent>High[i-1] && dCurrent>High[i-2] && dCurrent>High[i-3] && 
         dCurrent>High[i-4] )
        {
         ExtUpFractalsBuffer[i]=NormalizeDouble(dCurrent + 1* Point,Digits);
        }
                           
      //----Fractals down
      dCurrent=Low[i];
      if(dCurrent<Low[i+1] && dCurrent<Low[i+2] && dCurrent<Low[i+3] && 
         dCurrent<Low[i-1] && dCurrent<Low[i-2] && dCurrent<Low[i-3] && 
         dCurrent<Low[i-4])
        {
         ExtDownFractalsBuffer[i]=NormalizeDouble(dCurrent - 1* Point,Digits);
        }
      i--;
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+


Der Code des Indikators.
 
Maxim Dobrovolskii:
Deinit soll zeigen, dass es einen Wert in einem Puffer gibt.

Sowohl im Null- als auch im ersten Puffer ist ein Wert vorhanden. Auf M15 haben wir jetzt Fraktale auf 5 und 21 Balken. Dieses Skript

/********************Script program start function*******************/
void OnStart()
{
Print("******************", iCustom(_Symbol, PERIOD_CURRENT, "modify_Fractal", 1, 5));
Print("******************", iCustom(_Symbol, PERIOD_CURRENT, "modify_Fractal", 0, 21));
}/*******************************************************************/

findet und druckt alles richtig. Dementsprechend findet der Expert Advisor iCustom() sowohl im Skript als auch im Expert Advisor.