大佬,下午好
写代码过程中,遇到一个历史回测的优化算法 不知可行否。 代码概要如下
vars:
myexit // 止损价标记点
myentry // 开仓标记点
myDemoExit // 回测时 止损点
myDemoEntry // 回测时 ,止盈点
MinPoint // 最小单位 跳 , myEntry 和 myExit 都是按 最小跳计算出来的价格,前期代码已经优化好
回测数据时,止盈止损的优化算法如下
以多单组平仓为例
if(close<=myExit)
myDemoExit = myEntry - (myExit+1/2abs( open[1]-close[1] )*MinPoint ) //多单止损算法
sell(lots,myDemoExit) // lots 是手数,之前定义的变量 和 买入仓单一样。后续在改进为ID多单组总仓位。
这里的多单止损算法,就是优化下 最后一根棒体的价格,为最后bar的1/2收盘价和开盘价差额的绝对值。
疑问是,这个myDemoExit 回测时,是否会有效成交!并按这个价格进行核算 盈亏
同样的,盈利也会这样优化。 这样可能会更贴切点结果数据。
大佬下午好 刚刚入门的小白,有个问题想请教一下各位大佬
这个语句是这样写的:
If ( MarketPosition == 1)
{ maxHighSinceEntry = Highest(High, CurrentBar - EntryBar + 1);
}
EntryBar 是开多单时记录的Bar位置,想实现从开多单开始的Bar 到当前CurrentBar ,找出序列K线中的最高价High,但是编译出错,提示在 if 判断语句中不能有序列变量
该如何改写呢?请大佬们指导一下吧
我也是学习者,个人判断,可能是语法错误,把 CurrentBar - EntryBar + 1 这里的表达方式和语法估计有错误。。你可以看看 语法说明书里面的 二级移动止损的源代码, 这里面有不少好东西可以借鉴。。
你可以看看布林轨的写法。。可能对你有帮助的。。
回测是否成交取决你的信号价格和信号条件发生时的理论盘口价格
比如你if条件里的条件,满足时,理论盘口价格是1000,那么你的信号价格写1000买入,这个大概率能成交,当然价格越低概率越大。但是如果你写1001买入,那就不可能了。
至于这个理论盘口价格是多少,你得自己推算出来。
比如你的条件是突破四周上轨,那么这个理论盘口价格就是四周上轨。比如你的条件是双均线金叉,那就是盘中均线金叉一瞬间的盘口价格,用平均公式逆运算推算出来。
好的,感谢,大佬。。。想着更加精准点的回测。。回头试试看。有问题,再来请教。。感谢。感谢。。报告大佬一个好消息,最近撸代码,逐渐上瘾了。。哈哈。。可能属于刚入门的状态了。。
if(close<=myExit or low<=myExit) // 补充一个最低价小于止损平仓价时
myDemoExit = myEntry - (myExit+1/2abs( open[1]-close[1] )*MinPoint ) //多单止损算法
sell(lots,myDemoExit)