用于IF的一分钟日内交易K线 1.MACD(26,12,9,1)DIF向上交叉MACD,买进;DIF向下交叉MACD,卖出! 2.设40个价位的移动止盈。 3.初始开仓1手,如果本次操作盈利,下一次仍然开仓1手;如果本次操作亏损,下一次开仓加多1手,即开两手;如果第二次仍然亏损,第三次开仓3手,以此类推(最高开仓数为5手),直到完全弥补前面(当天)的亏损,又回到开仓1手。 以上为基本要求,是否可以写成自动化交易程序? 万分感谢。 已经有位老师帮我写过一次,但用过了!根本无效,乱码!死叉还买进!金叉却卖出!一开单就两手! 在网上问,又没人复我!!!!!!!急!!!!!! |
之前少写了止盈的,另外你图上输出开仓平条件就知道该不该开仓。
VARIABLE:n=1,ying=0,kui=0;
dea:stkindi('','macd.dea',0,1);
diff:stkindi('','macd.diff',0,1);
jc:cross(dea,diff);//金叉
sc:cross(diff,dea);//死叉
if date<>ref(date,1) then begin //第二天重置为0重新计算
n:=1;
ying=0;
kui:=0;
end
if jc and n<=5 then begin //限制最多5手
buy(holding=0,n,market);
end
//移动止盈
if h-enterprice>=30*mindiff then sell(holding>0,holding,market);
if sc then begin
sell(holding>0,holding,market);
if numprofit(1)>0 then begin//盈利n赋值为1手
n:=1;
ying:=numprofit(1)+ying;//盈利的和
end
if numprofit(1)<0 then begin //亏损n+1手
n:=n+1;
kui:=numprofit(1)+kui;//亏损总数
end
end
if ying>kui then n:=1;
if n>=5 then n:=5;
条件我刚才是按你上个帖子里的diff和dea写的,没看到你现在改成macd了,这个我一会改下。
1楼你只说买进卖出我就只写了开多平多,你没有说清什么条件开多或开空,请把条件描述清楚
VARIABLE:n=1,盈亏=0;
macd:stkindi('','macd.macd1',0,1);
diff:stkindi('','macd.diff',0,1);
jc:cross(diff,macd);//金叉
sc:cross(macd,diff);//死叉
if date<>ref(date,1) then begin //第二天重置为0重新计算
n:=1;
盈亏:=0;
end
if n>=5 then n:=5;
if jc and n<=5 THEN begin
sellshort(holding<0,holding,market);
buy(holding=0,n,market);
盈亏:=NUMPROFIT(1)+盈亏;
if 盈亏<0 and n<5 then n:=n+1;
if 盈亏>0 then n:=1;
end
if sc and n<=5 then BEGIN
sell(holding>0,holding,market);
buyshort(holding=0,n,market);
盈亏:=NUMPROFIT(1)+盈亏;
if 盈亏<0 and n<5 then n:=n+1;
if 盈亏>0 then n:=1;
end
if hhv(h,enterbars+1)-l>=40*mindiff then
sell(holding>0,holding,market);
if h-llv(l,enterbars+1)>=40*mindiff then
sellshort(holding<0,holding,market);