初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 714 1...707708709710711712713714715716717718719720721...1504 新しいコメント Vladimir Karputov 2017.01.10 09:52 #7131 dimnik:OnTradeTransactionを使用 することで、不思議と最適化時間が変化しています。15Mのシステム、非常にシンプル、年間履歴、1回の実行は0.3〜0.4秒で発生します。最適化スタート後、最初の200~300本は1秒以下で進み、次のものは15~20秒まで遅くなります(50回!)。プロセッサのオーバーヒートやトロトロ感はなく、メモリは半分以上空いています(16GBから)。OnTradeTransaction ハンドラを使用する前は、このようなことはありませんでした。小さな時間枠のより複雑な Expert Advisor でさえ、ほぼ同じ速度で最適化されていました。HistoryDealSelectはそれほど速度に影響するのでしょうか?どうすればラグを解消できるのか?void OnTradeTransaction(const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result) { if( trans.type != TRADE_TRANSACTION_DEAL_ADD) return; ENUM_TRADE_TRANSACTION_TYPE type=trans.type; long deal_type =0; double deal_volume =0; long deal_magic =0; if(HistoryDealSelect(trans.deal)) { deal_type =HistoryDealGetInteger(trans.deal,DEAL_TYPE); deal_volume =HistoryDealGetDouble(trans.deal,DEAL_VOLUME); deal_magic =HistoryDealGetInteger(trans.deal,DEAL_MAGIC); } else return; if (deal_type == DEAL_TYPE_BUY && deal_magic == MagicNumber) current_position += deal_volume; if (deal_type == DEAL_TYPE_SELL && deal_magic == MagicNumber) current_position -= deal_volume; } コードを全部見せてください。 Renat Akhtyamov 2017.01.10 14:17 #7132 こんにちは。誰が知っている - インジケータとどのように多くの最大でゼロバーの右側にバーを表示する方法?(する価格予想)。 fxsaber 2017.01.10 14:29 #7133 dimnik:速度に悪い影響を与えるのはHistoryDealSelectでしょうか?どうすれば減速を解消できるのか?開発者は、History関数の呼び出しを最小限にすることを推奨しています(高価です) - Historyキャッシュによって。kodobase (MT4Orders)で動作するソリューションを投稿しましたが、おそらくあなたには合わないでしょう。キャッシュを使用してもラグが発生したことはありません。しかし、OnTradeTransactionは 最適に書かれていないにもかかわらず、遅くなることはないはずです。 Alexey Viktorov 2017.01.10 14:32 #7134 Renat Akhtyamov:こんにちは。誰が知っている - インジケータとどのように多くの最大でゼロバーの右側にバーを表示する方法?(する価格予測)。 最後のバーの開始 時間にPeriodSeconds()を追加し、そこにグラフィカルなオブジェクトでローソクを描画します。右側に最大金額が表示されます。ただ、出口がある場合、どのように表示されるかは確認していません。おそらく、それ自体を考慮すべきなのでしょう。 Renat Akhtyamov 2017.01.10 15:42 #7135 Alexey Viktorov: 最後のバーの開始 時間にPeriodSeconds()を追加し、そこにグラフィカルなオブジェクトでローソクを描画します。せいぜい右側に見える程度でしょう。ただ、出口がある場合、どのように表示されるかは確認していません。おそらく、1つは考慮に入れておく必要があります。 ありがとうございます、持ってます Renat Akhtyamov 2017.01.10 23:24 #7136 Alexey Viktorov: 最後のバーのオープン 時間にPeriodSeconds()を追加し、そこにローソク足を描画します。せいぜい、右側に表示される程度です。しかし、その外観は確認していない。おそらく、考慮する必要があるのでしょう。チャート上では継続を描きますが、残念ながらインジケーターウィンドウでは描けません。もちろん私が間違っているのかもしれませんが...。どうでしょう。インジケーターの線をゼロバーを超えて右側に続けることはできますか? Renat Akhtyamov 2017.01.11 08:00 #7137 誰が知っている - それは、ゼロバーを超えて右側に指標線を継続することが可能ですか? Alexey Viktorov 2017.01.11 08:18 #7138 Renat Akhtyamov: インジケーターラインは、ゼロバーを超えて右側に伸ばすことができるのでしょうか? できます。シフトを設定することは可能ですが、存在しない値で計算することはおそらく不可能であり、インジケータは時間を使用しません。だから、グラフィカルな要素を使ったバー表示の話をしたんです。ObjectCreate() には、ウィンドウ番号(サブウィンドウ)と時刻の両方が含まれています。グラフィカルな要素を作成する際には、特に問題はないはずです。 Renat Akhtyamov 2017.01.11 08:26 #7139 Alexey Viktorov: できます。ずらすことはできますが、おそらく存在しない値で計算され、その時間はインジケータ表示には使われません。だから、グラフィカルな要素を使ったバー表示の話をしたんです。ObjectCreate()には、ウィンドウ番号(サブウィンドウ)と時刻の両方が含まれています。したがって、グラフィカルな要素を作成する際に問題はないはずです。チャートウィンドウでは、タイムスタンプを利用して、将来の目的のバーを参照することができます。それが功を奏した。しかし、インジケーターウィンドウで同じことができません。例:インジケーターバッファに-1, -2, などのインデックスで値を書き込むことができない。問題はこれです。原理的には明らかです。解決策は、グラフィカルなオブジェクトによってインジケータを作成することです。 Artyom Trishkin 2017.01.11 09:30 #7140 Renat Akhtyamov:チャートウィンドウでは、タイムスタンプを利用して、将来の目的のバーを参照することができます。それが功を奏した。しかし、インジケーターウィンドウで同じことができません。例:インジケーターバッファに-1、-2などのインデックスで値を書き込むことができない。問題はこれだ。原則的にはクリアしています。解決策は、グラフィカルなオブジェクトでインジケータを作成することです。 2番目のバッファを通常の値で計算し、例えば("未来 "を表示するために10本のバーを計算したい場合)、このバッファをBuff[9] -- Buff[8] -- Buff[n] -- Buff[0] の値で計算し、このバッファに0以外のオフセットを付けて表示します。バッファオフセットを将来の希望する小節 数に設定する(この例では10)。 1...707708709710711712713714715716717718719720721...1504 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
OnTradeTransactionを使用 することで、不思議と最適化時間が変化しています。15Mのシステム、非常にシンプル、年間履歴、1回の実行は0.3〜0.4秒で発生します。
最適化スタート後、最初の200~300本は1秒以下で進み、次のものは15~20秒まで遅くなります(50回!)。
プロセッサのオーバーヒートやトロトロ感はなく、メモリは半分以上空いています(16GBから)。
OnTradeTransaction ハンドラを使用する前は、このようなことはありませんでした。小さな時間枠のより複雑な Expert Advisor でさえ、ほぼ同じ速度で最適化されていました。
HistoryDealSelectはそれほど速度に影響するのでしょうか?どうすればラグを解消できるのか?
const MqlTradeRequest &request,
const MqlTradeResult &result)
{
if( trans.type != TRADE_TRANSACTION_DEAL_ADD) return;
ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
long deal_type =0;
double deal_volume =0;
long deal_magic =0;
if(HistoryDealSelect(trans.deal))
{
deal_type =HistoryDealGetInteger(trans.deal,DEAL_TYPE);
deal_volume =HistoryDealGetDouble(trans.deal,DEAL_VOLUME);
deal_magic =HistoryDealGetInteger(trans.deal,DEAL_MAGIC);
}
else
return;
if (deal_type == DEAL_TYPE_BUY && deal_magic == MagicNumber) current_position += deal_volume;
if (deal_type == DEAL_TYPE_SELL && deal_magic == MagicNumber) current_position -= deal_volume;
}
こんにちは。
誰が知っている - インジケータとどのように多くの最大でゼロバーの右側にバーを表示する方法?(する価格予想)。
速度に悪い影響を与えるのはHistoryDealSelectでしょうか?どうすれば減速を解消できるのか?
開発者は、History関数の呼び出しを最小限にすることを推奨しています(高価です) - Historyキャッシュによって。
kodobase (MT4Orders)で動作するソリューションを投稿しましたが、おそらくあなたには合わないでしょう。
キャッシュを使用してもラグが発生したことはありません。
しかし、OnTradeTransactionは 最適に書かれていないにもかかわらず、遅くなることはないはずです。
こんにちは。
誰が知っている - インジケータとどのように多くの最大でゼロバーの右側にバーを表示する方法?(する価格予測)。
最後のバーの開始 時間にPeriodSeconds()を追加し、そこにグラフィカルなオブジェクトでローソクを描画します。せいぜい右側に見える程度でしょう。ただ、出口がある場合、どのように表示されるかは確認していません。おそらく、1つは考慮に入れておく必要があります。
最後のバーのオープン 時間にPeriodSeconds()を追加し、そこにローソク足を描画します。せいぜい、右側に表示される程度です。しかし、その外観は確認していない。おそらく、考慮する必要があるのでしょう。
チャート上では継続を描きますが、残念ながらインジケーターウィンドウでは描けません。
もちろん私が間違っているのかもしれませんが...。
どうでしょう。インジケーターの線をゼロバーを超えて右側に続けることはできますか?
インジケーターラインは、ゼロバーを超えて右側に伸ばすことができるのでしょうか?
できます。ずらすことはできますが、おそらく存在しない値で計算され、その時間はインジケータ表示には使われません。だから、グラフィカルな要素を使ったバー表示の話をしたんです。ObjectCreate()には、ウィンドウ番号(サブウィンドウ)と時刻の両方が含まれています。したがって、グラフィカルな要素を作成する際に問題はないはずです。
チャートウィンドウでは、タイムスタンプを利用して、将来の目的のバーを参照することができます。それが功を奏した。
しかし、インジケーターウィンドウで同じことができません。例:インジケーターバッファに-1, -2, などのインデックスで値を書き込むことができない。
問題はこれです。
原理的には明らかです。解決策は、グラフィカルなオブジェクトによってインジケータを作成することです。
チャートウィンドウでは、タイムスタンプを利用して、将来の目的のバーを参照することができます。それが功を奏した。
しかし、インジケーターウィンドウで同じことができません。例:インジケーターバッファに-1、-2などのインデックスで値を書き込むことができない。
問題はこれだ。
原則的にはクリアしています。解決策は、グラフィカルなオブジェクトでインジケータを作成することです。