我现在想交易的程序很简单大致啥意思是:交易商品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 |
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
和1楼的要求没什么区别还是2楼的代码
1,c在k线没有走完时就是最新价,条件达到用固定轮询可以立即成交,但是过后这个信号可能就消失了,
例如你设定的满足c=4600开仓,k线中出现这个价格会出现信号会交易,但是k线走完后如果收盘价不是4600这个信号就会消失。
对于历史的k线c才是收盘价,如果没有收盘价刚好等于你设定的价格x那么历史k线就不会有信号。
2,止盈止损时 l<=x-0.005*x 这是一个范围,不是整数也没有影响。