私は次の行を追加した。
//+------------------------------------------------------------------+ void CheckPos(string sym, string & TradeFutures, double lot) { if(SymbolInfoInteger(TradeFutures,SYMBOL_EXPIRATION_TIME)-TimeCurrent()<hours_before_expiration*60*60) { trade.PositionClose(TradeFutures); Sleep(3000); SymbolSelect(TradeFutures,false); TradeFutures=NextFutures(sym); } if(!PositionSelect(TradeFutures)) { if(lot>0) trade.Buy(lot,TradeFutures); if(lot<0) trade.Sell(-lot,TradeFutures); ChartSetSymbolPeriod(0,TradeFutures,PERIOD_CURRENT); Sleep(3000); } } //+------------------------------------------------------------------+
すべてがうまく切り替わっている。
例をありがとう。
Expert Advisorが複数の商品を取引する場合、チャートを切り替える意味はないと思います。糊付けすることは可能です。
これは一例で、オーナー次第です。
実際の取引では、私ならスリープを捨てて普通に注文の約定チェックをします。しかし、私は例の本質をオーバーロードしたくなかったので、それは別のトピックです。
しかし、日中にポジションを決済 し、すべてのリミッターを外し、ロボットが取引スケジュールを変更して別の先物に切り替え、新しい先物でクリーンシートで新しい取引を開始するようなアルゴリズムが必要だ。
私はこのすべてをやったかのように、しかし、私はそれを回避する方法を見つけることができない問題があった
例えば
ChartSetSymbolPeriod(0,TradeFutures,PERIOD_CURRENT);
チャートは変わりますが、例えばM5 M30など、移行後にタイムフレームをクリックしようとすると、ロボットは次のティックで先物チャートを変更したTFを返します。
また、設定で取引商品を強制的に選択できるようにするつもりでした。例えば、オイルを選択したのですが、ロボットはrtsに投げられ、初期化するとチャートはオイルに変わります。しかし、満期時に別の先物に切り替えるとループが発生し、ロボットはBR-5.18に設定された状態で初期化され、その後、チャートの変更とともに6.18に変更され、ここで各ティックが6.18から5.18に変更され、また元に戻ります。
恐らく、チェックやフラグなどで行われているのでしょうが、どうすればいいのかまだわかりません。正しい方向へのキックをいただけるとありがたいです。この移行と取引スケジュールの変更のアルゴリズムは、FORTSで取引するすべてのロボットにデフォルトで組み込まれるべきで、もしかしたら開発者自身がライブラリに追加してくれるかもしれません。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
Futures Portfolio Control Expiration:
MOEX FORTS市場用のポートフォリオEAです。
作者: Sergey Chalyshev