以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  策略编写求助区  (http://weistock.com/bbs/list.asp?boardid=11)
----  请修改一下固定点位保护策略  (http://weistock.com/bbs/dispbbs.asp?boardid=11&id=74078)

--  作者:frizzle
--  发布时间:2015/1/7 10:12:30
--  请修改一下固定点位保护策略

我现在想交易的程序很简单大致啥意思是:交易商品A,主趋势为多,交易数B:入场点位C:程序化做如下保护:
【1】商品在C位置开多,手数为B;
【2】商品在C位置下跌0.5%,平多开空,手数为B
【3】商品又反弹至C位置,平空开多,手数为2B;
【4】商品又从C位置下跌0.5%,平多开空,手数为4B;
【5】商品再次反弹至C位置,平空开多,手数为8B
【6】商品如果在从C下跌0.5%,则全部平仓。
举例:交易品种:白糖  SR1505   0.5% 入场点4600 手数5手  方向做多
【1】当SR1505商品指数等于4600时,开多5手
【2】下跌至4577,平多开空5手
【3】反弹至4600,平空开多10手
【4】下跌至4577,平多开空20手
【5】反弹至4600,平空开多40手
【6】下跌至4577,平多。全部平仓
如上的交易策略, 目前手里有一个前期编辑的策略,帮忙检查看看问题在哪里?


VARIABLE:n=0,b=5;//假设初始手数5;
x:=4670;//假如是4670
if x-l>=0.005*x and holding>0 then sell(1,HOLDING,market);
if x-l>=0.005*x and holding=0 then begin//x是入场价格
buyshort(1,b,market);
b:=2*b;
end
if x-l>=0.005*x then n:=1;
if n=1 and h=x and holding<0 then sellshort(1,holding,market);
if n=1 and h=x and holding=0 then BEGIN
buy(1,1,market);
b:=2*b;
end
[此贴子已经被作者于2015/1/7 10:12:54编辑过]

--  作者:pyd
--  发布时间:2015/1/7 14:03:21
--  

VARIABLE:n=0;
b:=1;
x:=4600;//改入场点的话只需改x的值
if h=x and n=0 then begin //入场点价格x
buy(holding=0,b,market);
n:=1;
end

if l<=x-0.005*x and n=1 then begin
 sell(holding>0,holding,market);
 buyshort(holding=0,b,market);
 n:=2;
 end

if n=2 and c=4600 then begin
sellshort(holding<0,holding,market);
buy(holding=0,2*b,market);
n:=3;
end
if l<=x-0.005*x and n=3 then begin
 sell(holding>0,holding,market);
 buyshort(holding=0,4*b,market);
 n:=4;
 end
 if n=4 and c=x then begin
 sellshort(holding<0,holding,market);
 buy(holding=0,8*b,market);
 n:=5;
 end
 if n=5 and l<=x-0.005*x then begin
sell(holding>0,holding,market);
n:=0;
end


--  作者:frizzle
--  发布时间:2015/1/7 14:35:16
--  
谢谢了, PYD真好。。。我弄这个模型的时候,也会很用心,真写写你。
--  作者:frizzle
--  发布时间:2015/1/9 14:03:12
--  
我现在想交易的程序很简单大致啥意思是:交易商品A,主趋势为多,交易数B:入场点位C:程序化做如下保护:
【1】商品在C位置开多,手数为B;【当价格达到C,立即开仓,不能等到K线走完再入场,开仓之和,除非遇到止损平仓,然后再反弹只C位置,重新开多,其它在C价格附件震荡的时间不能开仓,这个不知道用怎么写】
【2】商品在C位置下跌0.5%,平多开空,手数为B【同理,在C下跌0.5%位置附件,除非反弹止损,再次到这个位置才开仓。】
【3】商品又反弹至C位置,平空开多,手数为2B;
【4】商品又从C位置下跌0.5%,平多开空,手数为4B;
【5】商品再次反弹至C位置,平空开多,手数为8B
【6】商品如果在从C下跌0.5%,则全部平仓。
举例:交易品种:白糖  SR1505   0.5% 入场点4600 手数5手  方向做多
【1】当SR1505商品指数等于4600时,开多5手【这里开多5手之后,价格在4600附件运行,再次触及这个位置,不开仓,除非在4577止损之后,再次反弹到4600才开仓 】
【2】下跌至4577,平多开空5手   【这里4577开空之后,除非反弹4600之后平仓了,不然在4577附件震荡,已经开仓了,就不要开仓了】
【3】反弹至4600,平空开多10手
【4】下跌至4577,平多开空20手
【5】反弹至4600,平空开多40手
【6】下跌至4577,平多。全部平仓
另外有一个地方编程的时候,修正一下, 就是入场点X,可以手动输入,然后那个入场点x下跌或者上涨0.5%的位置,最好也变成手动输入,这样就不会存在四舍五入,或者小数点的问题了


--  作者:pyd
--  发布时间:2015/1/9 15:23:11
--  

 和1楼的要求没什么区别还是2楼的代码

1,c在k线没有走完时就是最新价,条件达到用固定轮询可以立即成交,但是过后这个信号可能就消失了,

例如你设定的满足c=4600开仓,k线中出现这个价格会出现信号会交易,但是k线走完后如果收盘价不是4600这个信号就会消失。

对于历史的k线c才是收盘价,如果没有收盘价刚好等于你设定的价格x那么历史k线就不会有信号。

2,止盈止损时 l<=x-0.005*x  这是一个范围,不是整数也没有影响。

[此贴子已经被作者于2015/1/9 15:37:41编辑过]

--  作者:frizzle
--  发布时间:2015/1/9 16:06:17
--  
噢 那下周我试试看看