#include <Trade\Trade.mqh>
voidOnTick()
{
static CTrade Trade;
constdatetime NowTime = TimeCurrent();
if (Trade.Buy(1) && Trade.PositionClose(_Symbol) && HistorySelect(NowTime, NowTime))
{
Print(HistoryDealsTotal()); // 0 - это при том, что мы открыли и закрыли позицию в NowTime-времяExpertRemove();
}
}
intOnInit( void )
{
// Если Агент не совпадает с билдом компиляции, отказываемся от его услугif (TerminalInfoInteger(TERMINAL_BUILD) != __MQLBUILD__)
return(INIT_AGENT_NOT_SUITABLE);
//....
それはいい芸当ですね。コツは、TParentにパターンを適用 することです。こんなの初めてです。
まあ、多重継承ではないんですけどね。実際はBase→A→B→C→Xという連鎖です。十分であれば、直接使うことを誰が妨げるのですか?
まあ、多重継承ではないんですけどね。実際はBase→A→B→C→Xという連鎖です。十分であれば、直接使うことを誰が妨げるのですか?
簡潔さ。
簡潔さ。
大賛成です。IMHOは、4つの後継クラスを直接処方した方が、短時間で明確な結果を得られると思います。
ここは大賛成です。IMHOは、4つの後継クラスを直接処方した方が、短時間で明確な結果を得られると思います。
突然、複数継承が導入された場合でも、たった1行の小さな変更で済みます。
もし、突然多重継承が導入されたとしても、たった一行の小さな置換で済みます。
フォーラムには、投票に加えて、賭け事のフォームがないのが残念です。選択肢のある投票のようなものですが、答えに対してアカウントにいくつかの「小銭」がブロックされます。正しい選択肢を選んだ人は、イベント終了後に敗者復活戦を受けることができる;-)。導入はしないと思います。
まあ、多重継承ではないんですけどね。実際はBase→A→B→C→Xという連鎖です。十分であれば、直接使うことを誰が妨げるのですか?
もうひとつ、付け加えておきたいことがあります。多重継承の完全な代替案として、ghost演算子をオーバーロードすることで(より柔軟な機能を)実装することができる。しかし、MQはなぜかこのオーバーロード機能を追加してくれません。しかも、具体的な回答もなく、無視されるだけです。
こんなシチュエーションもあります
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
バグ、バグ、質問
fxsaber さん 2017.07.24 09:27
EAは1641でコンパイルされており、高速な取引履歴が実装されています。
Agent build 1596になると、ヒストリーの動作がVERYスローになり、結果的に最適化が何倍も遅くなることはないのでしょうか?
より一般的なケースとして、クラウド上での最適化は、時間だけでなく計算量でも異なる結果が出ることがあります。最適化の結果が1回の実行で一致しないという声を聞くことがあります。
これは、最適化に関与するAgentと、1回のランに関与するローカルAgentが異なるビルド番号を持つ場合があるためと思われます。
そして、ビルドごとに異なるバグが含まれています。例えば、現在は関連性があるが、数年前のビルドでは存在しなかったバグを紹介します。
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
バグ、バグ、質問
fxsaber さん 2017.07.17 23:08
またしてもテスターでHistorySelectのバグが発生。1626年にはなかったようです。1629年にはあります。
従って、最適化中にEAがエージェントb1626にヒットした場合、ある結果を示すかもしれませんが、ローカルエージェントb1641シングルランで実行すると、全く別の結果を示すかもしれません。
このことから、最適化の前に、自分のEAをどのビルドに最適化したいのか、また、どのビルドに最適化しないのかを意識しておく必要があると結論付けられます。
開発者は、不適切なエージェントのためのカッター、INIT_AGENT_NOT_SUITABLEを 提供しています。
したがって、クラウドベースの最適化のために、OnInit でTerminalInfoInteger(TERMINAL_BUILD) と目的の値との マッチングチェックを記述することをお勧めします。
しかし、自分のニーズにマッチしたチェックのリストを知ることはほとんど不可能なので、ほとんどの場合、こう書くでしょう。
しかし、それは悪い解決策でもあります。より柔軟な解決策は、最適化の際にビルド番号をAgentに 渡すことです。
一般に、警戒が必要です。
SZY.各Agentの実行のトレードレポートを作成し、最適化の際にそれを正しく把握することが可能です。これにより、一度の実行でクラウドエージェントの結果がローカルのものと異なる理由をさらに理解することができます。本ライブラリを 使用することで、最適化時やシングルラン時にこのようなレポートを自動生成することが可能です。
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
バグ、バグ、質問
レナート・ファットフーリン さん 2017.07.25 08:26
クラウダでは定期的に古いビルドを切断して更新を待っていますが、これは非常に早く、気づかないうちに終わってしまいます。デバッグ時(デバッグとは限らないが)、テスターでテスト間隔を早く縮めたいとき、私は以下のような機能を使っている。
デバッグ時(デバッグとは限らないが)、テスターでテスト間隔を早く縮めたいとき、私は以下のような機能を使っている。