错误、漏洞、问题 - 页 2319

 
你好!你能告诉我如何解决价格显示不正确的错误吗?它甩掉了所有的印第安人。荣华富贵
 
Slava:

符号设置,而不是图形。

在市场概览中,从符号上下文菜单中选择 "符号规范"。

 
Igor Semyonov:

谢谢你。

请从头展示问题发生时的终端日志

 
Slava:

谢谢你。

请从头展示问题发生时的终端日志

我已经通过私人信息 发送了日志文件。

 
Igor Semyonov:

我已经通过私人信息 发送了日志文件。

是的,谢谢你。

日志都是清楚的。

告诉我,你描述的情况是否还在继续?

 

Volume没有DoubleToString(Volume, 2)。截图是欧元兑美元。

 
Slava:

是的,谢谢你。

从日志上看,一切都很清楚。

告诉我,你描述的情况是否还在继续?

重新启动终端后,到目前为止一切正常。

 

关于交易、自动交易系统和交易策略测试的论坛

虫子、虫子、问题

pantural, 2018.11.01 16:03

你好,亲爱的MT开发人员,我想报告一个计算夏普比率的算法的错误。在Aleksey Vyazmikin 先生的附录报告中,SR=0.29,但根据我的计算,它大约是3.7-3.8(取决于是否为零PnL),这表明在没有标准差(sqrt(length))的比例系数的情况下,错误是由于平均回报不取决于系列的长度,它收敛,并且RMS随着sqrt(length)增加而增加

C++

double SharpRatio(vector<double> pnl)

{

double avret = 0;

for (int i = 0; i < pnl.size(); ++i) avret += pnl[i];

avret /= pnl.size();


double var = 0;

for (int i = 0; i < pnl.size(); ++i) var += pow(pnl[i] - avret, 2);

var = sqrt(var / pnl.size()) / sqrt(pnl.size());


return  avret / var;

}

让我们来看看两个相同的TC。我们同时启动它们。一天后,他们都显示了pnl阵列。第一个被阻止了,第二个没有。又过了一天,第二个人向我们展示了完全相同的pnl。

也就是说,第一个人有pnl[],第二个人有pnl[]+pnl[]。也就是说,第二天的交易与第一天的交易完全相同。


那么根据建议的公式,第二个TS的夏普比率将比第一个TS的夏普比率少sqrt(2)(2的根)。但他们的交易情况是一样的!

 
fxsaber:

取两个相同的TC。在同一时间运行它们。24小时后,他们都显示出一列pnl。第一个人被阻止了,第二个人没有。又过了一天,第二个人显示出完全相同的pnl。

也就是说,第一个人有pnl[],第二个人有pnl[]+pnl[]。也就是说,第二天的交易与第一天的交易完全相同。


那么根据建议的公式,第二个TS的夏普比率将比第一个TS的夏普比率少sqrt(2)(2的根)。但他们的交易情况是一样的!

这个笑话是怎么说的?"你必须趁他们小的时候杀了他们" .

好吧,让我们看看 所附文件中的例子。因为在理论上,这一切看起来都很可怕,直到你用手去感受它。

该文件中有 144笔交易,其夏普值为0.29(该网站显示的准确度为小数点后2位,这没关系--没有人需要小数点后5位,在这种情况下,小数点后2位就足以成为比较两种策略的良好衡量标准)。

夏普的计算方法是 K/STD 比率,其中。

  • K- 交易历史的平均增长率
  • STD 是交易历史中收益的标准偏差

假设我们有两倍的交易是以前交易的副本。这意味着,现在我们有288笔交易=144*2。同时,K 也不会改变。因此,我们只有通过改变STD才能改变夏普。

初始STD=MathSqrt(X2/(n-1)),其中。

  • X2是偏离平均值X_aver的平方之和。
  • n - 茶杯的数量 == 144

也就是夏普=数学平方(X2/(144-1))= MathSqrt(X2/143)

我们的交易数量增加了一倍,所以对于两倍大的历史,新的夏普是这样计算的

SharpeNew=MathSqrt(X2_new/(2*144-1))

其中X2_new=2*X2。因此夏普新/夏普比率 = MathSqrt(X2/(144-1)) / MathSqrt(X2_new/(2*144-1)) =

MathSqrt(X2/(144-1))  / MathSqrt(2* X2/(2*144-1)) =  MathSqrt(X2/(143))  / MathSqrt(2* X2/(283))= MathSqrt(X2*283/(2*143*X2))= MathSqrt(283/286)= 0.994741 

即使我把分母和分子混在一起,SharpeNew也会在0.292919-0.296025 的范围内,也就是说,差异会在第三位数的某个地方。

但不是10-20倍。你自己看看我哪里犯错了。

 
Rashid Umarov:

有什么好笑的?"应该趁他们还小的时候把他们杀掉。"

你误解了我的意思。

关于交易、自动交易系统和策略测试的论坛

虫子、虫子、问题

fxsaber, 2018.11.06 13:23

那么根据建议的公式, 第二个TS的夏普比率 将比第一个TS少sqrt(2)(2的根)。但他们的交易情况是一样的!


我指的是引用自C++的公式。


而在MT使用的公式中,当然不会减去一个。那么拟议中的例子,无论有多少个144的间隔,夏普都会是一样的。