if buySign=1 and l<buyP then begin
buyCount:=buyCount+1;
BUY(C>O ,100,market);
bb:=4;
END
经输出测试 bb=4 这句执行了 画图显示也等于4 但开单的指令 没有执行。
卖出 也有类似问题 条件满足 没指令发出 要么隔几个周期才发出
请给出完整可以运行的公式,我们才能帮你找出问题
VARIABLE:buySign=0,buyCount=0;
VARIABLE:buyP=0,sellP=0,bb=0,ss=0;
Q:=LOW/EMA(LOW,10);
if count(q>1.18,30)>=1 then
buySign:=1;
if q<1.01 then
buySign:=0;
buyP:=ref(c,1)*0.975;
sellP:=ENTERPRICE*1.05;
{
if HOLDING>0 then
buyP:=AVGENTERPRICE*0.97;
}
bp:buyP;
ss:=0;
if (buySign=0 or h>sellP) and HOLDING>0 then begin
buyCount:=buyCount-1;
sell(C>O ,100,LIMIT,sellP);
ss:=4;
END
if q<0.98 and HOLDING>0 then begin
buyCount:=0;
sell(C>O ,HOLDING,market);
ss:=6;
END
bb:=0;
//and buyCount=0
if buySign=1 and l<buyP then begin
buyCount:=buyCount+1;
BUY(C>O ,100,market);
bb:=4;
END
sss:ss;
bbb:bb;
bs:buySign*1.5;
cas:cash(0)/100000.LINETHICK0;
hd:HOLDING/100;
等了一晚上。。。。
你的公式凌乱不堪,无法阅读,请说明你的公式的用意别人也好阅读。
if buySign=1 and l<buyP then begin
buyCount:=buyCount+1;
BUY(1 ,100,market); //公式这样改试试
bb:=4;
END
经输出测试 bb=4 这句执行了 画图显示也等于4 但开单的指令 没有执行。
卖出 也有类似问题 条件满足 没指令发出 要么隔几个周期才发出
sellP:=ENTERPRICE*1.05;
这个值是无效值,原因:第一次执行策略时肯定“无持仓”,所以也就没有“ENTERPRICE”。
想法不错,但实现逻辑有问题,建议好好理理思路!
另外,公式可读性不好,可适当加些注释做说明,这样大家更容易帮你找问题。