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

 
LookingFor:
   for(bars=start; bars<rates_total; bars++)



同僚、助けてください

ループの何が問題なのか理解できません。Handleからのデータは配列psa1には入りません。


OnInit()では、以下のようにします。

  ArraySetAsSeries(pca1,true);

の後、ループを適宜変更してください。

   for(bars=start; bars<rates_total; bars++)

今、あなたのインジケーターの一番右のバーがインデックス "0 "であることを考えます。

 

任意のキーまたは特定のキーを押して、スクリプトを終了させるには?

 
ウラジミールさん、ありがとうございます。インデックスを変更 せずにできることはないのでしょうか?
 
LookingFor:
ウラジミールさん、ありがとうございます。インデックスを変更 せずに何かできないのでしょうか?

何もしたくないのであれば、過去のデータでデバッグしてテストを始めましょう。ステップ・バイ・ステップバーがコピーされたWHEREのデータをご覧ください。

 
LookingFor:

同僚、助けてください

ループの何が問題なのか理解できません。Handleからのデータは配列psa1には入りません。


LookingFor:
ウラジミール、ありがとう。でも インデックスを変更 しないと何もできないの?

まず、人間が読めるコードにする必要があります(Styler - ソースコードを扱う - プログラム開発 - MetaEditor)

//+------------------------------------------------------------------+ 
//| 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(prev_calculated==0)
     {
      i=bars=start=1;
     }
   else
     {
      start=prev_calculated;
     }
   for(bars=start; bars<rates_total; bars++)
     {
      CopyBuffer(pulse_Handle,0,start,1,pca1);

      if(pca1[bars]!=pca1[bars-1])
        {
         pca2[i]=pca1[bars]; i++;
         string s="";
         s=IntegerToString(pca1[bars])+"  ";
         Print(s); continue;
        }
      else
         continue;
     }
//--- return value of prev_calculated for next call 
   return(rates_total);
  }

CopyBuffer関数から何が返されたかを確認する必要があります。CopyBufferを 参照してください。

戻り値

コピーされた配列の要素数,あるいはエラーの場合は -1.

さらに、ブレークポイントを設定し、過去のデータでデバッグを実行します。

過去データのデバッグを実行する

といくつかの変数を制御します。

time[rates_total-1]
time[0]
bars
pca1[???]

デフ

Стилизатор - Работа с исходным кодом - Разработка программ - Справка по MetaEditor
Стилизатор - Работа с исходным кодом - Разработка программ - Справка по MetaEditor
  • www.metatrader5.com
Данная функция предназначена для оформления исходного кода в соответствии с рекомендуемым стандартом. Это позволяет сделать код более читаемым...
 

Aに変換するのに役立つ

double GetExtremumZZPrice(string symb="0",ENUM_TIMEFRAMES tf=0,int ne=0,int dp=12,int dv=5,int bs=3) {
 if(symb=="0") symb=Symbol();
  double zz;
  int ke=0;
   for(int i=0; i<Bars(symb, tf)-1; i++) {
    zz=iCustom(symb, tf, "ZigZag", dp, dv, bs, 0, i);
    if(zz!=0) {
      ke++;
      if(ke>ne) return(zz);
  }}
  return(0);
 }
 
Vitaly Muzichenko:

Aに変換するのに役立つ

インジケータ・バッファを読み込み、得られた配列の中から zz を探します。

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

Aに変換するのに役立つ

まずはインジケーターハンドルを手に入れる!次にCopyBufferを使って 目的の値の配列を取得し、それをループさせます。
 

皆さん、ありがとうございました。

もう一つの質問ですが、フォーラムやkodobaseに目を通しましたが、「Trend.mqh」のアプリケーションが見つかりません、全てあるようですが。アプリケーションのリンクがあれば、ここに送るか、コードによる例を教えてください。

Rsi、Ma、Adhなどを使ったEAはたくさん ありますが、SBを使っているものはありませんでした。それは本当にそんなに悪いですか、私はコードを発見していない、誰がそれを使用する?


必要なもの:コードがあり、その中で私はいくつかの時間枠からMAを取得します。

_ma1 = iMA(Symbol,PERIOD_M15,MAFast,0,MAMethod,MAPrice,i)
_ma2 = iMA(Symbol,PERIOD_M30,MAFast,0,MAMethod,MAPrice,i)
_ma3 = iMA(Symbol,PERIOD_H1, MAFast,0,MAMethod,MAPrice,i)

OnInitでmql5に数十のハンドルを作成するのではなく、うまくいけばSBが私の問題を解決してくれるでしょう。

 
Vitaly Muzichenko:

皆さん、ありがとうございました。

もう一つの質問ですが、フォーラムやkodobaseに目を通しましたが、「Trend.mqh」のアプリケーションが見つかりません、全てあるようですが。アプリケーションのリンクがあれば、ここに送るか、コードによる例を教えてください。

Rsi、Ma、Adhなどを使ったEAはたくさんありますが、SBを使っているものはありませんでした。そんなに悪いのか、それともコードを発見していないのか、誰が使っているのか?


必要なもの:コードがあり、その中で私はいくつかの時間枠からMAを取得します。

mql5のOnInitで数十個のハンドルを作成するのではなく、SBが私の問題を解決してくれることを願っています。


Trend.mqh::CiMA」クラスのハンドルまたはオブジェクトを すべて作成する必要があります。

理由: