初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 716

 
Artyom Trishkin:

ハイ ...できないってどういうこと?

これは何なんだ?エディターで5分...

完璧です!

チーム?

int j;
...
start()
{
........
      j=j+10;
      PlotIndexSetInteger(0,PLOT_SHIFT,j);
........
は動作しません(( //MT4, build 1031
 
Renat Akhtyamov:

ありがとうございました。

とにかく

インジケーターウィンドウのラインをゼロバーを超えて右にずらすと、MT5プラットフォームで動作します。

MT4にはその機能はありません、何をやってもダメでした。

また、私の知る限り、MT5はMT4と違って3Dモデリング機能を備えています。

これ、全部カッコいいんですよ!

私は心が折れました。

MT5に乗り換えました!!!// そして、私はそれを緊急に行う;)

不可能とは何か?インジケーターバッファを右にずらす?はい、右でも左でもOKです ;)SetIndexShift()。

でも、MT5に乗り換えることにしたのなら、どうぞ;)

 
Renat Akhtyamov:

すごいですねぇ。

コマンド?

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

計算バッファの最後の10個の値をバカバカ反転させ、10小節分ずらして出力した。最適化とか考えなかったんだ。見せるだけでいい。

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

不可能なこととは?インジケーターバッファを右にずらす?はい、右でも左でもOKです ;)

しかし、MT5に乗り換えることを決めたのであれば、どうぞ;)

上に私のコードを書きました。そうだろ?
 
Renat Akhtyamov:
を実行します。そうだろ?
そこで追加したのが SetIndexShift() です。 そして Artem はより明確にそれを書きました。
 
Vitalie Postolache:
そこで追加したのが SetIndexShift()です。 そして、Artiomさんがより詳しく書いてくれています。

やっとこさ、問題解決。

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

MT4で全て動作します。

ありがとうございました!!!

 
こんにちは。
私が質問したいのは、これです。
インジケーターウィンドウにMACDがあり、現在の価格に対して 何らかの「A」値が計算されています。現在のMACDの値が"-A "になった場合の価格計算式は?
 
Leo59:
こんにちは。
私が質問したいのは、これです。
インジケーターウィンドウにMACDがあり、現在の価格に対して 何らかの「A」値が計算されています。現在のMACDの値が"-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さん、もちろんご参加ありがとうございます...。しかし、その質問は別のことだった。
インジケーターウィンドウにMACDがあり、現在の価格から 計算されたある「A」の値を持っています。現在のMACDの値が"-A "になった場合の価格計算式はどのようになりますか?
 
Leo59:
Renatさん、もちろん、ご参加ありがとうございました...。しかし、その質問は別のことだった。
インジケーターウィンドウにMACDがあり、現在の価格から 計算されたある「A」の値を持っています。現在のMACDの値が"-A "になった場合の価格値の計算式は?
おそらく、ある「A」値が正の値を持つ場合の計算式を示す価値があると思います - 何を言っているのか明確ではありません。
理由: