以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  策略编写求助区  (http://weistock.com/bbs/list.asp?boardid=11)
----  策略编写求助  (http://weistock.com/bbs/dispbbs.asp?boardid=11&id=163862)

--  作者:刘哲
--  发布时间:2018/6/6 8:41:06
--  策略编写求助

我是金字塔的用户,我有一个想法请老师给编一下。作螺纹钢的。

 

(1)如果2天线》4天线》6天线并且价格小于3500.买进开仓做多。

(2)如果价格小于20天最低价,卖出所有仓。

(3)如果价格上涨,等到2天线《4天线时卖出所有仓。

(4)每次开仓量的计算:以3500为基准。价格每小于1%开仓1手。(小于2%开仓2手.。。。小于20%开仓20手。)

 

作空方案相反。


--  作者:fly
--  发布时间:2018/6/7 9:58:36
--  
(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都是要加仓吗?

--  作者:刘哲
--  发布时间:2018/6/8 15:02:00
--  
 策略运行周期:日K线。

(2)如果2天线〉4天线〉6天线,且价格小于3500.买进开仓做多。
       开仓数量确定的方法:算算条件满足是的价格,如果是2800,比3500小20%就开20手。


       


--  作者:fly
--  发布时间:2018/6/8 16:17:00
--  
明白了,那就是只开仓一次,中间再满足条件也不会加仓了。
工作人员将以多仓为例,来为您编写。请您耐心等待

--  作者:pyd
--  发布时间:2018/6/8 17:09:29
--  

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编辑过]

--  作者:FireScript
--  发布时间:2018/6/11 14:45:34
--  
 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);