MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 360

 
YarTrade:

そう読み取れます。書かれていることを正しく理解したいと思ったからです。

皆さん、iVolumeは1ティックあたりの取引量を返すという理解で合っていますか?

いいえ、正しくありません。iVolume関数は、指定されたバーのティックボリュームを 返します。すなわち、Ask価格とBid価格の変化量です。

提案された指標を観察すると、とてもよくわかります。

 

こんにちは、私はまだカスタムインジケータからEAにコードを修正しようとしています、私は部品を分析し始め、IndicatorCounted()関数を見つけた、どのようにEAコードでそれを置き換えることができますか?

この機能に加え、インジケータでは時系列のHighとLowを使用しており、インジケータとEAでは、コードはコンパイルされて実行されますが、EAでは最初のティックで、明らかに配列を超えて いるようで、重大なエラーになります.........。

私は指標について読んだ、このゼロバーをトレースする方法? この関数なしで、タイマーと時間枠でバーを閉じるを含める?

 
ijonhson:

こんにちは、私はまだカスタムインジケータからEAにコードを修正しようとしています、私は部品を分析し始め、IndicatorCounted()関数を見つけた、どのようにEAコードでそれを置き換えることができますか?

この機能に加え、インジケータでは時系列のHighとLowを使用しており、インジケータでもEAでも、コードはコンパイルされて実行されますが、EAでは最初のティックで、明らかに配列を超えて しまうという重大なエラーが発生します............。

変更する必要はありません。すでにカウントされているバーの本数を判定する機能です。もし、あなたが、どうしようもないほどやりたいことがあるのなら・・・。しかし、この場合、最後のバーだけを考慮し、すべての履歴のバーを無視する必要があります。

 
ijonhson:

カスタムインジケータからEAにコードを修正しようとしています。


インジケータから EAにコードを移動させようとしているのでは?

IndicatorCounted()は、EAコードでどのように置き換えることができますか?

インジケーターとEAとの違いをご存知ですか?もしそうなら、なぜこの機能がEAに必要なのですか?


私は指標について読んだ、このゼロバーをトレースする方法?この関数なしで、タイマーをオンにし、時間枠でバーを閉じる?

原因と結果の問題があると思います。何を達成したいのかを説明すれば、正しい行動を教えてくれるはずです。

 
Alexey Viktorov:

何ら変更する必要はありません。すでにカウントされている小節の数を決定する機能です。もし、あなたが、どうしようもないほどやりたいことがあるのなら・・・。もちろん、市場の状態の再計算をExpert Advisorに移すことはできますが、この場合、最後のバーだけをカウントし、すべての履歴のバーを無視する必要があります。


"変更する必要がない"、つまりExpert AdvisorsのonTickでもindicatorsのonCalculateと 同じように正常に動作するのでしょうか?

 
Nikolay Ivanov:

インジケータからEAにコードを転送することですか?

インジケーターとEAとの違いをご存知ですか?もしそうなら、なぜこの機能がEAに必要なのですか?


はい、コードを転送しました、その通りです。

ティック 毎に分析するためのインジケータノードの配列が必要です。

 
ijonhson:

はい、コード転送は正しいです。

各ティックで 分析するためのインジケータノードの配列が必要です。


EAでインジケータの値が必要な場合、インジケータのコードをEAにコピーする必要はありません。EAにインジケータの値を要求する必要がありますが、これは次の関数で行われます。https://docs.mql4.com/ru/indicators/icustom

iCustom - Технические индикаторы - Справочник MQL4
iCustom - Технические индикаторы - Справочник MQL4
  • docs.mql4.com
[in] input-параметры пользовательского индикатора, разделенные запятыми. Тип и порядок следования параметров должен соответствовать. Если параметры не указаны, то будут использованы значения по умолчанию.
 
Nikolay Ivanov:

EAにインジケータの値が欲しい場合、インジケータのコードをEAにコピーする必要はありません。EAにインジケータの値を要求する必要がありますが、これは次の関数で行われます。https://docs.mql4.com/ru/indicators/icustom


どうもありがとうございます。しかし、関数の説明を読む限り、私が指定した場所で、1つの値を得るために、インジケータのすべてのコードを必要とします。つまり、すべてのトップを得るために、インジケータのコードをn回計算する必要がありますが(すべてのバーに一つずつ目を通す)、いくつかのタイムフレームのインジケータのトップの順序を比較する必要があるのです。

そして、手動で頂点を検索する必要があります。

 
ijonhson:

ありがとうございます。しかし、私が関数の説明から理解する限り、それは私が指定した場所で、1つの値を得るために、指標の全コードを実行します。つまり、すべてのトップを得るために私は指標のコードをn回計算する必要があります(すべてのバーを一つずつ通過する)、私はいくつかの時間枠でこの指標のトップの順序を比較する必要があるのです。


タイムフレームは関数の入力パラメータで、任意のものを入力できます。バーのセットは、サイクルを使用して読み取られ、値は配列に格納することができます

 
Nikolay Ivanov:

タイムフレームは関数の入力パラメータであり、任意のものを入力することができます。バーのセットはループを使って読み込まれ、値は配列に保存することができます


問題は、インジケータコードを1ティックあたり900回(例えば300本のバーで3タイムフレーム)計算するか、3回計算するかです。 icustomはそれほど重要でないことは明らかなので、ループに入れました。 オプションとして、インジケータ値の配列のアドレスがdllでエキスパートアドバイザに渡されることを見ましたが、私はセットでインジケータを持ってたくないのです