文章 "交易中的道义期望" - 页 2

 

口号很好,很有趣,感谢作者。公式和示例比代码实现更容易上手。

我没有读到作者以前的文章。我一定要读一读。再次感谢。

Aleksej Poljakov
Aleksej Poljakov
  • www.mql5.com
Профиль трейдера
 

感谢您的文章。

我知道,手数大小会受到历史上一系列盈利和亏损交易的强烈影响,并被用于计算手数。因此,随机抽取交易结果的结果很有意思。我认为,通过度量的结果将大不相同。

 
Aleksey Vyazmikin #:

感谢您的文章。

我知道,手数大小会受到历史上一系列盈利和亏损交易的强烈影响,并被用于计算手数。因此,随机抽取交易结果的结果很有意思。我认为,通过度量的结果将大不相同。

在脚本中,交易结果是随机生成的。同时,脚本本身并不知道在计算手数时最初设置的概率是多少。最糟糕的情况就是连续几次交易失败,尤其是在一个系列的末尾。最简单的方法是在计算时,不取全部存款,而是取其中的一个百分比......。比方说 5-10%,这样平衡曲线会更稳定--不会出现大的亏损,但利润也会减少。

 
Aleksej Poljakov #:

在脚本中,交易结果是随机生成的。同时,脚本本身也不知道在计算手数时最初设定的概率是多少。最糟糕的情况就是连续几次交易失败,尤其是在一个系列的末尾。最简单的方法是在计算时,不取全部存款,而是取其中的一个百分比......。比方说 5-10%,这样平衡曲线会更稳定--不会出现大的亏损,但利润也会减少。

我正在写文章的最后一部分:

让我们一起来看看风险如何影响交易。为了进行测试,我们将在两条移动平均线的交叉点上使用一个简单的智能交易系统。EA 的测试参数如下:

同样,重要的是要检查计算历史成功/失败的窗口,包括它是如何变化的。比方说,在策略测试器中选择一个策略后,10 年内都不会计算比例。

 
作者做得很好,请将文章加入书签。
 

这是一种有趣的方法。但一个问题随之而来:道德期望与数学期望具有相同的物理意义吗?文章中对数学期望有两种解释--通过和(如文章开头的 11 达卡特)和通过点(公式 p*TP - (1-p)*SL)。没有关于道德期望的解释,但根据基本公式判断,道德期望是和,因为它与存款相对应。

然后是下一个问题。在我看来,我想考虑一个有要求的问题,这在文章中是没有的。给定一个存款,给定一个期望的道德期望值,作为存款的一个分数(先生 = 分数 * 存款)和一个手数。针对不同的中奖概率值,绘制 SL/TP 曲线。显然,对于概率 0.5,任务没有定义。

我试着随手做了一下,可能有错误。在根定义区域外,到处都是奇怪的数字或 NaN。

例如,这里是从 SL 计算 TP 的一侧:

#property script_show_inputs

input double Amount = 10000;
input double MoralExpectationPercent = 0.01;
input double Lot = 0;
input double WinProbability = 0.75;

void OnStart()
{
   const double pv = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE)
      * SymbolInfoDouble(_Symbol, SYMBOL_POINT) / SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE);
   const double lot = (Lot == 0 ? SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN) : Lot);

   const double sls[] = {10, 100, 1000};

   for(int i = 0; i < ArraySize(sls); ++i)
   {
      const double sl = sls[i];
      const double slp = sl * lot * pv;
      const double y1 = (1 + MoralExpectationPercent) * Amount * MathPow(Amount - slp, WinProbability - 1);
      const double tp = (MathPow(y1, 1 / WinProbability) - Amount) / (lot * pv);
      Print(sl, " ", tp);
   }
}

输出:

10.0 13358.8842517167
100.0 13389.287146464994
1000.0 13693.516911708502
 
Stanislav Korotky #:

这是一种有趣的方法。但一个问题随之而来:道德期望与数学期望具有相同的物理意义吗?文章中对数学期望有两种解释--通过和(如文章开头的 11 达卡特)和通过点(公式 p*TP - (1-p)*SL)。没有关于道德期望的解释,但从基本公式来看,道德期望是和,因为它与存款相对应。

然后是下一个问题。在我看来,我想考虑一个有要求的问题,这在文章中是没有的。给定一个存款,给定一个期望的道德期望值,作为存款的一个分数(先生 = 分数 * 存款)和一个手数。针对不同的中奖概率值,绘制 SL/TP 曲线。显然,概率为 0.5 时问题并不明确。

我试着随手做了一下,可能有错误。结果不是出现奇怪的数字就是出现 NaN - 这超出了根定义的范围。

例如,从 SL 方面计算 TP:

输出:

string const double y1 = (1 + MoralExpectationPercent) * Amount * MathPow(Amount - slp, WinProbability - 1);

WinProbability - 1 总是负值......而且应该是严格的非负值

这样更正确

附加的文件:
 
Stanislav Korotky #:

这是一种有趣的方法。但一个问题随之而来:道德期望与数学期望具有相同的物理意义吗?文章中对数学期望有两种解释--通过和(如文章开头的 11 达卡特)和通过点(公式 p*TP - (1-p)*SL)。没有关于道德期望的解释,但从基本公式来看,道德期望是和,因为它与存款相对应。

然后是下一个问题。在我看来,我想考虑一个有要求的问题,这在文章中是没有的。给定一个存款,给定一个期望的道德期望值,作为存款的一个分数(先生 = 分数 * 存款)和一个手数。针对不同的中奖概率值,绘制 SL/TP 曲线。显然,概率为 0.5 时问题并不明确。

我试着随手做了一下,可能有错误。结果不是出现奇怪的数字就是出现 NaN - 这超出了根定义的范围。

例如,从 SL 方面计算 TP:

输出:

第二个错误是我们不能赋予任何道德期望.....。

道德预期总是小于数学预期。随着存款的增加,它们会相互接近。因此,这个问题被严格简化为以下条件:如果数学期望为正,则得到正的道德期望

 
Aleksej Poljakov #:

字符串常量 double y1 = (1 + MoralExpectationPercent) * Amount * MathPow(Amount - slp, WinProbability - 1);

WinProbability - 1 总是负数......而且应该是严格的非负数

这样更正确

我似乎遵循了严格的数学变换--我看不出哪里出错了?现在,我们暂且把数值本身的含义放在括号后面,只抽象地看一下这个公式。

原来的公式,用F 存款 D 的替代部分代替原来的先生:F * D = (D + L * TP * PV)^p * (D - L * SL *PV)^(1-p) - D

我们得到的道德期望值 是几十,为什么我们不能用存款的百分比来表示任何数字呢?我们可以。

接下来我们得到

(1+F)*D = (...)^p * (...)^(1-p)

(1+F)*D / (...)^(1-p) = (...)^p

请注意,1 / x^y -> x^-y,因此我们可以去掉分数,虽然它对计算机的计算并不重要,但去掉分数的公式更容易阅读。

(1+F)*D * (...)^(p-1) = (...)^p

[ (1+F)*D * (D - L * SL *PV)^(p-1)] ^ (1/p) =(D + L * TP * PV)

在我的代码中,方括号内的内容是变量 y1。

您的代码版本中的公式不完整。

 
Stanislav Korotky #:

我似乎遵循了严格的数学变换--我看不出哪里出错了?现在,我们暂且不考虑括号中数值本身的含义,只把公式作为一个抽象概念来看。

原来的公式,用F 存款 D 的替代部分代替原来的先生:F * D = (D + L * TP * PV)^p * (D - L * SL *PV)^(1-p) - D

我们得到的道德期望值 是几十,为什么我们不能用存款的百分比来表示任何数字呢?我们可以。

接下来我们得到

(1+F)*D = (...)^p * (...)^(1-p)

(1+F)*D / (...)^(1-p) = (...)^p

请注意,1 / x^y -> x^-y,因此可以去掉分数,虽然它对计算机的计算并不重要,但去掉分数的公式更容易阅读。

(1+F)*D * (...)^(p-1) = (...)^p

[ (1+F)*D * (D - L * SL *PV)^(p-1)] ^ (1/p) =(D + L * TP * PV)

我将代码中方括号内的内容放在变量 y1 中。

您的代码中的公式不完整。

如果我们对交易赋予某种期望的道德期望值,那么我们(根据道德期望值小于数学期望值的特性)就会得到这个不等式:

p* L * TP * PV -(1-p)*L * SL *PV > F*D

也就是说,我们不再寻找使道德期望值变为正值的 TP 值,而是开始寻找使数学期望值大于给定值的 TP 值。