EA/インジケーターからのティックのエミュレーション - ページ 2 12345678 新しいコメント Vadim Zhunko 2012.11.04 19:58 #11 Meat: あなたのコードは、まず、単にtickをエミュレートしているのではなく、tickごとに対応する履歴でグラフを強制的に更新しています。 時々ログファイルを見ますか? 暇なときに見て、そこで何が起こっているか見てみてください。そして、1日後くらいに何があるか見積もってみてください。システムやインターネット回線への負荷は言うまでもありません。 もし、あなたのコードでチャートを更新する代わりにティックをエミュレートすると、ループになり(つまり、インジケータが停止せずに開始する)、それに応じて、端末がハングアップします。 なぜ履歴を読み込まずにアップデートする必要があるのですか?チャートの強制リフレッシュはティックエミュレーションです。2500ティック後のログはこちらです。00:51:32 Check_UpdateChart EURUSD,M1: 正常にロードされました。 00:52:48 Check_UpdateChart EURUSD,M1: uninit reason 1. 00:52:48 Check_UpdateChart EURUSD,M1: 削除されました。 何もぶら下がっていない。インジケータがループするようにエミュレートしています。つまり、自らトリガーするのです。 Alexey Navoykov 2012.11.04 20:44 #12 Zhunko: なぜ履歴を読み込まずにアップデートする必要があるのですか?グラフを強制的に更新するのは、ティックエミュレーションです。 2500ティック後のログはこちらです。 00:51:32 Check_UpdateChart EURUSD,M1: 正常にロードされました。 00:52:48 Check_UpdateChart EURUSD,M1: uninit reason 1. 00:52:48 Check_UpdateChart EURUSD,M1: 削除されました。 何もぶら下がっていない。インジケータがループするようにエミュレートしています。つまり、自分自身で起動するのです。 ログ・ ログとはっきり書いたつもりなのですが。では、なぜ私にエキスパートのログを見せるのですか? どうやら私の言う通り、あなたはそこを見ないようですね。 あなたのハードディスクの半分がこのログで埋まっていても、私は驚きませんよ :) 履歴の更新とティックエミュレーションは別のものです。 サーバーからティックを受信しても、履歴(つまり以前のバー)は更新されません。 もしそれが起こっていれば、端末は多くのトラフィックとリソースを浪費しているはずです。 そのため、IndicatorCounted()をゼロにリセットしてしまうため、1ティック ごとに履歴全体をチェックする必要があり、更新する理由が不明である。それは、多くの資源を無駄にしていることになります。 solar 2012.11.04 20:51 #13 Meat: サーバーから受信したティックは、履歴(つまり、以前のバー)を更新しません。 もしそうなら、端末は多くのトラフィックとリソースを食ってしまうでしょう。 例えば1バー=2ティックの場合、どうすればいいのか ))))?私の場合、ティックの更新履歴は? Alexey Navoykov 2012.11.04 20:57 #14 IgorM:後釜 ログに残りました。 23:39:01 test EURUSD,H1: loaded successfully 23:39:01 test EURUSD,H1: PostMsgAddr =1977398342 23:39:01 test EURUSD,H1: initialized 23:39:01 test EURUSD,H1: cycle completed... ...サイクル完了。 ああ、何が起こっているのかはっきりしない...それならこれを試してみてください。インポートセクション #import"user32.dll" に関数を追加します。 CallWindowProcA(int lpPrevWndFunc[], int hWnd, int Msg, int wParam, int lParam); そして、SetMyTimer関数の最後にCallWindowProcA(code,0,0,0)という行を追加してください。 そして、並行して動作するいくつかのインジケータで、この瞬間にティックが生成されているかどうかをチェックします。 Alexey Navoykov 2012.11.04 21:00 #15 solar: 例えば、1バー=2ティックの場合はどうなるのでしょうか ))))私の場合、ティックで履歴が更新されるのですが? もちろん現在のバーは常に更新されていますが、一般的な歴史の話をしていたんです。 Vadim Zhunko 2012.11.04 21:59 #16 Meat: はっきり「ログ」と書きました。では、なぜExpert Advisorのログを見せるのですか? どうやら私の言う通り、あなたはそこを見ないようですね。あなたのハードディスクの半分が、すでにこれらのログで埋まっていても不思議ではありません :) また、ヒストリーアップデートとティックエミュレーションは別物 なので、概念を混同しないようにしましょう。サーバーから受信したティックは、履歴(つまり以前のバー)を更新しません。 もし更新した場合、端末は膨大な量のトラフィックとリソースを消費することになります。 そのため、IndicatorCounted()をゼロにリセットしてしまうため、1ティックごとに履歴全体をチェックする必要があり、更新する理由が不明である。それは、多くの資源を無駄にしていることになります。 ログも空ですが、他の理由です。履歴を入れ替えた後に、コンソールクリーナーを使っています。自分のログがある。MT4のログは全く気にならない。メタクオーツは、ロギングが最後の手段であることを繰り返し述べています。優先順位が低いのです。リソースを消費しない。ただ、クリーニングが間に合えばいいだけです。IndicatorCounted() に関しては...。使っていない私のインジケータはExpert Advisorから情報を引き出すための空箱です。MT4でインジケータを使うのは弊害があると思う。インターフェイスのスレッドが遅く、Expert Advisorの3倍の速度で動作する。ハイライトはもちろん正しいのですが、わざわざ分離するほどの価値があるのでしょうか?415のアップデートに関するログログはこちらです。03:00:44カスタムインジケータ Check_UpdateChart EURUSD,M1: ロードに成功しました。 03:00:46 HistoryCenter: 'EURUSD1'を同期させる。 03:00:46 HistoryCenter: 'EURUSD1'に2本のバーがインポートされました。 03:00:47 HistoryCenter: 'EURUSD1'を同期させる。 03:00:47 HistoryCenter: 'EURUSD1'に2本のバーがインポートされました。 03:00:47 HistoryCenter: 'EURUSD1'を同期させる。 03:00:47 HistoryCenter: 'EURUSD1'に2本のバーがインポートされました。 03:00:48 HistoryCenter: 'EURUSD1'を同期させる。 03:00:48 HistoryCenter: 'EURUSD1'に2本のバーがインポートされました。 03:00:48 HistoryCenter: 'EURUSD1'を同期させる。 03:00:49 HistoryCenter: 'EURUSD1'に2本のバーがインポートされました。 03:00:49 HistoryCenter: 'EURUSD1'を同期させる。 03:00:49 HistoryCenter: 'EURUSD1'に2本のバーがインポートされました。 03:00:50 HistoryCenter: 'EURUSD1'を同期させる。 03:00:50 HistoryCenter: 'EURUSD1'に2本のバーがインポートされました。 03:00:51 HistoryCenter: 'EURUSD1'を同期させる。 03:00:51 HistoryCenter: 'EURUSD1'に2本のバーがインポートされました。 03:00:51 HistoryCenter: 'EURUSD1'を同期させる。 03:00:52 HistoryCenter: 'EURUSD1'に2本のバーがインポートされました。 03:00:52 HistoryCenter: 'EURUSD1'を同期させる。 03:00:55 HistoryCenter: 'EURUSD1'に2本のバーがインポートされました。 03:00:55 HistoryCenter: 'EURUSD1'を同期させる。 03:00:55 HistoryCenter: 'EURUSD1'に2本のバーがインポートされました。 03:00:55 HistoryCenter: 'EURUSD1'を同期させる。 03:00:55 HistoryCenter: 'EURUSD1'に2本のバーがインポートされました。 03:00:55 HistoryCenter: 'EURUSD1'を同期させる。 03:00:56 HistoryCenter: 'EURUSD1'に2本のバーがインポートされました。 03:00:56 HistoryCenter: 'EURUSD1'を同期させる。 03:00:57 カスタムインジケータ Check_UpdateChart EURUSD,M1: 削除されました。 03:00:59 HistoryCenter: 'EURUSD1'に2本のバーがインポートされました。 03:01:01 MetaTraderのビルド438が停止しました。週末にインジケーターの性能をテストするのは、私には関係なさそうです。作業後、手動でログを清掃することができます。しかし、あなたのコードを挿入するよりも、start()の 末尾に1行挿入する方が簡単です。複雑にする意味はない。 Emulation of ticks from Bar Data Upon Restart VPS not working elmucon 2012.11.04 22:49 #17 私はXPを持っています - それは動作するように見える - その後、端末をクラッシュさせる.... 同じ結果で、15秒から50秒くらいでターミナルがクラッシュしてしまいます. だから、あなたは何か間違っている... が、悪くはないだろう. Алексей Тарабанов 2012.11.04 22:55 #18 インジケーターでも同じようにする方法はありますか?単に、インジケーターの読み取りを確認したい時点(その時点)にカーソルを合わせるだけでいいのですか? Alexey Navoykov 2012.11.05 01:33 #19 Zhunko さん、まあ、すべてが非標準(独自のログ、インディケータの独自実装など)なら、なぜこんな話を始めるのでしょうか。 実は、MT4に特化した作業の議論であって、独自の開発とは関係ないのですが。 最初の投稿で、私のコードは外部リンクなしで 行うタスク、つまりシステムライブラリのみを使用する自給自足のExpert Advisor/Indicatorを実装する場合に役立つと明確に指摘しました。 そして、あなたが独自の開発を使用している場合、それはあなたに適用されるものではありません。 また、一般的に、ログを散らかさない方が楽なのに、なぜ「仕事帰りに手動で掃除」しなければならないのか、理解できない。結局、私が理解した限りでは、DLLで開発したものを実装しているのですね。それなら、私がここで提案したように、同じタイマーをそこに設置することを妨げるものは何でしょう。でも、なぜかあなたはタンバリンと踊ったり、ログを掃除したりすることを好む。 私のコードがあなたを悩ませているのに、あなたは毎日ログを掃除するのが面倒なんですね :) Alexey Navoykov 2012.11.05 01:39 #20 elmucon: 私はXPを持っています - それは動作するように見える - その後、端末をクラッシュさせる.... インジケーターのコードでも、EAのコードでも、それ単体でも、結果は同じで、約15~50秒後にターミナルがクラッシュします ... だから、あなたは何か間違っている... が、悪くはないだろう. そうですね、ちょっと無理があるかもしれませんね。 私はアセンブラの専門家ではないので、あまり厳しく判断しないでください :) 何が問題なのか、考えてみますね。 12345678 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
あなたのコードは、まず、単にtickをエミュレートしているのではなく、tickごとに対応する履歴でグラフを強制的に更新しています。 時々ログファイルを見ますか? 暇なときに見て、そこで何が起こっているか見てみてください。そして、1日後くらいに何があるか見積もってみてください。システムやインターネット回線への負荷は言うまでもありません。
もし、あなたのコードでチャートを更新する代わりにティックをエミュレートすると、ループになり(つまり、インジケータが停止せずに開始する)、それに応じて、端末がハングアップします。
なぜ履歴を読み込まずにアップデートする必要があるのですか?チャートの強制リフレッシュはティックエミュレーションです。
2500ティック後のログはこちらです。
00:51:32 Check_UpdateChart EURUSD,M1: 正常にロードされました。
00:52:48 Check_UpdateChart EURUSD,M1: uninit reason 1.
00:52:48 Check_UpdateChart EURUSD,M1: 削除されました。
なぜ履歴を読み込まずにアップデートする必要があるのですか?グラフを強制的に更新するのは、ティックエミュレーションです。
2500ティック後のログはこちらです。
00:51:32 Check_UpdateChart EURUSD,M1: 正常にロードされました。
00:52:48 Check_UpdateChart EURUSD,M1: uninit reason 1.
00:52:48 Check_UpdateChart EURUSD,M1: 削除されました。
ログ・ ログとはっきり書いたつもりなのですが。では、なぜ私にエキスパートのログを見せるのですか? どうやら私の言う通り、あなたはそこを見ないようですね。 あなたのハードディスクの半分がこのログで埋まっていても、私は驚きませんよ :)
履歴の更新とティックエミュレーションは別のものです。 サーバーからティックを受信しても、履歴(つまり以前のバー)は更新されません。 もしそれが起こっていれば、端末は多くのトラフィックとリソースを浪費しているはずです。
そのため、IndicatorCounted()をゼロにリセットしてしまうため、1ティック ごとに履歴全体をチェックする必要があり、更新する理由が不明である。それは、多くの資源を無駄にしていることになります。
サーバーから受信したティックは、履歴(つまり、以前のバー)を更新しません。 もしそうなら、端末は多くのトラフィックとリソースを食ってしまうでしょう。
後釜
ログに残りました。23:39:01 test EURUSD,H1: loaded successfully
23:39:01 test EURUSD,H1: PostMsgAddr =1977398342
23:39:01 test EURUSD,H1: initialized
23:39:01 test EURUSD,H1: cycle completed... ...サイクル完了。
ああ、何が起こっているのかはっきりしない...それならこれを試してみてください。インポートセクション #import"user32.dll" に関数を追加します。
CallWindowProcA(int lpPrevWndFunc[], int hWnd, int Msg, int wParam, int lParam);
そして、SetMyTimer関数の最後にCallWindowProcA(code,0,0,0)という行を追加してください。
そして、並行して動作するいくつかのインジケータで、この瞬間にティックが生成されているかどうかをチェックします。
例えば、1バー=2ティックの場合はどうなるのでしょうか ))))私の場合、ティックで履歴が更新されるのですが?
はっきり「ログ」と書きました。では、なぜExpert Advisorのログを見せるのですか? どうやら私の言う通り、あなたはそこを見ないようですね。あなたのハードディスクの半分が、すでにこれらのログで埋まっていても不思議ではありません :)
また、ヒストリーアップデートとティックエミュレーションは別物 なので、概念を混同しないようにしましょう。サーバーから受信したティックは、履歴(つまり以前のバー)を更新しません。 もし更新した場合、端末は膨大な量のトラフィックとリソースを消費することになります。
そのため、IndicatorCounted()をゼロにリセットしてしまうため、1ティックごとに履歴全体をチェックする必要があり、更新する理由が不明である。それは、多くの資源を無駄にしていることになります。
ログも空ですが、他の理由です。履歴を入れ替えた後に、コンソールクリーナーを使っています。自分のログがある。
MT4のログは全く気にならない。メタクオーツは、ロギングが最後の手段であることを繰り返し述べています。優先順位が低いのです。リソースを消費しない。ただ、クリーニングが間に合えばいいだけです。
IndicatorCounted() に関しては...。使っていない私のインジケータはExpert Advisorから情報を引き出すための空箱です。MT4でインジケータを使うのは弊害があると思う。インターフェイスのスレッドが遅く、Expert Advisorの3倍の速度で動作する。
ハイライトはもちろん正しいのですが、わざわざ分離するほどの価値があるのでしょうか?
415のアップデートに関するログログはこちらです。
03:00:44カスタムインジケータ Check_UpdateChart EURUSD,M1: ロードに成功しました。
03:00:46 HistoryCenter: 'EURUSD1'を同期させる。
03:00:46 HistoryCenter: 'EURUSD1'に2本のバーがインポートされました。
03:00:47 HistoryCenter: 'EURUSD1'を同期させる。
03:00:47 HistoryCenter: 'EURUSD1'に2本のバーがインポートされました。
03:00:47 HistoryCenter: 'EURUSD1'を同期させる。
03:00:47 HistoryCenter: 'EURUSD1'に2本のバーがインポートされました。
03:00:48 HistoryCenter: 'EURUSD1'を同期させる。
03:00:48 HistoryCenter: 'EURUSD1'に2本のバーがインポートされました。
03:00:48 HistoryCenter: 'EURUSD1'を同期させる。
03:00:49 HistoryCenter: 'EURUSD1'に2本のバーがインポートされました。
03:00:49 HistoryCenter: 'EURUSD1'を同期させる。
03:00:49 HistoryCenter: 'EURUSD1'に2本のバーがインポートされました。
03:00:50 HistoryCenter: 'EURUSD1'を同期させる。
03:00:50 HistoryCenter: 'EURUSD1'に2本のバーがインポートされました。
03:00:51 HistoryCenter: 'EURUSD1'を同期させる。
03:00:51 HistoryCenter: 'EURUSD1'に2本のバーがインポートされました。
03:00:51 HistoryCenter: 'EURUSD1'を同期させる。
03:00:52 HistoryCenter: 'EURUSD1'に2本のバーがインポートされました。
03:00:52 HistoryCenter: 'EURUSD1'を同期させる。
03:00:55 HistoryCenter: 'EURUSD1'に2本のバーがインポートされました。
03:00:55 HistoryCenter: 'EURUSD1'を同期させる。
03:00:55 HistoryCenter: 'EURUSD1'に2本のバーがインポートされました。
03:00:55 HistoryCenter: 'EURUSD1'を同期させる。
03:00:55 HistoryCenter: 'EURUSD1'に2本のバーがインポートされました。
03:00:55 HistoryCenter: 'EURUSD1'を同期させる。
03:00:56 HistoryCenter: 'EURUSD1'に2本のバーがインポートされました。
03:00:56 HistoryCenter: 'EURUSD1'を同期させる。
03:00:57 カスタムインジケータ Check_UpdateChart EURUSD,M1: 削除されました。
03:00:59 HistoryCenter: 'EURUSD1'に2本のバーがインポートされました。
03:01:01 MetaTraderのビルド438が停止しました。
週末にインジケーターの性能をテストするのは、私には関係なさそうです。作業後、手動でログを清掃することができます。
しかし、あなたのコードを挿入するよりも、start()の 末尾に1行挿入する方が簡単です。複雑にする意味はない。
私はXPを持っています - それは動作するように見える - その後、端末をクラッシュさせる....
同じ結果で、15秒から50秒くらいでターミナルがクラッシュしてしまいます.
だから、あなたは何か間違っている...
が、悪くはないだろう.
インジケーターでも同じようにする方法はありますか?
単に、インジケーターの読み取りを確認したい時点(その時点)にカーソルを合わせるだけでいいのですか?
Zhunko さん、まあ、すべてが非標準(独自のログ、インディケータの独自実装など)なら、なぜこんな話を始めるのでしょうか。 実は、MT4に特化した作業の議論であって、独自の開発とは関係ないのですが。
最初の投稿で、私のコードは外部リンクなしで 行うタスク、つまりシステムライブラリのみを使用する自給自足のExpert Advisor/Indicatorを実装する場合に役立つと明確に指摘しました。 そして、あなたが独自の開発を使用している場合、それはあなたに適用されるものではありません。
また、一般的に、ログを散らかさない方が楽なのに、なぜ「仕事帰りに手動で掃除」しなければならないのか、理解できない。結局、私が理解した限りでは、DLLで開発したものを実装しているのですね。それなら、私がここで提案したように、同じタイマーをそこに設置することを妨げるものは何でしょう。でも、なぜかあなたはタンバリンと踊ったり、ログを掃除したりすることを好む。 私のコードがあなたを悩ませているのに、あなたは毎日ログを掃除するのが面倒なんですね :)
私はXPを持っています - それは動作するように見える - その後、端末をクラッシュさせる....
インジケーターのコードでも、EAのコードでも、それ単体でも、結果は同じで、約15~50秒後にターミナルがクラッシュします ...
だから、あなたは何か間違っている...
が、悪くはないだろう.
そうですね、ちょっと無理があるかもしれませんね。 私はアセンブラの専門家ではないので、あまり厳しく判断しないでください :) 何が問題なのか、考えてみますね。