Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 716
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Hola... ¿Qué quieres decir con que no puedes?
¿Qué es esto, entonces? Cinco minutos en el editor...
¡Es perfecto!
¿Un equipo?
...
start()
{
........
j=j+10;
PlotIndexSetInteger(0,PLOT_SHIFT,j);
........
¡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;)
¡Eso es genial!
¿Comando?
...
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);
}
//+------------------------------------------------------------------+
¿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 ;)
su código escrito arriba. ¿Verdad?
Lo añadí allí. SetIndexShift(). Y Artiom lo escribió con más detalle.
¡Por fin! Problema resuelto.
...
start()
{
........
j=j+10;
SetIndexShift(0,j);
Todo funciona en MT4.
¡¡¡MUCHAS GRACIAS!!!
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"?
¡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
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"?
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"?