記事"任意のインジケータの計算部分をEAのコードに転送する方法"についてのディスカッション - ページ 4 1234 新しいコメント Dmitriy Gizlyk 2022.09.05 14:48 #31 Aleksey Vyazmikin #: 記事を読んでもよくわからなかったのですが、クラス・インジケータにはバーが見つからない場合の保護機能があるのでしょうか?例えば、5小節間接続が切れていて、その後履歴が読み込まれた場合、class-indicatorはバッファの最後の値だけを補充するのでしょうか、それとも完全な再計算を行うのでしょうか? 標準のインジケーター・クラスを見ると、データを更新する際にCopyBuffer関数を使用しています。つまり、端末の履歴の一部ではなく、バッファ全体を埋めます。 bool CIndicatorBuffer::Refresh(const int handle,const int num) { //--- チェック if(handle==INVALID_HANDLE) { SetUserError(ERR_USER_INVALID_HANDLE); return(false); } //--- m_data_total=CopyBuffer(handle,num,-m_offset,m_size,m_data); //--- return(m_data_total>0); } Aleksey Vyazmikin 2022.09.05 14:53 #32 Dmitriy Gizlyk #:標準のインジケーター・クラスを見ると、データを更新する際にCopyBuffer関数を使用している。つまり、端末の履歴の一部ではなく、バッファ全体を埋めます。 そして、新しいバーのたびに履歴全体を再計算するのですか? それではコストがかかりすぎませんか?最後に計算を行った日付を特定し、この特定の時間のデータをコピーするのはどうでしょう? Dmitriy Gizlyk 2022.09.05 16:18 #33 Aleksey Vyazmikin #:新しい小節が増えるたびに、すべてのストーリーを計算し直すのか?それではコストがかかりすぎるのでは?最後に計算した日を特定し、この特定の時間帯のデータをコピーしてはどうだろう? 記事では、インジケータはCalculateメソッドで計算されます。ここでは、まず前回の再計算からバーの数を決定し、残りの部分のみを再計算します。 cur_date - 現在の時刻; m_last_calculate - 直近の再計算時刻。 bool CMA::Calculate(void) { datetime cur_date=(datetime)SeriesInfoInteger(m_Symbol,m_Timeframe,SERIES_LASTBAR_DATE); if(m_last_calculate==cur_date && ArraySize(m_source_data)==m_history_len) return true; //--- if(!LoadHistory()) return false; //--- int shift=Bars(m_Symbol,m_Timeframe,m_last_calculate,cur_date)-1; Aleksey Vyazmikin 2022.09.05 22:35 #34 Dmitriy Gizlyk #: 記事では、インジケータはCalculateメソッドで計算されます。ここでは、まず前回の再計算からバーの数を決定し、残りの部分のみを再計算します。 cur_date - 現在の時刻; m_last_calculate - 直近の再計算時刻。 分かりやすい説明をありがとう! Mehrdad Sarrafi 2024.04.28 10:54 #35 ありがとうございます。 非常に素晴らしいコンセプトですが、複数の価格(高値、安値、終値、始値)を持つプライスアクションインジケータを書きたい場合、例えば高値と安値の差に基づいてインジケータの 値を計算する 場合、データの配列(CIndicatorクラスのm_source_data)が1つしかないという問題があります。これを回避する方法はありますか?それともCIndicatorクラスを修正して、m_source_dataを(mqlRatesまたはCArrayBuffer ,...)の配列にすることをお勧めしますか? Dmitriy Gizlyk 2024.04.28 14:48 #36 Mehrdad Sarrafi インジケータの 値を計算する 場合、データの配列(CIndicatorクラスのm_source_data)が1つしかないという問題があります。これを回避する方法はありますか?それともCIndicatorクラスを修正して、m_source_dataを(mqlRatesまたはCArrayBuffer ,...)の配列にすることをお勧めしますか? はい、CIndicatorを修正してm_source_dataをMqlRatesの配列にすることができます。他の方法では、異なる配列のデータを同期させるアクションが必要になるので、MqlRatesをお勧めします。 1234 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
記事を読んでもよくわからなかったのですが、クラス・インジケータにはバーが見つからない場合の保護機能があるのでしょうか?例えば、5小節間接続が切れていて、その後履歴が読み込まれた場合、class-indicatorはバッファの最後の値だけを補充するのでしょうか、それとも完全な再計算を行うのでしょうか?
標準のインジケーター・クラスを見ると、データを更新する際にCopyBuffer関数を使用しています。つまり、端末の履歴の一部ではなく、バッファ全体を埋めます。
標準のインジケーター・クラスを見ると、データを更新する際にCopyBuffer関数を使用している。つまり、端末の履歴の一部ではなく、バッファ全体を埋めます。
そして、新しいバーのたびに履歴全体を再計算するのですか?
それではコストがかかりすぎませんか?最後に計算を行った日付を特定し、この特定の時間のデータをコピーするのはどうでしょう?
新しい小節が増えるたびに、すべてのストーリーを計算し直すのか?
それではコストがかかりすぎるのでは?最後に計算した日を特定し、この特定の時間帯のデータをコピーしてはどうだろう?
記事では、インジケータはCalculateメソッドで計算されます。ここでは、まず前回の再計算からバーの数を決定し、残りの部分のみを再計算します。
記事では、インジケータはCalculateメソッドで計算されます。ここでは、まず前回の再計算からバーの数を決定し、残りの部分のみを再計算します。
分かりやすい説明をありがとう!
ありがとうございます。
非常に素晴らしいコンセプトですが、複数の価格(高値、安値、終値、始値)を持つプライスアクションインジケータを書きたい場合、例えば高値と安値の差に基づいてインジケータの 値を計算する 場合、データの配列(CIndicatorクラスのm_source_data)が1つしかないという問題があります。これを回避する方法はありますか?それともCIndicatorクラスを修正して、m_source_dataを(mqlRatesまたはCArrayBuffer ,...)の配列にすることをお勧めしますか?
はい、CIndicatorを修正してm_source_dataをMqlRatesの配列にすることができます。他の方法では、異なる配列のデータを同期させるアクションが必要になるので、MqlRatesをお勧めします。