以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- 请问为什么没有交易信号,如何改进? (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=163469) |
-- 作者:jinniu1058 -- 发布时间:2018/5/16 11:16:46 -- 请问为什么没有交易信号,如何改进? 使用双均线的交叉来识别一波潜在的趋势,直到上升趋势或下降趋势确定后才发出买入或卖出信号。 系统通过设置在移动数目的K线内有效的买入/卖出条件单来确定趋势。 进场策略: 买入:移动快速均线上穿慢速均线,系统把最近12根K线的高点加上3%的位置设置为“买入突破线”,如果价格突破 “买入突破线”时则发出买入指令,突破指令在12根K线内有效,即如果12根K线内未突破则取消本次交易。 卖出:移动快速均线下穿慢速均线,系统把最近12根K线的低点减去3%的位置设置为“卖出突破线”,如果价格突破 “卖出突破线”时则发出卖出指令,突破指令在12根K线内有效,即如果12根K线内未突破则取消本次交易。 最近多少根K线的高点以及超过多少百分比作为策略参数输入,允许使用者灵活测试和优化。 出场策略: 反手出场:上述的买入或卖出指令也是反手指令,即:如果持有多头而触发了卖出指令,将先平掉多单头寸然后开立空头头寸,反之亦然。 周期出场: 持有多头头寸时,价格跌破最近8根K线的低点,多头平仓; 持有空头头寸时,价格跌破最近8根K线的高点,空头平仓。 再进场策略: 上述的出场策略有时会导致提前出场并导致系统措施大的利润,再进场策略可以在趋势继续是重建原来的头寸。多头出场后,记下出场时最近10根K线的高点,如果出场后15根K线内价格达到最近10根K线的高点重新做多; 空头出场后,记下出场时最近10根K线的低点,如果出场后15根K线内价格达到最近10根K线的低点重新做空。 INPUT : FastLen(9,1,200,2) ; //快速均线周期; FastMA:MA(CLOSE,FastLen),COLORRED;
VARIABLE : LEntryPrice = 0 ; //开多的突破价格; VARIABLE : LCount = 0 ; //均线金叉后记录Bar序号; VARIABLE : POSITION=0 ; //仓位状态 VARIABLE : ChLenHI=CLOSE ; VARIABLE : ChLenLO=CLOSE ; VARIABLE : T12HI=CLOSE ; VARIABLE : T10HI=CLOSE ; VARIABLE : T8HI=CLOSE ; //准备需要计算的变量 T12HI := REF(HHV(H,T12),1) ; T10HI := REF(HHV(H,T10),1) ; T8HI := REF(HHV(H,T8),1) ; //交易条件 ConCrossOver := CROSS(FastMA , SlowMA); //金叉 //开始执行时 初始化数据 //建立多头进场条件 LEntryPrice := T12HI * (1+ ExtraPercentage * 0.0001); //开仓 //判断趋势是否反转; IF ConCrossUnder THEN BEGIN SCount := ENTERBARS;//记录Bar序号以控制只在金叉后ChLen根Bar内进场否则放弃本次交易 IF SCount >= (ChLen - 1) THEN BEGIN //反向突破 POSITION := 0;
IF POSITION=1 AND ENTERBARS>0 THEN BEGIN ReEntryCOUNT := BARSLAST(EXITBARS);//记录Bar序号以控制只在金叉后ChLen根Bar内进场否则放弃本次交易
编译后没有信号,请问老师我自己编写的程序问题出在哪里了?如何解决?
另外如何记录信号发生后开始的K线数量,这个我还不是很理解,查函数表后用BARSLAST、EXITBARS和ENTERBARS不知道是否是这样用法,有没有更好的方法记录K线位置或者用什么函数更好? |
-- 作者:FireScript -- 发布时间:2018/5/16 11:25:27 -- 这种只能你自行调试代码中的变量输出了。直接在图表上输出你的开平仓条件。上次开仓位置这种需求你用那几个函数是没问题的。应该是内部一些逻辑上问题,通过输出关键变量的值应该是可以排查出来了。 |