Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1485

 

L'ho riscritto in MQL5. Ho rimosso il lavoro con gli oggetti.

Impostando Ratio=1, il grafico appare come dovrebbe essere, cioè è semplicemente sovrapposto al grafico come una barra Hi-Low. Ma in modalità debug non è così per qualche motivo,

viene visualizzato come se Ratio fosse impostato su 2, mentre è impostato su 1.

È tutto corretto nel codice?

//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   1
//--- plot Histogram_2
#property indicator_label1  "Histogram_2"
#property indicator_type1   DRAW_HISTOGRAM2
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1

input int Ratio=1;
int limit;
int limitBars=0;

double H[];
double L[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   SetIndexBuffer(0,H,INDICATOR_DATA);
   SetIndexBuffer(1,L,INDICATOR_DATA);
   ArraySetAsSeries(H,true);
   ArraySetAsSeries(L,true);
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);

   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[])
  {
   double max[256];
   double min[256];

   if(limitBars<Bars(_Symbol,_Period))
      limit=CHART_FIRST_VISIBLE_BAR;

   for(int i=0; i<limit; i++)
     {
      for(int shift=0; shift<Ratio; shift++)
        {
         max[shift]=iHigh(Symbol(),Period(),i*Ratio+shift);
         min[shift]=iLow(Symbol(),Period(),i*Ratio+shift);
        }

      H[i]=max[ArrayMaximum(max,0,Ratio)];
      L[i]=min[ArrayMinimum(min,0,Ratio)];
     }

   if(limit>1)
     {
      max[0]=H[ArrayMaximum(H,0,limit)];
      min[0]=L[ArrayMinimum(L,0,limit)];
     

     }

   limitBars=Bars(_Symbol,_Period);
   limit=1;
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
Come ottenere il valore del parametro
rates_total
tramite script

È chiaro nell'indicatore. Ma lo script?


#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()

  {
      Alert(rates_total());
    }
Discover new MetaTrader 5 opportunities with MQL5 community and services
Discover new MetaTrader 5 opportunities with MQL5 community and services
  • 2023.12.04
  • www.mql5.com
MQL5: language of trade strategies built-in the MetaTrader 5 Trading Platform, allows writing your own trading robots, technical indicators, scripts and libraries of functions
 
Novichokkk #:
Come ottenere il valore del parametro tramite script

L'indicatore è chiaro. Ma lo script?


https://www.mql5.com/ru/docs/series/bars

Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Bars - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

È comprensibile, l'ho già fatto in questo modo. Grazie

#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()

  {

   Alert(Bars(_Symbol,_Period));
   

  }
//+------------------------------------------------------------------+

Mi chiedevo se ci fosse un altro modo.

 
Novichokkk #:

È comprensibile, l'ho già fatto in passato. Grazie

Mi chiedevo se ci fosse un altro modo.

È possibile. SerieInfoInteger().

Документация по MQL5: Доступ к таймсериям и индикаторам / SeriesInfoInteger
Документация по MQL5: Доступ к таймсериям и индикаторам / SeriesInfoInteger
  • www.mql5.com
SeriesInfoInteger - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Dove si può vedere un semplice esempio di implementazione dell'interpolazione lineare a più livelli?

Ad esempio, per l'array x[]={0.1 , 0.8, 3.2, 7.9, 9.3} (5 valori) ci sono valori corrispondenti nell'array y[]={-3.2, 2.7, 1.1, -6.4, 20} (5 valori).

Come posso ottenere i valori corrispondenti dall'array y[]9 valori per l'argomento x1[]={0.1, 1, 2, 2.5, 5, 5.1, 6, 8, 9.3} (9 valori) tramite la funzione di interpolazione lineare a ripartizione per l'argomento x1[]={0.1, 1, 2, 2.5, 5, 5.1, 6, 8, 9.3} (9 valori)?

Ho capito che per cominciare, nell'array x[] cerchiamo il valore dell'array x1[] e se corrispondono esattamente, assegniamo il valore dell'array y[]/ all'array y1[].

Se non corrispondono, cerchiamo 2 valori nell'array x1[], tra i quali si trova il valore dell'array x1. Quindi, per l'array y1[], calcoliamo il valore corrispondente dall'array y[] mediante la formula.

E così via per il numero di punti richiesto. Ma la ricerca enumerando ogni elemento dell'array non è economica. Probabilmente si usa la ricerca binaria (ho letto dei metodi di ricerca).

Vorrei quindi vedere da qualche parte come viene scritta una funzione di questo tipo e come viene utilizzata. Nella ricerca ho trovato solo riferimenti ad ALGLIB. Ma non sono riuscito a capire da dove viene e come.

Non mandatemi da ALGLIB.

 
Novichokkk elemento dell'array non è economica. Probabilmente si può usare la ricerca binaria (ho letto dei metodi di ricerca).

Vorrei quindi vedere da qualche parte come viene scritta una funzione di questo tipo e come viene utilizzata. Nella ricerca ho trovato solo riferimenti ad ALGLIB. Ma non sono riuscito a capire da dove viene e come.

Non mandatemi da ALGLIB.

Perché cercare ognuno di essi? Se x e x1 sono ordinati, si procede per due indici.

 
JRandomTrader #:

Perché cercare ciascuno di essi? Se x e x1 sono ordinati, avanziamo di due indici.

Sì, non ci avevo pensato. Per questo ho chiesto degli esempi. Ma non ne ho trovati. Mi serve il modo giusto per farlo.

 
Come posso caricare un robot in MQL5 nel Market per la vendita, posso avere istruzioni?
 
Alisher Batiraliev #:
Come posso caricare un robot in MQL5 nel Mercato per la vendita, posso ricevere istruzioni?

Nel Mercato. C'è un grande pulsante verde in alto a destra...


Форекс-маркет – Магазин торговых роботов, советников и технических индикаторов для MetaTrader 5
Форекс-маркет – Магазин торговых роботов, советников и технических индикаторов для MetaTrader 5
  • www.mql5.com
Официальная витрина приложений для торговли из терминала