インジケータでのOnDeinit - ページ 5 12345678 新しいコメント 削除済み 2015.06.17 10:26 #41 mql5: もう一度(指をくわえて)説明してみます。前回の起動からX時間後に端末が起動した履歴のダウンロードを開始したが、見つからない(端末が X 分間アイドル状態だった)利用可能な履歴のインジケータのOnCalculateを呼び出す prevtime = 最後の既知の履歴時間、インジケータバッファのサイズNバーサーバーから履歴をダウンロードしている間、チックが入るTime[0]はtick time、prevtimeとして記憶、バッファサイズはN+1本(NとN+1本の間にヒストリーのギャップがある)です。履歴がダウンロードされた後、OnCalculateが再び呼び出されますが、今度は履歴に穴はなく、prevtimeはTime[0]と同じ日付になっています。新しいバーはなく(それぞれ、インディケータのバッファがクリアされていない)、インディケータN+X/タイムフレームのバーのバッファサイズとIndBuffer[0]はステップ5と同じではありません。prevtimeは何の関係があるのですか?なぜうまくいかないのかを聞いているのです。///////////////////////////////////// void OnDeinit(const int reason) { ArrayInitialize(body_up,EMPTY_VALUE); ArrayInitialize(body_down,EMPTY_VALUE); ArrayInitialize(shadow_up,EMPTY_VALUE); ArrayInitialize(shadow_down,EMPTY_VALUE); ArrayInitialize(yell_body_up,EMPTY_VALUE); ArrayInitialize(yell_body_down,EMPTY_VALUE); ArrayInitialize(yell_shadow_up,EMPTY_VALUE); ArrayInitialize(yell_shadow_down,EMPTY_VALUE); } Ihor Herasko 2015.06.17 11:18 #42 eevviill:prevtimeとどう関係があるのでしょうか?なぜうまくいかないのかを聞いているのです。そして、それがうまくいっていないとどうしてわかるのでしょうか?どのように確認するのですか?また、なぜアンロードする前にインジケーターバッファを初期化するのでしょうか?すでにアンロードされているんですよね?インジケータバッファは、すべてのインジケータ値が完全に再計算されたときに初期化する必要が あります。int OnCalculate(..) { ... if (<необходимо пересчитать все значения индикатора, например, если limit == Bars - 1>) { ArrayInitialize(...); } ... } Victor Nikolaev 2015.06.17 13:33 #43 eevviill:これです。そのためにバッファーゼロ化をしています。イニテはもう無理だって言ってるじゃん。ダイニットしたい。しかし、そこでもうまくいかない。なぜ?init()とdeinit()はどう関係があるのですか?かなり違うところでオペレーションが必要です。もう一度、繰り返します。計算後、履歴が読み込ま れた。作業用を作りました。 ファイル: mtfbcandle_1.mq4 9 kb 削除済み 2015.06.17 16:09 #44 Scriptong:うまくいっていないことをどうやって判断するのですか?どのように確認するのですか? https://forum.mql4.com/ru/65066/page2#1015138 削除済み 2015.06.17 16:11 #45 Vinin:init()、deinit()は何の関係があるのですか?オペレーションは他で必要なのです。繰り返しになりますが計算後、履歴が読み込まれました。動作するバージョンを作った。 やはり先生のお勧めで一回目はうまくいきました。なぜdeinitはアレイをゼロにしないのでしょうか? Ihor Herasko 2015.06.17 16:16 #46 eevviill: https://forum.mql4.com/ru/65066/page2#1015138OnCalculateで 動作するコードへのリンクがありましたね。DeInitでの初期化がうまくいかないことをどうやって知るのかについて質問しました。念のため明記しておきますが、OnDeinit()の後は、インジケーターコードは何も動作しません(OnInit()もOnCalculate()も動作しません)。したがって、OnDeinit() 自身でのみ、配列のゼロ化を確認することができます。 削除済み 2015.06.19 08:24 #47 Scriptong:OnCalculateで動作するコードへのリンクがありましたね。DeInitでの初期化がうまくいかないことをどうやって知るのかについて質問しました。念のため明記しておきますが、OnDeinit()の後は、インジケーターコードは何も動作しません(OnInit()もOnCalculate()も動作しません)。したがって、OnDeinit() 自身で、配列のゼロ化の事実を確認することができます。 へのリンクを用意しました。操作チャートを開く- M1インジケータを取り付ける-端子を閉じる-数分で開いた。結果はスクリーンショットで。こんな感じでテストしています。 削除済み 2015.06.19 08:24 #48 eevviill:やはり先生のお勧めで一回目はうまくいきました。なぜdeinitは配列のゼロ化で動作しないのか不思議です。 それとも、ターミナルを閉じた 状態ではdeinitは動作しないのでしょうか? Ilyas 2015.06.19 10:16 #49 eevviill: それとも、ターミナルを閉じた状態ではdeinitは動作しないのでしょうか? しかし、インジケーターバッファを クリアしても意味がありません。 削除済み 2015.06.21 06:32 #50 mql5: 動作はしますが、インジケーターバッファをクリアしても意味がありません - 保存されません。なぜ?バッファ0の値がゼロにならずに保存されているのはなぜですか? 12345678 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
もう一度(指をくわえて)説明してみます。
prevtimeは何の関係があるのですか?
なぜうまくいかないのかを聞いているのです。
prevtimeとどう関係があるのでしょうか?
なぜうまくいかないのかを聞いているのです。
そして、それがうまくいっていないとどうしてわかるのでしょうか?どのように確認するのですか?
また、なぜアンロードする前にインジケーターバッファを初期化するのでしょうか?すでにアンロードされているんですよね?
インジケータバッファは、すべてのインジケータ値が完全に再計算されたときに初期化する必要が あります。
これです。そのためにバッファーゼロ化をしています。イニテはもう無理だって言ってるじゃん。
ダイニットしたい。しかし、そこでもうまくいかない。なぜ?
init()とdeinit()はどう関係があるのですか?かなり違うところでオペレーションが必要です。もう一度、繰り返します。計算後、履歴が読み込ま れた。
作業用を作りました。
うまくいっていないことをどうやって判断するのですか?どのように確認するのですか?
init()、deinit()は何の関係があるのですか?オペレーションは他で必要なのです。繰り返しになりますが計算後、履歴が読み込まれました。
動作するバージョンを作った。
やはり先生のお勧めで一回目はうまくいきました。
なぜdeinitはアレイをゼロにしないのでしょうか?
https://forum.mql4.com/ru/65066/page2#1015138
OnCalculateで 動作するコードへのリンクがありましたね。DeInitでの初期化がうまくいかないことをどうやって知るのかについて質問しました。念のため明記しておきますが、OnDeinit()の後は、インジケーターコードは何も動作しません(OnInit()もOnCalculate()も動作しません)。したがって、OnDeinit() 自身でのみ、配列のゼロ化を確認することができます。
OnCalculateで動作するコードへのリンクがありましたね。DeInitでの初期化がうまくいかないことをどうやって知るのかについて質問しました。念のため明記しておきますが、OnDeinit()の後は、インジケーターコードは何も動作しません(OnInit()もOnCalculate()も動作しません)。したがって、OnDeinit() 自身で、配列のゼロ化の事実を確認することができます。
へのリンクを用意しました。
操作チャートを開く- M1インジケータを取り付ける-端子を閉じる-数分で開いた。結果はスクリーンショットで。
こんな感じでテストしています。
やはり先生のお勧めで一回目はうまくいきました。
なぜdeinitは配列のゼロ化で動作しないのか不思議です。
それとも、ターミナルを閉じた状態ではdeinitは動作しないのでしょうか?
動作はしますが、インジケーターバッファをクリアしても意味がありません - 保存されません。
なぜ?
バッファ0の値がゼロにならずに保存されているのはなぜですか?