我添加了一行
//+------------------------------------------------------------------+ 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); } } //+------------------------------------------------------------------+
一切切换正常。
感谢您提供的示例。
Sergey Chalyshev:
如果 Expert Advisor 交易多个工具,我认为没有必要切换图表。可以将其放在胶水上。
这只是一个例子,具体情况由用户自己决定。
在实际交易中,我会扔掉 Sleeps,正常检查订单执行情况。但我不想过多讨论这个例子的本质,这是另一个话题。
我完全同意您的观点,但我需要一种算法,能在白天平仓,移除所有限价器,机器人切换到另一种期货,并改变交易时间表,然后在新的期货上以干净的单子开始新的交易。
好像我已经完成了所有这些,但有一个问题我不知道如何解决。
例如,添加
ChartSetSymbolPeriod(0,TradeFutures,PERIOD_CURRENT);
图表改变了,但如果我尝试在转换后点击时间框架,例如 M5 M30 等,机器人会在下一个跳转点返回改变期货图表的 TF。
我还计划在设置中强制选择交易品种,例如,我们选择石油(根据您的选择),但机器人被抛向 rts,当初始化时,图表变为 oil....我已经做了所有这些,但在到期时切换到另一种期货时出现了循环,机器人初始化时设置为 BR-5.18,然后随着图表的变化变为 6.18,在这里每个 tick 开始从 6.18 变为 5.18,然后返回....。
在这个问题上我还不是很强,我没有在数据库中找到此类工作的例子,也许是通过任何检查、标志等完成的,但我还没有想出如何去做。如果能帮我找到正确的方向,我将感激不尽,我想我不是唯一一个这样做的人...如果能看到 V2 的扩展示例就更好了,我想每个人都会同意我的观点,即每一个在 FORTS 上交易的机器人都应该默认嵌入这种过渡和更改交易时间表的算法,也许开发人员自己会将其添加到他们的库中。
亲爱的程序员
我正在莫斯科证券交易所的报纸上测试 DEMO,它在默认设置下运行得非常好。- 但我有一些疑问:
1 - 如何操作少于 3 份文件(例如 2 份),甚至多于 3 份文件?
2 - 能否设置为在其他国家的交易所进行交易?
感谢您的贡献和提供这款优秀的 EA。
感谢
P.Campozana
期货投资组合控制移仓:
一款用于莫斯科证券所 FORTS 市场的投资组合 EA。
作者: Sergey Chalyshev