MQL5で学び、共に書く - ページ 9

 
gdtt:

アドバイザーの使用

0本目から値を取得し、ローソク足が閉じるまで1ティックごとにバッファの値を変更します。

そうです、実験してみましたが、本質的な問題は解決していません。 -- EAに、要求されたバーだけでなく、いくつかのバーの後ろにもインジケータバッファを 再計算させるにはどうしたらよいでしょうか。

Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
 

解決策が見つかったかもしれない!そのうちのひとつは...

ただし、そのためには、特別なバージョンのインジケータを作る必要があります。

 

紳士の皆さん。

インジケーターを書いています: ...
int handle;
double indicatorBuffer[];
...
int OnInit()
{
...handleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA,AppPrice);
...
}

int OnCalculate (const int rates_total, //配列 price[] のサイズ
const int prev_calculated, // 前回の呼び出しで処理したバー
const int begin, // 重要データの開始位置
const double& price[]) // 計算用の配 列
{
...ぽちぽち

質問は - どのようにハンドルMA = iMA(_シンボル、_期間、periodMA、shiftMA、MODE_SMA、AppPrice)はAppPriceは 何ですか知ってみましょう?
またはどのようにコードで使用するパラメータ タブから適用先:を 抽出する?

よろしくお願いします...

 
FlyAgaric:

紳士の皆さん。


問題は、どのようにhandleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice)にAppPriceが 何であるかを認識させるか、です。
または、コードで使用するために、Parameters タブからApply to: を抽出する方法は?

よろしくお願いします...

OnCalculate() を参照してください。

price[]配列として必要な時系列や指標の選択は、ユーザーが「Parameters」タブでインディケータを起動する際に行います。そのためには、「適用先」フィールドのドロップダウンリストで必要な項目を指定する必要があります。

他のmql5プログラムからカスタムインジケータの値を受け取るには、iCustom() 関数を使用し、その後の操作のためにインジケータハンドルを返します。また、適切なprice[]配列や他のインジケータのハンドルを 指定 することも可能です。 このパラメータは、カスタム・インジケータの入力変数のリストの最後に 渡される必要があります。
 
Rosh:

OnCalculate() を参照してください。


Rosh ありがとうございます。しかし、私の質問はまさにそれです。演算子には何を指定すればよいのでしょうか
ハンドルMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice)
をAppPriceにする?

利用可能なヘルプをよく読んでいます。暑さにやられたのか、 ...

 
FlyAgaric:

Rosh ありがとうございます。しかし、私の質問はまさにそれです。ステートメントには何を指定すればよいのでしょうか
ハンドルMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice)
をAppPriceにする?

利用可能なヘルプをよく読みました。暑さにやられたのか、 ...

他のインジケーターのデータで計算する場合は、インジケーターハンドルを指定します。または、指標の計算対象となる価格の種類を指定します。
 
FlyAgaric:

Rosh ありがとうございます。しかし、私の質問はまさにそれです。ステートメントには何を指定すればよいのでしょうか
ハンドルMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice)
をAppPriceにする?

利用可能なヘルプをよく読みました。暑さにやられたのか、 ...

ENUM_APPLIED_PRICE を AppPrice に指定する必要があります)
input ENUM_APPLIED_PRICE AppPrice=PRICE_CLOSE;
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5
 
Swan:
ENUM_APPLIED_PRICE を AppPrice に指定する必要があります)

白鳥 ご清聴ありがとうございました。しかし、もしあなたが
input ENUM_APPLIED_PRICE AppPrice=PRICE_CLOSE; and first form

int OnCalculate (const int rates_total, // 配列の大きさ price[])
const int prev_calculated, // 前の呼び出しで処理されたバー
const int begin, //重要なデータの開始位置
const double& 価格[]) // 計算用配列
コンパイル時に「OnCalculate関数が2つ定義されています」という警告メッセージが表示されます。価格データ機能を使用します NameIndicator.mq5 (pg)
という配列は、3番目のタブ「パラメータ」のApply to: と同じでない限り、どのような方法でもAppPriceに結びつかないままです。

問題は、iMA()やintCalculate()の最初のフォームのような組み込みのシングルバッファインジケータが、price[]配列が何らかの形で使用可能かどうかということである。
は計算で使用されます。

 
Rosh:
他のインジケーターのデータで計算する場合は、インジケーターハンドルを指定します。または、指標の計算対象となる価格の種類。

私たち(というより私)は、何か誤解をしているようです。

実際、問題は、iMA()やintOnCalculate() の最初のフォームのような組み込みのシングルバッファインジケータを、price[]配列が何らかの形で計算で使用される場合に使用できるかどうかです。

 
FlyAgaric:

私たち(というより私)は、何か誤解をしているようです。

問題は、iMA()タイプの組み込みのワンバッファ・インディケータと、price[]配列が何らかの理由でint OnCalculate()の第1形式を使用できるかどうかです。
は計算で使用されます。

AppPrice パラメータはOnCalculate()とは関係ありません。

int OnInit()
{
... handleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice);
...
}

価格定数の 値を与えるか(オプション1)、他のインジケータのハンドルを与えるか(オプション2)のどちらかを選択します。そして、できるようになる。

1stバリアント

第二種のOnCalculate()関数において

int OnCalculate (const int rates_total,      // размер входных таймсерий
                 const int prev_calculated,  // обработано баров на предыдущем вызове
                 const datetime& time[],     // Time
                 const double& open[],       // Open
                 const double& high[],       // High
                 const double& low[],        // Low
                 const double& close[],      // Close
                 const long& tick_volume[],  // Tick Volume
                 const long& volume[],       // Real Volume
                 const int& spread[]         // Spread
   );

必要なデータを呼び出し、計算を実行する

2ndバリアント。

コードで必要な種類のOnCalculate()を使用し、CopyBuffer() を使用して指標値を取得する。