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

 
Vladimir Karputov:

デバッギングでは、どのような場合にその条件が成立するのかを確認します。


Rates_total - prev_calculates は非常に効果的です。

  • もしこれが0に等しい場合、計算は現在のバーで1ティックずつ行われることを意味します。
  • これが1の場合、新しいバーが あることを意味し、2本のバーが計算されます - 前のバーと現在のバーです。
  • 1より大きい場合、履歴データの初回実行または変更を意味する
限界値を計算するのです。そして、リミットからゼロ以上までのループの中で、指標となるデータを計算する。そして、limit = rates_total - prev_calculates を計算する際に、limit が何に相当するかを自分で計算する。
 
Artyom Trishkin:

rates_total - prev_calculates は非常に効果的な構造です。

  • 0 の場合、現在のバーに対して tick で計算を行うことを意味する。
  • 1の場合、新しいバーが あることを意味し、前のバーと現在のバーの2本が計算されます。
  • 1より大きい場合、履歴データの初回実行または変更を意味する
限界値を計算するのです。そして、リミットからゼロ以上までのループの中で、指標となるデータを計算する。そして、limit = rates_total - prev_calculates を計算するときに、自分自身で上限を計算する。

コードを見てください。

そして、コメントをお願いします。

 
Vladimir Karputov:

コードを見てください。

そしてコメントする。

なぜ無礼講なのか?失礼なことは言ってませんよ。

引用したセリフとその状態がいつまで続くのかを答えました。

考えられる3つの条件と、その場合の対処法についての回答も加えました。

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

初心者からのFAQ MQL5 MT5 MetaTrader 5

アルチョム・トリシキン さん 2020.08.06 15:17

rates_total - prev_calculates は非常に効率的なアルゴリズムです。

  • 0 の場合は、現在のバーで tick 単位で計算することを意味します。
  • 1の場合、新しいバーが あることを意味し、前のバーと現在のバーの2本が計算されます。
  • 1より大きい場合、履歴データの初回実行または変更を意味する
限界値を計算するのです。そして、リミットからゼロ以上までのループの中で、指標となるデータを計算する。そして、リミット=rates_total - prev_calculatesを計算するときに、何がリミットなのかを計算する。

処理のために何かをする必要はありません。まさにこの計算が、3つの状態のそれぞれで必要な値からサイクルをスタートさせるのです。

 
Artyom Trishkin:

なぜ失礼になるのか?失礼なことは言ってませんよ。

引用したセリフとその条件が満たされるのは、どのような場合かを答えました。

そして、考えられる3つの状態と、その場合どうするかということまで考えて答えを完成させました。

自分で何も処理する必要はありません。この正確な計算により、3つの状態それぞれで目的の値からループが開始されます。

コードを持って、デバッグに臨む。次に、自分でできること - 今だけ最後まで持ってきて、少なくとも3つのエラーを説明します。

 
Vladimir Karputov:

コードを持って、デバッグに臨む。残りは自分でやってください。ただし、少なくとも3つの間違いについては、きちんと説明してください。

いや、時間がないんだ。私はあなたが引用した行にしか返信していません - そこにはエラーはありません。そしてここからは(私は目の端でちらっとコードを見たのですが)自分で考えてみてもらいましょう(エラーはありますし、表面上もあります)。

このフォーラムやそのサービスには、そのような構造の例がたくさんあります。

ヴィクトル・ニコラエフがいつも使っていて(怠け癖がなければ今も使っている)、昔教えてもらった。

Victor Nikolaev
Victor Nikolaev
  • www.mql5.com
Профиль трейдера
 
Artyom Trishkin:

いや、時間がないんです。私は、あなたが引用した行に返信しただけで、そこに間違いはありません。そしてさらに(私は目の端にあるコードをちらっと見て)彼に自分で解決するようにさせました(エラーがあり、それは表面上のものです)。

このフォーラムやそのサービスには、そのような構造の例がたくさんあります。

ヴィクトル・ニコラエフがずっと使っていて(怠け癖がなければ今も使っている)、昔教えてもらったんです。

携帯電話からではなく、パソコンからフォーラムを読んだ方が良いですよ。そして、お気に入りではなく、すべての投稿を読んでください。協力する気がないなら、一切会話に参加しないでください。

 
Сергей Таболин:


DRAW_COLOR_CANDLES に基づいて、ろうそくのサイズが設定より小さい場合、ろうそくは描画されない例を示します。

注:これは再設計されたインジケータ です - 元々は高値と安値でローソク足を描画していました。そして、まだティックはありません - DRAW_COLOR_CANDLESの動作例として、キャンドルサイズが設定より小さい場合 - キャンドルは描画されません。

//+------------------------------------------------------------------+
//|                                             High Low Candles.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 5
#property indicator_plots   1
//--- plot HLC_
#property indicator_label1  "High Low Candles"
#property indicator_type1   DRAW_COLOR_CANDLES
#property indicator_color1  clrLimeGreen,clrLavender
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- input parameters
input uint     InpMinSize     = 150;            // Candles: min size
//--- indicator buffers
double   OpenBuffer[];  // open
double   HighBuffer[];  // high
double   LowBuffer[];   // low
double   CloseBuffer[]; // close
double   Colors[];
//---
double   m_min_size           = 0.0;            // Candles: min size          -> double
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,OpenBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,HighBuffer,INDICATOR_DATA);
   SetIndexBuffer(2,LowBuffer,INDICATOR_DATA);
   SetIndexBuffer(3,CloseBuffer,INDICATOR_DATA);
   SetIndexBuffer(4,Colors,INDICATOR_COLOR_INDEX);
//--- an empty value
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);
//--- set the display of the symbol
   string symbol=Symbol();
   PlotIndexSetString(0,PLOT_LABEL,symbol+" Open;"+symbol+" High;"+symbol+" Low;"+symbol+" Close");
   IndicatorSetString(INDICATOR_SHORTNAME,"HLC ("+symbol+")");
//---
   m_min_size=InpMinSize*Point();
//---
   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[])
  {
//---
   int limit=prev_calculated-1;
   if(prev_calculated==0)
      limit=0;
   for(int i=limit; i<rates_total; i++)
     {
      HighBuffer[i]=high[i];
      LowBuffer[i]=low[i];
      if(open[i]<close[i])
        {
         if(close[i]-open[i]>m_min_size)
           {
            OpenBuffer[i]=low[i];
            CloseBuffer[i]=high[i];
            Colors[i]=1.0;
           }
         else
           {
            OpenBuffer[i]=0.0;
            HighBuffer[i]=0.0;
            LowBuffer[i]=0.0;
            CloseBuffer[i]=0.0;
            Colors[i]=0.0;
           }
        }
      else
        {
         if(open[i]-close[i]>m_min_size)
           {
            OpenBuffer[i]=high[i];
            CloseBuffer[i]=low[i];
            Colors[i]=0.0;
           }
         else
           {
            OpenBuffer[i]=0.0;
            HighBuffer[i]=0.0;
            LowBuffer[i]=0.0;
            CloseBuffer[i]=0.0;
            Colors[i]=0.0;
           }
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+


結果


ファイル:
 
Vladimir Karputov:

携帯電話からではなく、パソコンからフォーラムを読むとよいでしょう。そして、お気に入りではなく、すべての投稿を読んでください。協力する気がないなら、一切会話に参加しないでください。

病気か?:)


 

アルチョムとウラジミール、喧嘩するなよ、本当に喧嘩することなんかないんだから...。)))

さて、次はエラーです。このインジケーターを書き始めたのは、単純にこの記事 で読んだことをイメージするためです。そして、1ヶ月前にお風呂に通わされてから書き始めました。それは、自分なりの失敗を見つける時間があったからです。それが見つからなくて、ここに相談に来たんです。

どこが間違っているのか(コードの中で)教えてくださいと言ったんです。その理由は?

デバッガが使えない。どうしたらいいのかわからない。watchable」に変数が追加されない(かなり前にフォーラムに書いたのですが・・・)。

ヒッチの位置だけ教えてくれ?

Дискретизация ценового ряда, случайная составляющая и "шумы"
Дискретизация ценового ряда, случайная составляющая и "шумы"
  • www.mql5.com
Классический способ представления ценовых движений в виде временных отрезков возник на заре становления финансовых рынков, когда еще не было компьютеров и вся торговля шла на реальных рынках, реальными товарами. Хранить каждое изменение цены в течении дня было трудно, да и не имело смысла, цены менялись не так быстро. Поэтому представлялось...
 
Сергей Таболин:

ヒッチの位置だけ教えてくれ?

難点は、コードの整理にある。見てみたが、私の頭では理解できないような書き方をしている。何が問題なのか、どう説明したらいいのかわからない。

最初から順を追ってアドバイスするしかないですね。

  1. まずは、すべてのN個のキャンドルを選び出すことから始めてください。
  2. そして、どのロウソクを強調するかを選択する条件を設定します。
そして最後にデバッガの使い方を学びます。
理由: