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

 
barabashkakvn:

計算コードの変更

まで

13や12などの数字です。これが「Period」パラメータになるはずです。平均化期間

万歳!

ありがとうございます、うまくいきました。なぜこのパラメータがオリジナルのインジケータにないのですか?デフォルトでプリセットされているのですが、ご存知でしょうか?

つまり、平均化するバーの数だけを 設定し、他は何も設定しないのです。実際、これはソースの唯一のパラメータであり、数式で使用されています。

前バージョンでは、2つのパラメータを持っています。平均化のためのバーの数、SmoothFactorの計算のためのバーの数。

 
Alvin1976:

万歳!

ありがとうございます。しかし、なぜこのパラメータが元のインジケータにないのでしょうか?デフォルトで規定されているのかどうか、ご存知でしょうか?

つまり、平均化のためのバーの数 だけを設定して、それでおしまいです。実際、ソースコードでは、このパラメータだけが数式で使用されています。

前バージョンでは、2つのパラメータを持っています。平均化のためのバーの数、SmoothFactorの計算のためのバーの数。

すべてセットでご利用いただけます。See indicator code "***MQL5↵Indicators↵Examples↵Custom Moving Average.mq5"
 
barabashkakvn:
全てはデリバリーで。See indicator code "***MQL5↵Indicators↵Examples↵Custom Moving Average.mq5".

そこからすべてを得たのです :-) 私が理解していないだけなのでしょうが......。

それでも、なぜか計算されたEMAの値は元の値と一致しません。

もしかしたら、このインジケータを関数に変換したものがどこかにあるのでは?

 
Alvin1976:

そこからすべてを得たのです :-) 私が理解していないだけなのでしょうが......。

ハンドルとして使用したいのですが、なぜか計算されたEMAの値が元の値と一致しません。

もしかしたら、このインジケータを関数に変換したものがどこかにあるのでは?

あるいは、EAのOnInit()で、異なるタイプのスムージングを行うiMA 指標の2つのハンドルを作成し、これらの指標の値だけを取得する方が良いのかもしれませんね。

 
barabashkakvn:

あるいは、OnInit()でスムージングの種類が異なるiMA 指標のハンドルを2つ作成し、これらの指標の値だけを取得する方が良いのでしょうか?

すでに試しました。MQL5は、ハンドルによってナンセンスなものを生み出します。例えば、こんな感じです。

最初のバーの出力では、すでにバーが形成されているにもかかわらず、可変値が得られます。MQL4ではすべてうまくいくのですが、ここでは混乱が起きています。

     MAvarage1[ns] = INVALID_HANDLE;                        //-----------------------------------
   for (int i=0;i<10;i++) //10 попыток создать индикатор
      {
       MAvarage1[ns]=iMA(Symbols[ns],DopTF2,MAper1[ns],0,MAmet2,PRICE_CLOSE);
       if (MAvarage1[ns] == INVALID_HANDLE) Sleep(1000);
      }
              //Проверим handle 
   if (MAvarage1[ns] == INVALID_HANDLE) 
   {
    Print("Ошибка при создании MAvarage1! (№", GetLastError(), ")");
    return;
   } 

  Recount=false;
  if (CopyBuffer(MAvarage1[ns],0,0,2,MA1)<1) Recount=true;
  if (Recount){
  Print("Ошибка при копировании из индикатора ! (№", GetLastError(), ")");
  return;   
  }
  Print("MA1[1]=",MA1[1]);
 
Alvin1976:

もう試しましたよ。MQL5は、ハンドルによってナンセンスなものを生み出します。例えば、こんな感じです。

このように、すでにバーが形成されているにもかかわらず、最初のバーが変数値を出力しているのですMQL4ではすべてうまくいくのですが、ここではひどい状態です。

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

初心者の方からの質問

ハンドレステックをトレードで使おうとしたことは ない。使うには早すぎる。

あるいは、EAのOnInit()で スムージングの種類が異なる2つの iMA インジケータハンドルを作成 し、これらのインジケータの値だけを取得する方が良いのでは?


 

MQL5へのコード移行の際には、すでにいろいろと苦労しています。ほとんどの場合、問題はインジケーターにあります。ストキャスティクスが何やら「左巻き」の値になっている。

自分で値を計算することにしました。

MQL5は、最適化速度と多通貨モードのチェックのためだけに必要です。以上です。

それ以外の用途には使えません。この「不思議」を使うディーリングセンターがないことを祈ります。

変数の値がわかった!CopyBufferは インデックスの順序を逆転させることが判明!?

なぜ、そんなことをするのだろう?

 

Alvin1976:

...変数値がわかって、あーあ!CopyBufferがインデックスの順番を逆にしている!

なぜ、そんなことをするのか?

インジケーターに不要なものは求めない・・・。想像してみてください、あなたがニューススタンドに来たとします。そして、この3日間の新聞が欲しいのか...。そして、あなたの新聞を売りますが、最後の20日間だけです、と言うのです...。必要ですか?:-)
 
denkir:
必要ないものをインジケーターに聞くのは避けたい......という方。想像してみてください、あなたがニューススタンドに来たとします。そして、直近3日分の新聞が必要です。そして、「新聞は売れますが、直近の20日分しか...」と言われるのです。必要ですか?:-)

まあ、MQL4でもあまり多くを求める必要はないでしょう。量ではなく、順番が大事なのです。

論理はどこにあるのか?配列の 0番目の要素が現在のバーであることに、誰もが慣れ親しんでいる。なぜ、何かを変えるのですか?

追伸:ArraySetAsSeriesで 修正しました

タンブリング ......

 
Alvin1976:

まあ、MQL4でもあまり多くを求める必要はないでしょう。量ではなく、順番が大事なのです。

論理はどこにあるのか?配列の 0番目の要素が現在のバーであることに、誰もが慣れ親しんでいる。なぜ、何かを変えるのですか?

追伸:ArraySetAsSeriesで 修正しました

タンバリンを持って踊る......。

タンバリンではなく、イノベーションに慣れることです。そして、これらの技術革新は、場合によってはその作業を容易にしてくれるでしょう。例については聞かないでください、論外です。