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

 

MQL5に書き直した。オブジェクトを使った作業は削除しました。

Ratio=1に設定した場合、チャート上にHi-Lowバーとして重なって表示されます。しかし、デバッグモードでは、なぜかそうなりません、

Ratioが2に設定されているように表示されます。

コードは正しいのでしょうか?

//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   1
//--- plot Histogram_2
#property indicator_label1  "Histogram_2"
#property indicator_type1   DRAW_HISTOGRAM2
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1

input int Ratio=1;
int limit;
int limitBars=0;

double H[];
double L[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   SetIndexBuffer(0,H,INDICATOR_DATA);
   SetIndexBuffer(1,L,INDICATOR_DATA);
   ArraySetAsSeries(H,true);
   ArraySetAsSeries(L,true);
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);

   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[])
  {
   double max[256];
   double min[256];

   if(limitBars<Bars(_Symbol,_Period))
      limit=CHART_FIRST_VISIBLE_BAR;

   for(int i=0; i<limit; i++)
     {
      for(int shift=0; shift<Ratio; shift++)
        {
         max[shift]=iHigh(Symbol(),Period(),i*Ratio+shift);
         min[shift]=iLow(Symbol(),Period(),i*Ratio+shift);
        }

      H[i]=max[ArrayMaximum(max,0,Ratio)];
      L[i]=min[ArrayMinimum(min,0,Ratio)];
     }

   if(limit>1)
     {
      max[0]=H[ArrayMaximum(H,0,limit)];
      min[0]=L[ArrayMinimum(L,0,limit)];
     

     }

   limitBars=Bars(_Symbol,_Period);
   limit=1;
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
スクリプトでパラメータ
rates_total
の値を取得する方法

インジケータを見れば一目瞭然です。しかし、スクリプトは?


#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()

  {
      Alert(rates_total());
    }
Discover new MetaTrader 5 opportunities with MQL5 community and services
Discover new MetaTrader 5 opportunities with MQL5 community and services
  • 2023.12.04
  • www.mql5.com
MQL5: language of trade strategies built-in the MetaTrader 5 Trading Platform, allows writing your own trading robots, technical indicators, scripts and libraries of functions
 
Novichokkk #:
スクリプトでパラメータ値を取得する方法

インジケーターを見れば一目瞭然です。しかし、スクリプトは?


https://www.mql5.com/ru/docs/series/bars

Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Bars - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

それは理解できる。ありがとうございます。

#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()

  {

   Alert(Bars(_Symbol,_Period));
   

  }
//+------------------------------------------------------------------+

他の方法があるのかと思っていました。

 
Novichokkk #:

それは理解できる。ありがとう

他の方法はないかと思っていました。

できます。SeriesInfoInteger().

Документация по MQL5: Доступ к таймсериям и индикаторам / SeriesInfoInteger
Документация по MQL5: Доступ к таймсериям и индикаторам / SeriesInfoInteger
  • www.mql5.com
SeriesInfoInteger - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

区分線形補間を実装する簡単な例はどこで見ることができますか?

例えば、配列x[]={0.1 , 0.8, 3.2, 7.9, 9.3} (5つの値)に対して、配列y[]={-3.2, 2.7, 1.1, -6.4, 20} (5つの値)に対応する値があります。

引数x1[]={0.1, 1, 2, 2.5, 5, 5.1, 6, 8, 9.3}(9個)の区分線形補間関数を介して、引数x1[]={0.1, 1, 2, 2.5, 5, 5.1, 6, 8, 9.3}(9個)の配列y[]9個の値から対応する値を得るにはどうすればよいでしょうか?

まず配列x[]で配列x1[]の値を探し、完全に一致すれば配列y[]/の値を配列y1[]に代入すると理解しています。

もし一致しなければ、配列x1[]の中から2つの値を探し、その間に配列x1の値を代入する。そして、配列y1[]に対して、配列y[]から数式で対応する値を計算する。

こうして必要な点数を求める。しかし、配列の各要素を 列挙して検索するのは不経済である。おそらくバイナリサーチを使うのだろう。

そこで、このような関数がどのように書かれ、どのように使われているのか、どこかで見てみたい。検索ではALGLIBへの言及しか見つかりませんでした。しかし、私はそれがどこから来て、どのように理解することができませんでした。

ALGLIBに私を送らないでください。

 
Novichokkk 配列の各要素を 列挙して検索するのは不経済である。おそらくバイナリサーチを使うのだろう。

そこで、そのような関数がどのように書かれ、どのように使われているのか、どこかで見てみたい。検索ではALGLIBへの言及しか見つからなかった。しかし、それがどこから来て、どのように使われるのかがわかりませんでした。

ALGLIBに私を送らないでください。

なぜそれぞれを検索するのか?xとx1が順番に並んでいる場合、2つのインデックスによって進行する。

 
JRandomTrader #:

なぜそれぞれを検索するのか?xとx1に順序がある場合、2つずつインデックスを進める。

ああ、それは思いつかなかった。だから例を求めたんだ。でも見つからなかった。正しいやり方が知りたいんだ。

 
MQL5のロボットをマーケットにアップロードする方法を教えてください。
 
Alisher Batiraliev #:
MQL5のロボットをマーケットにアップロードして販売したいのですが、どうすればよいですか?

マーケットで。右上に大きな緑のボタンがあります。


Форекс-маркет – Магазин торговых роботов, советников и технических индикаторов для MetaTrader 5
Форекс-маркет – Магазин торговых роботов, советников и технических индикаторов для MetaTrader 5
  • www.mql5.com
Официальная витрина приложений для торговли из терминала
理由: