目标:资金权益回撤幅度在15%以内,则风险暴露为2%;当回撤幅度在15%-25%之间,则风险暴露为1%;当回撤幅度大于25%,则停止交易。
代码:
n:=barpos();
maxasset:=hhv(asset,n); //历史最高平仓权益
if asset>0.85*maxasset,then a1:=0.02*asset; //回撤幅度在15%以内
if asset<=0.85*maxasset and asset>0.75*maxasset,then a1:=0.01*asset; //回撤幅度在15%-25%之间
if asset<=0.75*maxasset,then a1:=0*asset; //回撤幅度大于25%
SS:=floor(a1/(multiplier*atr)); //开仓手数
回测结果:
此主题相关图片如下:1.png

请问为什么回撤幅度会远超控制?哪里有错?如何正确编写想要实现的目标?
你的回撤只是控制在开仓数量上,这个和你之前的回撤有没有关系
比如你说我亏损100就下次开1手,但这个又不能控制你不会亏10000的
我明白你的意思。但我的首仓风险暴露都控制在2%以内,不可能出现上面的短期内的大幅回撤。我觉得是不是“
if asset<=0.75*maxasset,then a1:=0*asset; ”这里错了?是不是这里的“
0*asset”是指全仓介入而不是不买入?
还请您看一下我编辑的代码是否有错吧,我主要是想知道我的代码是否体现了我的目标?
好的。
这样吧,请问你会如何写“资金权益回撤幅度在15%以内,则风险暴露为2%;当回撤幅度在15%-25%之间,则风险暴露为1%;当回撤幅度大于25%,则停止交易。”
您可以在开仓条件中加入,回测幅度小于25%; 风险暴露只是指显示一下数值对吧?
按照你说的,我改了一下,编辑目标已经完成了,谢谢!
我贴出来,让有需要的人看到:
tr1 : =max(max((high-low),abs(ref(close,1)-high)),abs(ref(close,1)-low));
atr : =ma(tr1,20); //atr公式
atr1:ref(atr,1);
n:=barpos();
maxasset:=hhv(asset,n);
if asset>0.85*maxasset,then a1:=0.02*asset;
if asset<=0.85*maxasset and asset>0.75*maxasset,then a1:=0.01*asset;
if asset<=0.75*maxasset and asset>0.4*maxasset,then a1:=0.005*asset;
if asset<=0.4*maxasset,then a1:=-1*asset; //资金管理
a2:=floor(a1/(j*multiplier*atr1)); //开仓手数
//然后,在每个开仓条件中加入"a1>0"即可 ^_^