Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 716

 
Artyom Trishkin:

Ciao ... Cosa vuol dire che non puoi?

Cos'è questo, allora? Cinque minuti nell'editor...

È perfetto!

Una squadra?

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

GRAZIE!

Comunque.

Spostando la linea nella finestra dell'indicatore a destra, oltre la barra zero, funziona sulla piattaforma MT5.

MT4 non ha questa funzione, non ha funzionato, qualunque cosa abbia fatto.

Anche MT5, per quanto ne so, ha una capacità di modellazione 3D a differenza di MT4.

Tutto questo è molto bello!

Sono crollato.

Passo a MT5!!! // E lo faccio con urgenza ;)

Cosa è impossibile? Spostare il buffer dell'indicatore a destra? Sì, è possibile, anche a destra o a sinistra ;) SetIndexShift().

Ma se hai deciso di passare a MT5, vai avanti;)

 
Renat Akhtyamov:

È fantastico!

Comando?

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

Stupidamente invertito gli ultimi dieci valori del buffer di calcolo e uscita con uno spostamento di 10 barre. Non ha nemmeno pensato a nessuna ottimizzazione o altro. Solo per mostrarvelo:

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

Cosa non è possibile? Spostare il buffer dell'indicatore a destra? Sì, puoi, a destra o a sinistra ;)

Ma se hai deciso di passare a MT5, vai avanti ;)

Ho scritto il mio codice qui sopra. Giusto?
 
Renat Akhtyamov:
il tuo codice scritto sopra. Giusto?
L'ho aggiunto lì: SetIndexShift(). E Artem l'ha scritto in modo più esplicito.
 
Vitalie Postolache:
L'ho aggiunto lì. SetIndexShift(). E Artiom l'ha scritto in modo più dettagliato.

Finalmente! Problema risolto.

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

Tutto funziona su MT4.

GRAZIE MILLE!!!

 
Ciao!
La mia domanda è questa:
C'è un MACD nella finestra dell'indicatore che ha un valore "A" calcolato sul prezzo corrente. Quale sarebbe la formula per calcolare il valore del prezzo se il valore attuale del MACD diventasse "-A"?
 
Leo59:
Ciao!
La mia domanda è questa:
C'è un MACD nella finestra dell'indicatore che ha un valore "A" calcolato sul prezzo corrente. Quale dovrebbe essere la formula che calcola il valore del prezzo se il valore attuale del MACD diventa "-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, grazie naturalmente per la tua partecipazione.... Ma la domanda riguardava qualcos'altro:
C'è un MACD nella finestra dell'indicatore, che ha un valore "A" calcolato sul prezzo corrente. Quale dovrebbe essere la formula per calcolare il valore del prezzo se il valore attuale del MACD è diventato "-A"?
 
Leo59:
Renat, grazie, naturalmente, per la tua partecipazione.... Ma la domanda riguardava qualcos'altro:
C'è un MACD nella finestra dell'indicatore, che ha un valore "A" calcolato sul prezzo corrente. Quale sarebbe la formula per calcolare il valore del prezzo se il valore attuale del MACD diventasse "-A"?
Forse varrebbe la pena mostrare la formula che calcola se il valore "A" ha un valore positivo, perché non è chiaro di cosa stiamo parlando.
Motivazione: