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

 
Artyom Trishkin:

Hi ... O que quer dizer com "não pode"?

O que é isto, então? Cinco minutos no editor...

É perfeito!

Uma equipa?

int j;
...
start()
{
........
      j=j+10;
      PlotIndexSetInteger(0,PLOT_SHIFT,j);
........
não funciona((( //MT4, construir 1031
 
Renat Akhtyamov:

OBRIGADO!

Seja como for.

Deslocar a linha na janela indicadora para a direita, para além da barra zero, funciona na plataforma MT5.

O MT4 não tem essa característica, não funcionou, o que quer que eu tenha feito.

Também o MT5, tanto quanto sei, tem capacidade de modelação 3D, ao contrário do MT4.

Isto é tudo muito fixe!

Eu avariei.

Eu mudo para MT5!!! // E faço-o com urgência ;)

O que é impossível? Deslocar o tampão indicador para a direita? Sim, pode, mesmo para a direita ou para a esquerda ;) SetIndexShift().

Mas se decidiu mudar para o MT5, vá em frente;)

 
Renat Akhtyamov:

Isso é óptimo!

Comando?

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

Inverteu estupidamente os últimos dez valores do buffer de cálculo e saída com um deslocamento de 10 barras. Nem sequer pensou em qualquer optimização ou nada. Só para vos mostrar:

//+------------------------------------------------------------------+
//|                                                  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:

O que é que não é possível? Deslocar o tampão indicador para a direita? Sim, pode, para a direita ou para a esquerda ;)

Mas se decidiu mudar para o MT5, vá em frente ;)

Escrevi o meu código acima. Certo?
 
Renat Akhtyamov:
o seu código escrito acima. Certo?
Adicionei-o lá. SetIndexShift(). E Artem escreveu-o mais explicitamente.
 
Vitalie Postolache:
Adicionei-o lá. SetIndexShift(). E Artiom escreveu-o com mais detalhes.

Finalmente! problema resolvido.

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

Tudo funciona no MT4.

MUITO OBRIGADO!!!!

 
Olá !
A minha pergunta é a seguinte:
Existe um MACD na janela do indicador que tem algum valor "A" calculado sobre o preço actual. Qual seria a fórmula para calcular o valor do preço se o valor MACD actual se tornasse "-A" ?
 
Leo59:
Olá !
A minha pergunta é a seguinte:
Existe um MACD na janela do indicador que tem algum valor "A" calculado sobre o preço actual. Qual deve ser a fórmula que calcula o valor do preço se o valor MACD actual se tornar "-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, obrigado, claro, pela sua participação.... Mas, a questão era sobre outra coisa:
Existe um MACD na janela do indicador, que tem algum valor "A" calculado sobre o preço actual. Qual deve ser a fórmula para calcular o valor do preço se o valor MACD actual se tornar "-A" ?
 
Leo59:
Renat, obrigado, é claro, pela sua participação.... Mas, a questão era sobre outra coisa:
Existe um MACD na janela do indicador, que tem algum valor "A" calculado sobre o preço actual. Qual seria a fórmula para calcular o valor do preço se o valor MACD actual se tornasse "-A"?
Talvez valesse a pena mostrar a fórmula de cálculo se o valor "A" tiver um valor positivo, porque não é claro do que estamos a falar.