Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1485

 

Eu o reescrevi para MQL5. Removi o trabalho com objetos dele.

Ao definir Ratio=1, ele aparece no gráfico como deveria ser, ou seja, é apenas sobreposto no gráfico como uma barra Hi-Low. Mas, no modo de depuração, isso não acontece por algum motivo,

ela é exibida como se o Ratio estivesse definido como 2, embora esteja definido como 1.

Está tudo correto no código?

//+------------------------------------------------------------------+
#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);
  }
//+------------------------------------------------------------------+
 
Como obter o valor do parâmetro
rates_total
por script

Isso está claro no indicador. Mas e o 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 #:
Como obter o valor do parâmetro por script

Isso está claro no indicador. Mas e o script?


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

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

Isso é compreensível, já fiz dessa forma antes. Obrigado

#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));
   

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

Eu estava me perguntando se havia outra maneira.

 
Novichokkk #:

Isso é compreensível, eu já fiz isso antes. Obrigado, senhor

Eu estava pensando se havia outra maneira.

É possível. SeriesInfoInteger().

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

Onde posso ver um exemplo simples de implementação de interpolação linear por partes?

Por exemplo, para a matriz x[]={0,1 , 0,8, 3,2, 7,9, 9,3} (5 valores), há valores correspondentes na matriz y[]={-3,2, 2,7, 1,1, -6,4, 20} (5 valores)

Como faço para obter os valores correspondentes da matriz y[]9 valores para o argumento x1[]={0.1, 1, 2, 2.5, 5, 5.1, 6, 8, 9.3} (9 valores) por meio da função de interpolação linear por partes para o argumento x1[]={0.1, 1, 2, 2.5, 5, 5.1, 6, 8, 9.3} (9 valores)?

Entendo que, para começar, na matriz x[] procuramos o valor da matriz x1[] e, se eles corresponderem exatamente, atribuímos o valor da matriz y[]/ à matriz y1[].

E, se não corresponderem, procuramos dois valores na matriz x1[], entre os quais está o valor da matriz x1. Em seguida, para a matriz y1[], calculamos o valor correspondente da matriz y[] por meio da fórmula.

E assim por diante para o número necessário de pontos. Mas a pesquisa enumerando cada elemento da matriz não é econômica. Provavelmente usaremos a pesquisa binária (li sobre os métodos de pesquisa).

Portanto, eu gostaria de ver em algum lugar como essa função é escrita e como é usada. Na pesquisa, encontrei apenas referências ao ALGLIB. Mas não consegui entender de onde ele vem e como.

Não me mande para o ALGLIB.

 
Novichokkk elemento da matriz não é econômica. Provavelmente usaremos a pesquisa binária (li sobre métodos de pesquisa).

Portanto, eu gostaria de ver em algum lugar como essa função é escrita e como é usada. Na pesquisa, encontrei apenas referências ao ALGLIB. Mas não consegui descobrir de onde ele vem e como.

Não me mande para o ALGLIB.

Por que procurar por cada um? Se x e x1 estão ordenados, nós os percorremos por dois índices.

 
JRandomTrader #:

Por que procurar por cada um? Se x e x1 estiverem ordenados, avançaremos por dois índices.

Sim, eu não pensei nisso. Foi por isso que pedi exemplos. Mas não consegui encontrar nenhum. Preciso da maneira correta de fazer isso.

 
Como posso fazer upload de um robô em MQL5 no Mercado para venda?
 
Alisher Batiraliev #:
Como posso carregar um robô em MQL5 no Mercado para venda, posso obter instruções?

No Mercado. Há um grande botão verde no canto superior direito...


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