文斯的地段计算 - 页 9

 
Roman.:

当完整的文斯手数计算功能完成后,我希望看到一个EA的例子,比如说,每个月(甚至每周)计算手数,并管理未完成的交易!这就是文斯手数计算。:))

还有一种专家顾问的工作方式,没有根据文斯的手数计算,即永久手数或手数的增加取决于存款的百分比。

这个实验的结果很有意思。

毕竟,据我所知,这就是这一切的开始!;)

 
MaxZ:

我太懒了,没有把代码粘贴到EA中,自己检查一下!:)))

我还没有一个合适的专家顾问。我只有几个想法。这就是为什么我采取了一个标准的移动平均线,没有对其进行优化,而是选择了一个有利可图的时期。

当我明白TWR不会重置为 "1 "时,我最后尝试的代码如下。

没有TWR阵列。

你会等很久才会有溢出的机会!虽然它可能根本就不在那里......。


谢谢你,马克西姆,我会检查的,还有一件事--变量D是历史上一笔交易的最大损失,因此这个结构必须要改变

      if (orderIndex == 0 || lastProfit < D)
         D = lastProfit;

即在历史循环中找到它的最大值(测试历史中最亏损的交易的最大亏损),并将其乘以系数,例如1.5,以准备在交易中做出更大的亏损,然后在进一步计算TTR时考虑其值(先前从订单历史 循环中获得)。

 TWR = 1+f*(-Mas_Outcome_of_transactions[orderIndex]/(D));

D - 它不是以前的(或第一次的损失),它是整个被测试的历史中每笔交易的最大损失;那么我们可以不用外部变量来计算专家顾问中的最佳F,以确定以后(从当前时刻开始)要开的手数大小。

 
MaxZ:

当完整的文斯手数计算功能完成后,我希望看到一个EA的例子,比如说,每个月(甚至每周)计算手数,并管理未完成的交易!这就是文斯手数计算。:))

还有一种专家顾问的工作方式,没有根据文斯的手数计算,即永久手数或手数的增加取决于存款的百分比。

这个实验的结果很有意思。

毕竟,按照我的理解,这就是一切的开端!;)


是的,有许多MM的变体,例如这个--我把它包装在一个函数中(根据止损的大小,以%-本金的量来计算头寸。如果你有兴趣,我可以把这个fiu贴在这里。

一旦一切完成,我将检查它,我将在一个代码中发布它与猫头鹰的一些变体(包括MM的不同变体),我们将比较和检查它在一起...:-)))

当我成功完成R.Vince使用几何平均数计算最佳F时,我将在本周末给出相同设置和不同MM变体的同一EA的测试结果的例子。

 

Roman.:

谢谢你,马克西姆,我会检查的,还有一件事--D变量是历史上一次交易的最大损失,所以这个结构需要改变。

      if (orderIndex == 0 || lastProfit < D)
         D = lastProfit;
即在循环中找到它的最大值(在整个测试历史中损失最大的交易的最大损失)(为了不给外部变量带来任何麻烦)

这就是在这个结构中寻找最大损失的方法。我比较了报告和日志。一切都很合适。
 
MaxZ:
这就是在这种结构中寻求最大损失的方式。我正在比较报告和日志。这一切都很合适。

:-)))对...:-))我的眼睛已经被洗掉了...。:-))) 现在只是星期三...工作,工作,工作...:-)))
 

我向你展示了用MM的不同变体进行测试的结果,包括由R.Vince的几何平均数的metod--最优f的版本3。 你可以在你的EA中显示相同的手数计算功能,并比较获得的输出平衡变化值。这里的任务不是通过R.Vince的最佳f来显示与MM的猫头鹰操作,目的是编写一个f函数,正确计算最佳f,以及因此而产生的后续开单量。这里是外部变量。

extern string A3 = "Расчет лота по Р.Винсу"; // При количестве сделок на истории от 150 (при наличии репрезентативной выборки)
extern string A4 = "через значение оптимального f"; // метод геометрического среднего 
extern bool optimal_f = true;           // Торговать с расчетом последующих объемов лотов по методу Р.Винса: Да/Нет
extern double Transaction_number = 150; // номер сделки, с которого считаем последующие объемы открываемых позиций через 
                                        // оптимальное f. До этой сделки - минимальный лот.

在这里,在这个专家顾问(在拖车中,在МА的基础上,包括在MT终端的标准交付中)和报告中,实现了以下计算最佳f的方法。如果测试器或交易账户中的交易量超过了Transaction_number变量中指定的金额(根据后续订单被设置/打开的量的特征(利润/亏损),我们继续通过R.Vince计算手数。也就是说,每一个下一个订单都是以一个新的 f值开启的,因此也就有了新的 成交量。如果你对这种手数计算方法感兴趣,你应该考虑以下几点:我将举一个例子,这种手数计算方法是正确的,但新的 交易量不应该为每一个大于交易数量的连续交易 计算,而是如下(这只是一个例子,只有计算最佳f的方法是重要的):我们从2008年1月到2010年1月在H1上优化EA的参数,然后计算最佳f值和正向部分的头寸量,从然后,我们重复这个过程,即2008年1月至2010年6月--计算这个时期的最佳f,也就是30个月,下一个时期是15-25%--即最多7或8个月--我们使用新的常量 进行交易,这是这个新的计算时期的新的最佳f计算结果(在计算时期Transaction_number--它应该有一个数值,对应于样本代表性的概念,即200至500--已经是一个规范,IMHO)就这样--周期结束了,我们继续使用同样的方法在优化期的15-25%计算交易量--在这期间交易量是恒定的,与之前计算的最佳值f相对应,它们不会为每一个下一个交易重新计算。

变体。变体 №1 - 固定批量 - 0,1。

变动2--自由资金的一个百分比

extern double Lots = 0;
extern string A0 = "Вариант ММ";
extern string A1 = "Процент от своб. ср-тв";
extern string A2 = "с возможностью уменьшения Lots при проигрыше";
extern bool MaximumRisk_DecreaseFactor = true; //считать объем лотов от процента своб ср-тв и также с уменьшающим коэффициентом
                                  //(при его значении больше "0")  при предыщущей убыточной позиции на истории торгового счета
extern double MaximumRisk = 0.02; // процент от своб ср-тв 
extern double DecreaseFactor = 3; // уменьшающий коэфиициент при проигрыше для открытия очередной меньшей предыдущей по объему позиции

变化№3 - 由最优的f

关于计算方法的描述--见 "成本计算 "一章。31-33 - 在第2页的档案中的拖车 - "资本管理的数学 "一书。

在这方面,书中有一段有趣的话语。36:

"

有一种误解,认为如果你足够有效地分散投资,就可以完全避免损失。在某种程度上,确实可以通过有效的多样化来减轻损失,但永远无法完全避免。不要被误导。无论应用的系统有多好,无论你如何有效地分散投资,你仍然会遇到重大损失。其原因不是因为你们的市场系统是相互关联的,因为有些时候,当你认为不应该的时候,投资组合的大部分或全部市场系统会对你不利。试着找到一个有五年历史数据的投资组合,以便所有的交易系统都能以最佳f工作,而且最大的损失还不超过30%!这将是不容易的。使用多少个市场系统并不重要。如果你想在数学上做一切正确的事情,你必须准备损失你账户余额的30%至95%...:-))需要严格的纪律,而不是每个人都能遵守。

一旦交易者放弃交易恒定数量的合约,他就会面临交易数量的问题。无论交易员是否承认问题,它总是发生。交易恒定数量的合同不是一个解决方案,因为这样你永远无法实现几何级数的增长。因此,无论你喜欢与否,在下一次交易中交易多少的问题对每个人来说都将是不可避免的。简单地选择一个随机的数量会导致严重的错误。 最佳 f 是唯一数学上正确的解决方案"。

P.S. 将这个f转给你的专家,看一看,检查一下,与其他MM的变体比较一下结果,不要忘记在这里分享有趣的报告和结论 .....

附加的文件:
 

以下代码有一个注释:

lot = NormalizeDouble (( AccountFreeMargin ()/H)*Min_Lot, 1 );

我会将精度从“1”更改为“2”。毕竟,你也有 Min_Lot = 0.01?

现在尝试最后一次测试。


此代码还有一个注释。当亏损交易的百分比超过盈利交易的百分比时,不建议在手数计算中使用所有可用资金。

或者您需要在 Vince 开始计算手数之前使用更大的手数。说明如下。


我得到了以下结果(EURUSD 货币对,H1 期间,当年,未进行优化,参数是你的):

0)。恒定手数(手数 = 0.1)。

策略测试报告
移动平均线_MM
EGlobal-Demo (Build 402)

象征EURUSD(欧元兑美元)
时期1 小时 (H1) 2011.01.03 00:00 - 2011.08.19 22:59 (2011.01.01 - 2011.08.20)
模型通过开盘价(仅适用于明确控制柱线开盘的 EA 交易)
选项手数=0.1; A0="MM 变体"; A1="免费平均百分比"; A2="亏损时有可能减少手数"; MaximumRisk_DecreaseFactor=false;最大风险=0.02;减少因子=3; A3="R.Vince 计算手数"; A4="通过最优f值";最佳_f=真;交易号=100; A5="技术指标参数";移动周期=12;移动移位=6;

历史上的酒吧4925模拟滴答声8849模拟质量不适用
图形不匹配错误0




初始保证金10000.00



净利669.25总利润4458.42总体损耗-3789.17
盈利能力1.18获胜的期望3.80

绝对回撤157.47最大回撤693.81 (6.15%)相对回撤6.15% (693.81)

总交易176空头头寸 (% 赢) 70 (25.71%)多头头寸 (% 赢) 106 (34.91%)

盈利交易(占所有交易的百分比) 55 (31.25%)亏损交易(占所有交易的百分比) 121 (68.75%)
最大的有利可图的贸易341.58亏损交易-139.95
中等的有利可图的贸易81.06亏损交易-31.32
最高金额连续赢利(利润) 3 (153.85)持续亏损(亏损) 9 (-252.47)
最大持续盈利(获胜次数) 341.58 (1)持续亏损(亏损次数) -350.42 (6)
平均的持续增益持续亏损3

结论:

结果是可以接受的:交易数量、盈利能力。我没有优化设置。


一)。第一次尝试使用作者的代码 (Transaction_number = 100),我们从 0.01 的固定手数开始。

策略测试报告
移动平均线_MM
EGlobal-Demo (Build 402)

象征EURUSD(欧元兑美元)
时期1 小时 (H1) 2011.01.03 00:00 - 2011.08.19 22:59 (2011.01.01 - 2011.08.20)
模型通过开盘价(仅适用于明确控制柱线开盘的 EA 交易)
选项手数=0; A0="MM 变体"; A1="免费平均百分比"; A2="亏损时有可能减少手数"; MaximumRisk_DecreaseFactor=false;最大风险=0.02;减少因子=3; A3="R.Vince 计算手数"; A4="通过最优f值";最佳_f=真;交易号=100; A5="技术指标参数";移动周期=12;移动移位=6;

历史上的酒吧4925模拟滴答声8849模拟质量不适用
图形不匹配错误0




初始保证金10000.00



净利-458.67总利润445.84总体损耗-904.52
盈利能力0.49获胜的期望-2.61

绝对回撤476.69最大回撤787.28 (7.64%)相对回撤7.64% (787.28)

总交易176空头头寸 (% 赢) 70 (25.71%)多头头寸 (% 赢) 106 (34.91%)

盈利交易(占所有交易的百分比) 55 (31.25%)亏损交易(占所有交易的百分比) 121 (68.75%)
最大的有利可图的贸易34.16亏损交易-528.00
中等的有利可图的贸易8.11亏损交易-7.48
最高金额连续赢利(利润) 3 (15.39)持续亏损(亏损) 9 (-25.25)
最大持续盈利(获胜次数) 34.16(1)持续亏损(亏损次数) -546.34 (6)
平均的持续增益持续亏损3


结论

直到 EA 进行了 100 次交易:损失很小,最大损失也不大 (D)。因此 H 很小:

H=D/(-f);

文斯的计算手数将是巨大的:

lot = NormalizeDouble (( AccountFreeMargin ()/H)*Min_Lot, 1 );

因为我们使用了所有免费资金,这些资金比参数 H 大很多倍。

正如我之前写的,亏损交易的百分比高于盈利交易,亏损的概率更高,这在测试中发生了。

在下一次计算最优 f 时,参数 D 变得比前一个高几倍,就是这样,您已经到了... 以 0.01 手的交易量开仓。


2)。第二次尝试使用作者的代码 (Transaction_number = 100),我们从 0.1 的恒定手数开始(添加了 Initial_Lots 输入参数)。

将代码更改为以下行:

}     // Выход из  if (Transaction_number<Qnt)
else {
   lot=Initial_Lots; // Min_Lot;
   Print ( "Закрытых позиций = " ,   Qnt, " Transaction_number = " , Transaction_number);
   return (lot);
}
策略测试报告
移动平均线_MM
EGlobal-Demo (Build 402)

象征EURUSD(欧元兑美元)
时期1 小时 (H1) 2011.01.03 00:00 - 2011.08.19 22:59 (2011.01.01 - 2011.08.20)
模型通过开盘价(仅适用于明确控制柱线开盘的 EA 交易)
选项手数=0; A0="MM 变体"; A1="免费平均百分比"; A2="亏损时有可能减少手数"; MaximumRisk_DecreaseFactor=false;最大风险=0.02;减少因子=3; A3="R.Vince 计算手数"; A4="通过最优f值";最佳_f=真;交易号=100; Initial_Lots=0.1; A5="技术指标参数";移动周期=12;移动移位=6;

历史上的酒吧4925模拟滴答声8849模拟质量不适用
图形不匹配错误0




初始保证金10000.00



净利578.78总利润4703.48总体损耗-4124.69
盈利能力1.14获胜的期望3.29

绝对回撤157.47最大回撤768.81 (6.82%)相对回撤6.82% (768.81)

总交易176空头头寸 (% 赢) 70 (25.71%)多头头寸 (% 赢) 106 (34.91%)

盈利交易(占所有交易的百分比) 55 (31.25%)亏损交易(占所有交易的百分比) 121 (68.75%)
最大的有利可图的贸易474.11亏损交易-154.00
中等的有利可图的贸易85.52亏损交易-34.09
最高金额连续赢利(利润) 3 (153.85)持续亏损(亏损) 9 (-327.47)
最大持续盈利(获胜次数) 490.11 (2)持续亏损(亏损次数) -504.89 (6)
平均的持续增益持续亏损3


结论

图表变得更有趣了,但盈利能力仍然更差......


我对头寸数量的急剧跳跃感到愤怒,我进入了代码。

3)。第三次尝试使用作者的代码 (Transaction_number = 100),从 0.1 的恒定手数开始,更正了手数计算的准确性。

将代码更改为以下行:

lot = NormalizeDouble (( AccountFreeMargin ()/H)*Min_Lot, 2 );
策略测试报告
移动平均线_MM
EGlobal-Demo (Build 402)

象征EURUSD(欧元兑美元)
时期1 小时 (H1) 2011.01.03 00:00 - 2011.08.19 22:59 (2011.01.01 - 2011.08.20)
模型通过开盘价(仅适用于明确控制柱线开盘的 EA 交易)
选项手数=0; A0="MM 变体"; A1="免费平均百分比"; A2="亏损时有可能减少手数"; MaximumRisk_DecreaseFactor=false;最大风险=0.02;减少因子=3; A3="R.Vince 计算手数"; A4="通过最优f值";最佳_f=真;交易号=100; Initial_Lots=0.1; A5="技术指标参数";移动周期=12;移动移位=6; k=1;

历史上的酒吧4925模拟滴答声8849模拟质量不适用
图形不匹配错误0




初始保证金10000.00



净利386.40总利润4349.80总体损耗-3963.40
盈利能力1.10获胜的期望2.20

绝对回撤157.47最大回撤714.98 (6.46%)相对回撤6.46% (714.98)

总交易176空头头寸 (% 赢) 70 (25.71%)多头头寸 (% 赢) 106 (34.91%)

盈利交易(占所有交易的百分比) 55 (31.25%)亏损交易(占所有交易的百分比) 121 (68.75%)
最大的有利可图的贸易379.29亏损交易-169.40
中等的有利可图的贸易79.09亏损交易-32.76
最高金额连续赢利(利润) 3 (153.85)持续亏损(亏损) 9 (-285.97)
最大持续盈利(获胜次数) 397.69 (2)持续亏损(亏损次数) -530.19 (6)
平均的持续增益持续亏损3


结论

手数开始变得更顺利,但同样,由于亏损交易的普遍数量,顾问的盈利能力下降。


4)。第四次尝试使用作者的代码(Transaction_number = 100),从恒定手数 0.1 开始,仅使用一部分可用保证金(50%)根据 Vince 计算手数(添加了 FreeMarginRisk 输入参数):

将代码更改为以下行:

lot = NormalizeDouble ((FreeMarginRisk* AccountFreeMargin ()/H)*Min_Lot, 2 );
策略测试报告
移动平均线_MM
EGlobal-Demo (Build 402)

象征EURUSD(欧元兑美元)
时期1 小时 (H1) 2011.01.03 00:00 - 2011.08.19 22:59 (2011.01.01 - 2011.08.20)
模型通过开盘价(仅适用于明确控制柱线开盘的 EA 交易)
选项手数=0; A0="MM 变体"; A1="免费平均百分比"; A2="亏损时有可能减少手数"; MaximumRisk_DecreaseFactor=false;最大风险=0.02;减少因子=3; A3="R.Vince 计算手数"; A4="通过最优f值";最佳_f=真;交易号=100; FreeMarginRisk=0.5; Initial_Lots=0.1; A5="技术指标参数";移动周期=12;移动移位=6;

历史上的酒吧4925模拟滴答声8849模拟质量不适用
图形不匹配错误0




初始保证金10000.00



净利553.66总利润3960.94总体损耗-3407.28
盈利能力1.16获胜的期望3.15

绝对回撤157.47最大回撤528.66 (4.80%)相对回撤4.80% (528.66)

总交易176空头头寸 (% 赢) 70 (25.71%)多头头寸 (% 赢) 106 (34.91%)

盈利交易(占所有交易的百分比) 55 (31.25%)亏损交易(占所有交易的百分比) 121 (68.75%)
最大的有利可图的贸易296.80亏损交易-125.95
中等的有利可图的贸易72.02亏损交易-28.16
最高金额连续赢利(利润) 3 (153.85)持续亏损(亏损) 9 (-222.33)
最大持续盈利(获胜次数) 330.76 (2)持续亏损(亏损次数) -343.22 (6)
平均的持续增益持续亏损3


结论

首先,看一下最大回撤盈利能力。比第一次尝试好多了。

在余额和交易量图表上还可以看到以下模式:

- 当观察到有利可图的区域时,手数会增加;

- 但是一旦出现一系列损失(参数 D 急剧增加)并且计算的手数相应地急剧减少;

- 然后该手数的盈利部分恢复,但同样,由于盈利交易的百分比低,这种现象不会持续很长时间。

有一定的几何平均什么的! :)))

我附上最新的代码...


结论

如何根据 Vince 从结果公式正确计算手数:

lot = NormalizeDouble ((FreeMarginRisk* AccountFreeMargin ()/H)*Min_Lot, 2 );

不知道……就是应该取什么参数。

或者也许有人会反驳这个结果。


但我确信您需要以某种方式处理最大损失(参数 D),以便它不会与手数成比例增长(可能以某种方式限制与止损的交易)......

但首先,有必要提高盈利交易和非盈利交易的比例。智能交易系统本身非常简单,我没想到会有超高利润的结果。

总的来说,我认为这种按照文斯计算手数的方法是有生命权的。但为了完全掌握它,需要进行额外的研究,我目前还没有准备好。没有现成的交易系统这样...

我现在在波动理论、技术分析、烛台、价格行动方法、点点狂热之间徘徊,甚至有时我会看看 Lavinshchik 和 Martinshchik! :DD

附加的文件:
 
MaxZ:

以下代码有一个注释。

1. 我将把准确性从 "1 "改为 "2"。毕竟,你也有Min_Lot = 0.01?

现在试试最后一个测试。


2 关于这个代码还有一个评论。 当亏损交易的比例超过盈利交易的比例时,在手数计算中使用所有可用资金是不可取的。

或者你应该在开始按文斯计算地段之前使用更大的地段。下面是解释。

...

首先,看一下最大缩水盈利能力。明显比第一次尝试要好。

另外,在平衡和成交量图上,你可以看到以下模式。

- 当有盈利的领域时,该地段就会增长。

- 但只要我们有一系列的损失(参数D急剧增加),计算的手数就会急剧减少。

- 然后,这批货又恢复到盈利区,但同样由于盈利交易的比例很低,这种现象不会持续太久。

某种几何 平均数的发生,或者其他什么!"。:)))

我附上了最新版本的代码...


3.结 论。

...

但首先,应提高盈利和亏损交易的比例。专 家顾问本身非常简单,我并不期望有超级盈利的结果。

总的来说,我认为文斯的这种计算地段的方法是有生命力的。

4. 没有现成的交易系统。


谢谢马克斯对这一问题的有趣而详细的评论和回顾。

关于答案,请见上述各点(问题)......

1." 你也有Min_Lot = 0.01吗?" - 没有。 Min_Lot = 0.1是一个模拟的经典账户,步骤参数=相同,所以精确到小数点后一位。

0.01是微型的。

2. 完全正确。

3. 当然,这已经直接取决于运行中的车辆...:-)))当然,它有生命的权利。

4. 中大在那里。说明--从这里+ 下一页,从这里 到最后的分支......,"篮子货币指数...... "分支--从这里,基地在这里(包括文章末尾的 "来源 "的内容),视频在这里

对MM变体的选择感兴趣的人可以把这个变体与他的TS连接起来,看看结果,同时不要忘记在论坛的这个分支中分享有趣的观点。

 
Roman.:

变化#3--由最佳F

在这张照片中,计算好的地段只是在可怕地跳来跳去......。这就是为什么我认为我是先交易0.01手,然后再交易0.1的倍数。我的错误:))

 
MaxZ:
在这张照片中,计算出的地段只是可怕的跳跃......。这就是为什么我认为第一个是用0.01手交易,然后是0.1的倍数。我的错误!:))


我明白了,R.Vince并不是白写的。

"

试着找到一个有五年历史数据的投资组合,以便所有的交易系统都能以最佳f工作,而且最大的损失还不超过30%!这并不容易。使用多少个市场系统并不重要。 如果你想在数学上做一切正确的事情,你必须准备损失你账户余额 的30-95%。 需要严格的纪律,不是每个人都能遵守。

一旦交易者放弃交易恒定数量的合约,他就面临着交易数量的问题。无论交易员是否承认问题,它总是发生。交易恒定数量的合同不是一个解决方案,因为这样你永远无法实现几何级数的增长。因此,无论你喜欢与否,在下一次交易中交易多少的问题对每个人来说都将是不可避免的。简单地选择一个随机的数量会导致严重的错误。 最佳 f 是唯一数学上正确的解决方案"。

:-)))

也许可以用某种熨斗来搭配它......我不知道,我没怎么管这个问题,任务是严格按照原始资料来展示一切......我们做到了...万岁!:-)))

我的想法是用D乘以一些系数,例如1.5--类似于缓冲区(公差)的东西......但这并不能解决你提到的问题。"但是一旦发生一系列的损失(D参数急剧增加),计算的手数就会急剧减少......" - D参数的增加不是因为一系列的损失,而是因为某个交易的最大损失,可能在这里没有必要进行平滑处理,你只需要使用止损......:-)))猫头鹰是无止境的...:-)))这就是为什么会出现这些情况...

在任何情况下,我认为有必要更仔细地看看这个有真正猫头鹰的MM的变体!这是我的想法。