我是金字塔的用户,我有一个想法请老师给编一下。作螺纹钢的。
(1)如果2天线》4天线》6天线并且价格小于3500.买进开仓做多。
(2)如果价格小于20天最低价,卖出所有仓。
(3)如果价格上涨,等到2天线《4天线时卖出所有仓。
(4)每次开仓量的计算:以3500为基准。价格每小于1%开仓1手。(小于2%开仓2手.。。。小于20%开仓20手。)
作空方案相反。
(1)策略运行周期:日K线?还是5分钟K线?
(2)如果2天线〉4天线〉6天线,且价格小于3500.买进开仓做多。
开仓数量如何确定呢
条件1:如果价格小于3500时,开仓手数:1手
条件2:如果价格小于3500-3500*1%时,开仓(加仓?)手数:1手
条件3:如果价格小于3500-3500*2%时,开仓(加仓?)手数:2手
。。。。
条件21:如果价格小于3500-3500*20%时,开仓(加仓?)手数:20手
你的条件1是开仓条件
你的条件2到条件21都是要加仓吗?
策略运行周期:日K线。
(2)如果2天线〉4天线〉6天线,且价格小于3500.买进开仓做多。
开仓数量确定的方法:算算条件满足是的价格,如果是2800,比3500小20%就开20手。
明白了,那就是只开仓一次,中间再满足条件也不会加仓了。
工作人员将以多仓为例,来为您编写。请您耐心等待
ma2:=ma(c,2);
ma4:=ma(c,4);
ma6:=ma(c,6);
kd:= ma2>ma4 and ma4>ma6 and c<3500;//开多条件
pd:=c<ref(llv(l,20),1) or ma2<ma4;//平多条件
kk:=ma2<ma4 and ma4<ma6 and c>3500;//开空条件
pk:=c>ref(hhv(h,20),1) or ma2>ma4;//开空条件
s1:floor(((3500-c)/3500)*100);
ss:max(s1,1);//开仓手数
buy(holding=0 and kd,ss,marketr); //开多
sell(holding>0 and pd,holding,marketr); //平多
buyshort(holding=0 and kk,ss,marketr);//开空
sellshort(holding<0 and pk,holding,marketr);//平空
[此贴子已经被作者于2018/6/11 9:00:41编辑过]
c_:=(o+c+h+l)/4;
ma2_:=(ref(c,1)+c_)/2;
ma4_:=(ref(ma(c,3),1)*3+c_)/4;
ma6_:=(ref(ma(c,5),1)*5+c_)/6;
ma2:=if(ISLASTBAR,ma2_,ma(c,2));//如果是最新K,取ma2_,其他均线类似处理
ma4:=if(ISLASTBAR,ma4_,ma(c,4));
ma6:=if(ISLASTBAR,ma6_,ma(c,6));
//最新K在参与均线计算时,不以变动的C来参与,而是采用"开 高 低 收"的一个均值来减缓C的波动
//历史K取因为不再变动,按照常规方式处理
//以上代码对均线重新做了处理,该思路仅供参考
kd:= ma2>ma4 and ma4>ma6 and c<3500 and holding=0;//开多条件
pd:=(c<llv(l,20) or ma2<ma4 ) and holding>0;//平多条件
kk:=ma2<ma4 and ma4<ma6 and c>3500 and holding=0;//开空条件
pk:=(c>hhv(h,20) or ma2>ma4) and holding<0;//平空条件
ss:floor(((3500-c)/3500)*100);//手数
开多:buy(holding=0 and kd,if(ss=0,1,ss),marketr);//ss值实际可能计算出来是0,因此做个处理,如果是0 ,开仓开一手
平多:sell(holding>0 and pd,holding,marketr);
开空:buyshort(holding=0 and kk,if(ss=0,1,ss),marketr);
平空:sellshort(holding<0 and pk,holding,marketr);