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

 
Vladimir Karputov:

OnInit()でインジケータハンドルを1回だけ作成すれば良いのでは?

計算の深さは、インジケータによって異なります。深さを強制的に制限するような指標は稀で、原則的にすべての履歴を計算するものである。そのため、次のような方法が有効です。インジケータに深さを表す変数を導入し、Expert AdvisorのiCustomを通してこのパラメータを渡します。

1.そうですね、いい意味でイニシエーションで一回やればいいというのは理解できます。しかし、問題は、インジケータの入力パラメータが 変化する可能性があることです。例えば、スペクトル解析では共振周波数を計算し、その計算結果が使用するMAの周期となる。また、新しい次元のMAデータを要求する場合は、新しいハンドルになります。実質的に周波数はすべてのバーで変化しないので、同じMAハンドルが十分長い時間(~分)使用されます。それでも、ハンドルが変わるときが来る。そして、たくさんのハンドルを使うか、1つのハンドルを使って定期的に再計算するか、どちらかにしなければなりません。そこで登場するのが経済です。

2.iCustomをマスターしました。しかし、インジケーターの計算深度を制限するにはどうしたらいいのでしょうか?テクニカル1では無理です。どうやら、テクニカルインジケーターのカスタムクローンをたくさん作らなければならないようです。もちろん、迷惑ではありますが、効果はあるはずです。ご指摘ありがとうございます。良いアイデアだと思います。ありがとうございます。

 
User_mt5:

1.はい、通常はイニテで1回行うものと理解しています。しかし、問題は指標の入力パラメータが 変化する可能性があることです。

開発者は、指標がMQL4スタイルで扱えるSBを、効率を落とすことなく書くことができます。すなわち、すべてのキャッシュとハンドルはSBに隠されている。

 
User_mt5:

1.はい、通常はイニテで1回行うものと理解しています。しかし、問題は指標の入力パラメータが 変化する可能性があることです。例えば、スペクトル解析では共振周波数を計算し、その計算結果が使用するMAの周期となる。また、新しい次元のMAデータを要求する場合は、新しいハンドルになります。実質的に周波数はすべてのバーで変化しないので、同じMAハンドルが十分長い時間(~分)使用されます。それでも、ハンドルが変わるときが来る。そして、たくさんのハンドルを使うか、1つのハンドルを使って定期的に再計算するか、どちらかにしなければなりません。そこで登場するのが経済です。

2.iCustomをマスターしました。しかし、インジケーターの計算深度を制限するにはどうしたらいいのでしょうか?テクニカル1では無理です。どうやら、テクニカルインジケーターのカスタムクローンをたくさん作らなければならないようです。もちろん、迷惑ではありますが、効果はあるはずです。ご指摘ありがとうございます。良いアイデアだと思います。ありがとうございます。


1.この場合、未使用のハンドルを破棄して、新しいハンドルを作成する方がよいでしょう(主な目的は、OnTick() に多数のハンドルを叩き込むことがないように制御することです)。).

2.内蔵インジケータのコピーを作成し、別の名前(例えば、名前に "depth of history "を追加)を付けて、新しいパラメータ:InpDepthHistoryを導入します。つまり、新しいカスタム・インディケータを書く必要があるのです。

 
User_mt5:

1.はい、通常はイニテで1回行うものと理解しています。しかし、問題は指標の入力パラメータが 変化する可能性があることです。例えば、スペクトル解析では共振周波数を計算し、その計算結果が使用するMAの周期となる。また、新しい次元のMAデータを要求する場合は、新しいハンドルになります。実質的に周波数はすべてのバーで変化しないので、同じMAハンドルが十分長い時間(~分)使用されます。それでも、ハンドルが変わるときが来る。そして、たくさんのハンドルを使うか、1つのハンドルを使って定期的に再計算するか、どちらかにしなければなりません。そこで登場するのが経済です。

2.iCustomをマスターしました。しかし、インジケーターの計算深度を制限するにはどうしたらいいのでしょうか?テクニカル1では無理です。どうやら、テクニカルインジケーターのカスタムクローンをたくさん作らなければならないようです。もちろん、迷惑ではありますが、効果はあるはずです。ご指摘ありがとうございます。良いアイデアだと思います。ありがとうございます。

私の理解では、あなたはmql4のようにiCustom()を使用して1つの値だけを取得したいのですが、mql4も最初の使用時に全履歴深度のインジケータを再計算することを考慮していないようですね。少なくとも1つのパラメータが変更されると、同じように再計算されます。

したがって、結論から言うと、「気にしない方がいい」です。古い」インジケータが必要ない場合は、単にそれを削除し、他のパラメータでインジケータのハンドルを取得することができます。

 
fxsaber:

開発者は、指標をMQL4スタイルで扱うことができるSBを、効率を落とすことなく書くことができます。すなわち、すべてのキャッシュとハンドルはSBに隠されている。

すみません、よくわからないんです。ここでいう開発者というのは、MTを作った人たちなのか、それとも私が罪深いアプリケーションなのか?そしてSBは...?

 
Vladimir Karputov:

1.この場合、未使用のハンドルを破棄して新しいハンドルを作成する方がよいでしょう(主なポイントは、OnTick() に100万個のハンドルを叩き込まないようにすることです :)).

2.内蔵インジケータのコピーを作成し、別の名前(例えば、名前に "depth of history "を追加)を付けて、新しいパラメータ:InpDepthHistoryを導入します。つまり、新しいカスタム・インディケータを書く必要があります。

1.はい、今まではハンドルだけの3次元配列でした。でも今は、どうやら全部アレンジするようです。

2.そうですね、テクニカル指標はほとんどすべてのコードがあります。そして、自分で書くことができる。

ありがとうございます。

 
User_mt5:

すみません、理解できません。ここでいう開発者というのは、MTを作った人なのか、それとも私が罪深い応用者なのか?そしてSBは...?

MetaQuotesでは、ご希望に応じてこのような標準ライブラ リーを作成することができます。大きな問題は、それが必要なのかどうかということです。

 
Alexey Viktorov:

私の見るところ、mql4のようにiCustom()を使って1つの値だけを取得したいのですが、mql4も初回使用時にヒストリーの深さ全体のインジケータを再計算することを考慮していないようですね。同様に、少なくとも1つのパラメータが変更された場合に再計算される。

だから、「気にする必要はない」というのが結論です。廃止」されたインジケータが不要になった場合は、単純に削除して、別のパラメータで処理されたインジケータを取得することができます。

たぶん、そうしたいんです。でも今は、そうしたくない。おっしゃるとおりです。時代遅れのインジケーターが不要なら、ゴキブリのように潰してしまえばいい :)

良い解決策は、テクニカルクローンの深さを制限することです。資源と時間の節約になります。だから、これからはそうしていこうと思います。

ありがとうございます。

 
fxsaber:

MetaQuotesでは、ご希望に応じてこのような標準ライブラ リーを作成することができます。大きな問題は、それが必要なのかどうかということです。

これは将来の世代のためでもあるのです。ライブラリにあるサンプルを見てみました。数千行に及ぶコメントなしのコード。誰かは知らないが、そんなことはできない。だから、そのアイデアには感謝しますが、私の場合は受け入れられないんです。
 
User_mt5:
これは将来の世代のためでもあるのです。図書館にあるサンプルを見てみました。数千行に及ぶコメントなしのコード。誰も知らないが、どうすればいいのかわからない。だから、そのアイデアには感謝しますが、私の場合は受け入れられないんです。

MT5ではすでに動作しています

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

mql5言語の特徴、微妙なニュアンスとコツ

fxsaber さん 2018.01.09 10:20

MQL4の熟練者向けに、MQL5でTFを処理する古い方法があります。

おそらく、MQL4のアプローチは、ティックヒストリーを扱う際にも有用だと思う人がいるでしょう。

if (Tick[0].bid > Tick[100].bid) // сравниваем текущий и исторический тики
  Print("Hello World!");

if (High[0] > Close[100]) // https://www.mql5.com/ru/forum/42122/page24#comment_2904023
  Print("Hello World!");

技術的には、インジケータで同じことをONE timeして(効率を落とさずに)、その解をSBに入れることを妨げるものはありません。

理由: