Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 467

 
Onestamente, non capisco come usare la libreria normalmente nel terminale senza capacità di ricerca e ordinamento... Scorrere stupidamente centinaia di righe?!!!
 
Alena000:
Ad essere onesti, non capisco come usare la libreria nel terminale senza cercare e ordinare affatto... Basta scorrere stupidamente centinaia di righe?!!!

La ricerca è integrata nel MetaEditor (in alto a destra). È possibile cercare le occorrenze per:

  • aprire documento
  • attraverso tutti i file
  • MQL4/MQL5.community
La ricerca è integrata nel terminale stesso (in alto a destra). Dal terminale, è possibile cercare l'intera comunità MQL5.community (Articoli, Prodotti, Biblioteca, Segnali, Forum, Blog, Documentazione).

 
qualcuno ha qualche idea sulla questione? ))
 
Maxim Dobrovolskii:
qualcuno ha qualche idea sulla questione? ))

Potrebbe aiutare.

File:
Fractal.mq4  4 kb
 
Victor Nikolaev:

Potrebbe aiutare.

Vorrei capire e scoprire perché la mia variante non funziona. Penso che si tratti della combinazione EA+indicatore, ma non è chiaro cosa esattamente sia sbagliato.
 
Maxim Dobrovolskii:
Vorrei capire e scoprire perché la mia variante non funziona. Mi sembra che sia un problema della combinazione EA+indicatore, ma cosa sia esattamente non lo so.
Forse il problema è che in OnTick() si legge solo il buffer zero, ma in OnDeinit() si leggono sia lo zero che il primo?
 
Maxim Dobrovolskii:
Grazie, ma voglio capire e scoprire perché la mia versione non funziona. Penso che sia a causa della combinazione Expert Advisor+indicatore.

Volete che vi dimostri che non c'è un gran problema.

Ho solo bisogno del codice dell'indicatore. Non mi piace copiare.

Forse cambierò qualcosa nel vostro indicatore (e so anche cosa).

 
Alexey Viktorov:
Forse il problema è che in OnTick() si legge solo il buffer zero e in OnDeinit() sia il buffer zero che il primo?
Il Deinit serve a mostrare che c'è un valore in uno dei buffer.
 
Victor Nikolaev:

Volete che vi dimostri che non c'è un gran problema.

Ho solo bisogno del codice dell'indicatore. Non mi piace copiare.

Forse cambierò qualcosa nel vostro indicatore (e so anche cosa).

//+------------------------------------------------------------------+
//|                                               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);
  }
//+------------------------------------------------------------------+


Il codice dell'indicatore.
 
Maxim Dobrovolskii:
Deinit è per mostrare che c'è un valore in un buffer.

C'è un valore sia nello zero che nel primo buffer. Su M15 abbiamo frattali sulle barre 5 e 21. Questo script

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

trova e stampa tutto correttamente. Corrispondentemente, l'Expert Advisor troverà iCustom() che funziona ugualmente nello script e nell'Expert Advisor.

Motivazione: