/жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
//+------------------------------------------------------------------+//|Трал по эквити |//+------------------------------------------------------------------+/*
Функция вызывается в самом начале эксперта сразу за int Start(), вызов происходит таким образом :
//удаляем запрет на торговлю после удаления всех ордеров
if(OrdersTotal()<1){
if(GlobalVariableCheck("stop")){GlobalVariableDel("stop");}
gEqviti=AccountBalance();
}
//тралим эквити
if(EcvitiTral3(EqwTralStep)){return(0);}
if(GlobalVariableCheck("stop")){return(0);}
если еквити поднялась над балансом, то она блокирует все стальные функции эксперта и тралит.
теперь по переменным : в глобальных переменных static double gEqviti;
во внешних переменных extern double EqwTralStep=0.03;
шаг трейлинга в процентах от эквити extern bool WithoutLoss=false; разрешение на применение метода безубытка
работа фунции : при превышении эквити над балансом она запоминает уровень баланса как нулевой,
при котором надо закрывать- это работа с безубытком, при дальнейшем превышении эквити
на размер EqwTralStep в прцентах она передвигает уровень закрытия выше,
если скорость превышения большая то функция увеличивает шаг квадратично .
*///жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжbool EcvitiTral3(double EqvTralStep){
//if(GlobalVariableCheck("stop")){GlobalVariableDel("stop");} if(OrdersTotal()<1){gEqviti=AccountBalance();return(false);}
if(WithoutLoss){
if(AccountEquity()>=AccountBalance()){mlots = 0.01;CloseAllFirstProfit();
WithoutLoss=false;Print("CloseAll");GlobalVariableDel("stop");return(false);}
return(true);
}
if(AccountEquity()>AccountBalance()){
if(AccountEquity()-AccountBalance()>((AccountBalance()/100)*(EqvTralStep*2))){EqvTralStep=EqvTralStep+EqwTralStep;}
if(AccountEquity()>(gEqviti+(gEqviti/100*EqvTralStep))){
gEqviti=gEqviti+(gEqviti/200*EqvTralStep);
if(!GlobalVariableCheck("stop")){GlobalVariableSet("stop",0);}
}
if(AccountEquity()<=gEqviti){mlots = 0.01;CloseAllFirstProfit();
Print("CloseAll");GlobalVariableDel("stop");return(false);}
else{Comment(AccountFreeMargin()+AccountMargin(),"\n",
"EQUITY TRALING MODE\n",
"EQUITY TRALING STEP =",EqvTralStep," %",
"\nACCOUNT BALANS = ",AccountBalance(),
"\nCLOSE LEVEL = ",gEqviti,
"\nACCOUNT EQUITY = ",AccountEquity(),
"\nNEXT STEP = ",gEqviti+(gEqviti/100*EqvTralStep));
// Print("AccountEquity() = ",(AccountBalance()/100)*(EqvTralStep));return(true);
}
}else{GlobalVariableDel("stop");}
return(false);
}
下午好。
伊戈尔,在我看来,你所谓的MM是同一个EA,它应该比添加了你的功能来赢回亏损头寸的EA更有利可图。
问题是你为什么不把你的MM作为一个独立的EA使用?
终于有了一个好主意....- 是的,你是对的,这是对雪崩的修改,从雪崩中只剩下锁上锁的想法......,甚至 "走廊/价格通道 "的概念也发生了变化,基于当前市场的波动,而不是下一个锁的距离。
我永远不会推出一个独立的EA,它是基于不断增加手数来实现利润,但同时,如果我们在设置另一个锁之前控制可用资金,结果是相当 "奇妙 "的。也就是说,如果价格开始回落而没有达到ТР,最好在价差内获利,而不是采取 "损失",保持我的雪崩高位,我写过 - 如果我做了一个损失(我在固定数字中设置了300美元),那么让我们开始雪崩或类似的事情。
伊戈尔,你能不能对这个"强制性股权拖网"多说几句,我不太明白这样的拖网应该如何运作?
这段代码不是我的,我甚至还没有理解它,但它100%的工作。
伊戈尔,你能不能对这个"强制性股权拖网"多说几句,我不太明白这样的拖网应该如何运作?
遍历股权是没有必要的。 在进入盈利区后,你可以关闭重叠的订单,并遍历剩余的订单,效果相同。
也许吧,但到目前为止,我的想法是做一个通用的功能,用于 "拉动 "亏损的EA的正面结果,而tral on equity只是不那么麻烦--不需要考虑到4(5)号,最小的停止,等等。- 只需插入函数,就可以了
ZS:嗯,有什么想法?renoshnik 你在kodobase中的另一个EA 在你的测试器中不工作,我今天没有时间,但你可以在EA中重做sllep(),像这样
这样,你可以让sleep()持续一秒钟
我认为这个EA 会显示出更好的结果 :)
SZS: 嗯,这个想法怎么样?renoshnik 你在kodobase中还有一个EA,它不想在你的测试器中工作,我今天没有时间,但你可以像这样在你的EA中重新做sllep()。
你可以在一秒钟左右做sleep()。
我认为这个EA 会显示出很好的效果 :)
我解决了这个问题,http://voloshin-fxcci.blogspot.com/,我的专家顾问从一月份开始就在真实账户上工作了。到目前为止(不要扫兴),每个月都在盈利...顺便说一下,这是月初的一个快照,即使是 "手"(一个平均数的订单)也成功了......
我试图在这个EA中做一些"类似雪崩"的事情,但我还不知道该怎么做。
我认为,股权拖网对这个EA 尤其不起作用。根据我的理解,股权追踪是在只开一个头寸的情况下进行的,而我有很多头寸,由于 "噪音 "而有一些缩减,我不打算处理这些问题,等待价格逆转。但在所有这些头寸中,有一两个头寸已经下降到了 "关键 "水平,而且没有人期望价格能够回落到那么远。只有这几个位置需要被 "锁定"--那么股权拖网就不起作用了....。
在代码库的档案中发现了这个==介绍Anti-Moose方案
我在codebase的档案中发现了这个==介绍Anti-Moose计划
我今天刚开始建立我的 "反亏损"。 如果雪崩的目的是在亏损的手数上赚钱,那么反亏损回到零更有意义,每个方向的所有开仓的总成交量应该重新计算,而测试器显示的结果是一样的。
我们根本没有对股权进行拖曳,我们只是在缩减X点时进行重叠。但当有许多未结订单时,这是一个问题,因为重叠的增加是最小的。
我今天刚开始建立我的 "反亏损",如果雪崩的目标是盈亏平衡,那么反亏损返回到零是更有意义的,每个方向的所有未结头寸的总量应该被重新计算,到目前为止,在测试器中是这样的
我今天刚开始做我的 "antilosse"。如果雪崩的目的是要从手数中赚取,那么从零开始提取是比较合理的,而且必须重新计算手数的总数。
我可以提出一个小建议吗?如果我们要做 "羚羊",我们认为它应该是一个脚本,如果当我们运行这个脚本时,我们可以为订单设置一个 "票据",这个订单应该被带到盈亏平衡点,而不影响其他订单,那就更好了....。
我可以提出一个小建议吗?如果你想做一个 "羚羊",你将不得不成为一个脚本,如果当你启动脚本时,你可以为一个订单设置一个 "票",在不影响其他订单的情况下被带到盈亏平衡点,那就更好了.....。
半天的 "扭曲测试器"--结论是一个:锁定是将另一个策略应用于在某一时间点给予损失的策略,与一个有效的策略锁定相结合,使EA的效率提高数倍,但.....
- 锁定应该放在不同的策略/指标上
- 学习锁定 "突然"(没有战略)是低效的。
- 下挂单不是一个解决方案,因为必须根据工具的波动性来计算止损单的水平。
但结果是--使用我的锁定随机损失的策略,到目前为止,我在历史上观察到5次 "逆转",同时我试图增加下一次锁定的量,但时间和金钱之间的联系被清楚地看到,锁定比例增加得越高,解套就越快,但缩水就越高
在这种情况下,跌幅较小,因为我已经根据市场上已经表现出来的成交量,将锁仓量的增加改为了算术级数。