Функция setks() вычисляет массив прибылей сделок, исходя из истории торговли.
bool setks(double &k[]) { if(!HistorySelect(0,TimeCurrent())) return false; uint nhd=HistoryDealsTotal(); int nk=0; ulong hdticket; double capital=TesterStatistics(STAT_INITIAL_DEPOSIT); long hdtype; double hdcommission,hdswap,hdprofit,hdprofit_full; for(uint n=0;n<nhd;++n) { hdticket=HistoryDealGetTicket(n); if(hdticket==0) continue; if(!HistoryDealGetInteger(hdticket,DEAL_TYPE,hdtype)) return false; if(hdtype!=DEAL_TYPE_BUY && hdtype!=DEAL_TYPE_SELL) continue; hdcommission=HistoryDealGetDouble(hdticket,DEAL_COMMISSION); hdswap=HistoryDealGetDouble(hdticket,DEAL_SWAP); hdprofit=HistoryDealGetDouble(hdticket,DEAL_PROFIT); if(hdcommission==0.0 && hdswap==0.0 && hdprofit==0.0) continue; ++nk; ArrayResize(k,nk,NADD); hdprofit_full=hdcommission+hdswap+hdprofit; k[nk-1]=1.0+hdprofit_full/capital; capital+=hdprofit_full; } return true; }
突出显示的假设是,一些利润为零的平仓 交易没有包含在样本中,而一些开仓交易包含在样本中。
试试 DEAL_ENTRY。
在分析蒙特卡罗交易时,是否必须计算掉期和佣金?它们没有系统价值。
我建议使用开盘价和收盘价的比率作为利润。这里我们可以讨论 "是否应该考虑手数?
Aleksey Nikolayev:
当然,交易的独立性只是一种理想化。如果两笔交易在时间上没有太多重叠,那么我们就可以认为它们是独立 的,因为价格在第一近似值中可以被视为具有独立增量的随机过程。也就是说,独立性和随机性是由交易的退出价格决定的。为了明确起见,这里的交易在 MT4 中称为头寸。我在文章 中已经尝试对交易的独立性这一主题进行了一些考虑。
当然,交易的独立性只是一种理想化。如果两笔交易在时间上没有太多重叠,那么我们就可以认为它们是独立 的,因为价格在第一近似值中可以被视为具有独立增量的随机过程。也就是说,独立性和随机性是由交易的退出价格决定的。为了明确起见,这里的交易在 MT4 中称为头寸。我在文章 中已经尝试对交易的独立性这一主题进行了一些考虑。
但是,其他因为已经开仓而没有开仓的交易又是怎么回事呢?那些根据相同的环形逻辑信号开仓的交易,只是幸运地在交易信号发出时没有其他交易开仓--它们有什么特别之处吗?
这就是矛盾所在。将交易信号货币化也许是合理的。它们确实互不相关,因为它们只是价格的函数。
fxsaber:
这篇文章的做法恰恰是,我们不去探究智能交易系统的逻辑,而是 "原封不动 "地接受它的工作结果。您的方法可能会得到更准确的结果,但需要更多的编程和结果分析工作。
但是,那些因为已经开仓而没有开仓的交易又是怎么回事呢?那些根据同样的环形逻辑信号开仓的交易,只是幸运地在开仓信号发出时没有其他交易开仓--它们有什么特别之处吗?
这就是矛盾所在。也许将交易信号货币化是合理的。它们确实互不依赖,因为它们只是价格的函数。
新文章 蒙特卡洛方法在交易策略优化中的应用已发布:
在交易账户上运行 EA 交易之前,我们通常会在报价历史上测试和优化它。然而,这里会有一个合理的问题: 过去的结果怎么会对我们的未来有所帮助呢?本文描述了使用蒙特卡洛方法来为交易策略的优化构建自定义的标准,另外,还会探讨 EA 交易的稳定性标准。
让我们通过图片来解释上面的内容,它显示了几条资金曲线,它们中的每个都是根据生成的交易序列决定的。为了更方便,我使用不同的颜色对曲线做了标记,实际上,它们的数量要大得多 — 有好几万。对于它们中的每一个,我们都计算所需的参数并根据其整体性做出统计结论,很明显,这些特性中最重要的就是最终的利润。

其他形式的概率形式化和进一步的EA操作建模也是可能的,例如,不是通过交易序列,我们可以模拟价格序列和研究EA所获得的总利润。可以根据要解决的任务来选择生成价格系列的原理,然而,这种方法需要更多的计算资源。此外,MetaTrader 目前还没有提供使用随机EA的常规方法。作者:Aleksey Nikolayev