Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 716

 
Artyom Trishkin:

Hola... ¿Qué quieres decir con que no puedes?

¿Qué es esto, entonces? Cinco minutos en el editor...

¡Es perfecto!

¿Un equipo?

int j;
...
start()
{
........
      j=j+10;
      PlotIndexSetInteger(0,PLOT_SHIFT,j);
........
no funciona((( //MT4, build 1031
 
Renat Akhtyamov:

¡GRACIAS!

En fin.

Desplazar la línea en la ventana del indicador hacia la derecha, más allá de la barra cero, sí funciona en la plataforma MT5.

MT4 no tiene esa característica, no funcionó, haga lo que haga.

También MT5, por lo que sé, tiene capacidad de modelado en 3D, a diferencia de MT4.

Todo esto está muy bien.

Me he derrumbado.

¡¡¡Me cambio a MT5!!! // Y lo hago con urgencia ;)

¿Qué es imposible? ¿Desplazar el búfer del indicador hacia la derecha? Sí, se puede, incluso a la derecha o a la izquierda ;) SetIndexShift().

Pero si has decidido cambiar a MT5, adelante;)

 
Renat Akhtyamov:

¡Eso es genial!

¿Comando?

int j;
...
start()
{
........
      j=j+10;
      PlotIndexSetInteger(0,PLOT_SHIFT,j);
........

Estúpidamente se han invertido los últimos diez valores del buffer de cálculo y se ha salido con un desplazamiento de 10 barras. Ni siquiera pensé en ninguna optimización ni nada. Sólo para mostrarte:

//+------------------------------------------------------------------+
//|                                                  iCheckShift.mq4 |
//|              Copyright 2017, Artem A. Trishkin, Skype artmedia70 |
//|                       https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Artem A. Trishkin, Skype artmedia70"
#property link      "https://login.mql5.com/ru/users/artmedia70"
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots   2
//--- plot BufferCurrent
#property indicator_label1  "BufferCurrent"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- plot BufferFuture
#property indicator_label2  "BufferFuture"
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrDodgerBlue
#property indicator_style2  STYLE_SOLID
#property indicator_width2  2
//--- input parameters
input int      Shift=10;   // Смещение в будущее (баров)
//--- indicator buffers
double         BufferCurrent[];
double         BufferFuture[];
double         BufferCalculate[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   IndicatorBuffers(3);
   SetIndexBuffer(0,BufferCurrent,INDICATOR_DATA);
   SetIndexBuffer(1,BufferFuture,INDICATOR_DATA);
   SetIndexBuffer(2,BufferCalculate,INDICATOR_CALCULATIONS);
   SetIndexShift(1,Shift);
//---
   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[])
  {
//---
   if(rates_total<1) return(0);
   ArraySetAsSeries(BufferCalculate,true);
   ArraySetAsSeries(BufferCurrent,true);
   ArraySetAsSeries(BufferFuture,true);
   int limit=rates_total-prev_calculated;
   if(limit>1) {
      limit=rates_total-1;
      ArrayInitialize(BufferCalculate,EMPTY_VALUE);
      ArrayInitialize(BufferCurrent,EMPTY_VALUE);
      ArrayInitialize(BufferFuture,EMPTY_VALUE);
      }
   for(int i=limit; i>=0; i--) {
      BufferCurrent[i]=(high[i]+low[i])/2.0;
      if(i<Shift) BufferCalculate[i]=(high[i]+low[i]+open[i]+close[i])/4.0;
      }
   for(int i=0; i<Shift; i++) {
      BufferFuture[Shift-i]=BufferCalculate[i];
      }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
Vitalie Postolache:

¿Qué no es posible? ¿Desplazar el búfer del indicador hacia la derecha? Sí, se puede, a la derecha o a la izquierda ;)

Pero si has decidido cambiar a MT5, adelante ;)

He escrito mi código arriba. ¿Verdad?
 
Renat Akhtyamov:
su código escrito arriba. ¿Verdad?
Lo añadí allí. SetIndexShift(). Y Artem lo escribió más explícitamente.
 
Vitalie Postolache:
Lo añadí allí. SetIndexShift(). Y Artiom lo escribió con más detalle.

¡Por fin! Problema resuelto.

int j=0;
...
start()
{
........
      j=j+10;
      SetIndexShift(0,j);

Todo funciona en MT4.

¡¡¡MUCHAS GRACIAS!!!

 
¡Hola !
Mi pregunta es la siguiente:
Hay un MACD en la ventana del indicador que tiene algún valor "A" calculado sobre el precio actual. ¿Cuál sería la fórmula para calcular el valor del precio si el valor actual del MACD se convirtiera en "-A"?
 
Leo59:
¡Hola !
Mi pregunta es la siguiente:
Hay un MACD en la ventana del indicador que tiene algún valor "A" calculado sobre el precio actual. ¿Cuál debería ser la fórmula que calcula el valor del precio si el valor actual del MACD se convierte en "-A"?
https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D0%B4%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80_MACD
Индикатор MACD — Википедия
Индикатор MACD — Википедия
  • ru.wikipedia.org
Индикатор используют для проверки силы и направления тренда, а также определения разворотных точек. Строится на основе скользящих средних. Существует две модификации индикатора MACD: линейный MACD и MACD-гистограмма. Для расчёта линейного MACD из скользящей средней цены (обычно берётся экспоненциальная скользящая средняя с меньшим периодом...
 
Renat, gracias por supuesto por tu participación.... Pero, la pregunta era sobre otra cosa:
Hay un MACD en la ventana del indicador, que tiene algún valor "A" calculado sobre el precio actual. ¿Cuál debería ser la fórmula para calcular el valor del precio si el valor actual del MACD se convierte en "-A"?
 
Leo59:
Renat, gracias, por supuesto, por tu participación.... Pero, la pregunta era sobre otra cosa:
Hay un MACD en la ventana del indicador, que tiene algún valor "A" calculado sobre el precio actual. ¿Cuál sería la fórmula para calcular el valor del precio si el valor actual del MACD se convirtiera en "-A"?
Quizás, valdría la pena mostrar la fórmula que calcula si el valor "A" tiene un valor positivo, porque no está claro de qué estamos hablando.
Razón de la queja: