我测试用MACD来程序化交易,图表交易中使用5分、30分和日线3个周期符合条件就开仓、平仓。我想做到每个周期亏损5%止损,也就是要分别记录5分、30分和日线三个周期的开仓价。用ENTERPRICE只能记录最后的开仓价。请教各位这个怎么处理?
是引用其他周期的数据做开仓判断吧?有没有在其他周期开仓?
以下是引用jinzhe在2016-6-20 10:29:28的发言:
是引用其他周期的数据做开仓判断吧?有没有在其他周期开仓?
感谢您的回答。有的,分别在5分钟、30分和日线,都有开仓。
以下是引用jinzhe在2016-6-20 15:27:42的发言:
能以一个实际的例子来说明一下当前问题吗?
RUNMODE:0;
//中间变量
INPUT:SS(1,1,10000,1);//定义参数值
//初始化
MACDDAY:=STKINDI('','MACD.MACD1',0,6,0);
MACD30:=STKINDI('','MACD2.MACD1',0,4,0);
MACD5:=STKINDI('','MACD2.MACD1',0,2,0);
//交易条件
GOLDCROSSDAY:=CROSS(MACDDAY,0);
DEADCROSSDAY:=CROSS(0,MACDDAY);
GOLDCROSS30:=CROSS(MACD30,0);
DEADCROSS30:=CROSS(0,MACD30);
GOLDCROSS5:=CROSS(MACD5,0);
DEADCROSS5:=CROSS(0,MACD5);
//交易系统
IF GOLDCROSSDAY THEN //满足开多条件
BUY(1,600*SS,MARKET);//开多单
IF DEADCROSSDAY THEN //满足开空条件
SELL(1,600*SS,MARKET);//开空单
IF GOLDCROSS30 THEN //满足开多条件
BUY(1,300*SS,MARKET);//开多单
IF DEADCROSS30 THEN //满足开空条件
SELL(1,300*SS,MARKET);//开空单
IF GOLDCROSS5 THEN //满足开多条件
BUY(1,100*SS,MARKET);//开多单
IF DEADCROSS5 THEN //满足开空条件
SELL(1,100*SS,MARKET);//开空单
//其他
当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;
------------------------------------------------------------------
以上为我的MACD突破0轴买卖的代码。分为三个周期独立运行。但是我想分别在以上三个周期(即5分钟、30分钟、日线)设置3%、6%和9%的上损。那就要记录三个周期的开仓价。所以向您请教怎么处理。或者还有没有其它更好的方法?
复制成3个同样的公式,名字不一样,然后分别运行在3个周期上。
这样就能分别的计算3个周期的不同开仓价了
然后在用stkindi进行引用
以下是引用jinzhe在2016-6-21 9:24:12的发言:
复制成3个同样的公式,名字不一样,然后分别运行在3个周期上。
这样就能分别的计算3个周期的不同开仓价了
然后在用stkindi进行引用
谢谢!也就是开仓、平仓及止损,都在三个不同的工作中。最后用一个公式来引用三个公式?能根据我以上的代码,给我简单示例一下么?非常感谢!
3个公式分别命名为公式1,2,3。再各加一句代码:ee:enterprice;
比如你第一个公式是5分钟公式,然后要引用其他两个周期的开盘价,那么就要在5分钟公式里面加代码:
e1:=stkindi('','公式2.ee',0,4);
e2:=stkindi('','公式3.ee',0,6);
e1和e2就代表30分钟和日线上的开仓价了,用户就可以在5分钟的公式上来判断3个周期开仓价了
以下是引用jinzhe在2016-6-21 13:43:07的发言:
3个公式分别命名为公式1,2,3。再各加一句代码:ee:enterprice;
比如你第一个公式是5分钟公式,然后要引用其他两个周期的开盘价,那么就要在5分钟公式里面加代码:
e1:=stkindi('','公式2.ee',0,4);
e2:=stkindi('','公式3.ee',0,6);
e1和e2就代表30分钟和日线上的开仓价了,用户就可以在5分钟的公式上来判断3个周期开仓价了
非常感谢您!我马上去试试!