各位版主,早上好!
以下是我自己编写的一段代码,由于是新手,有好多地方不是很懂,还烦请多多指教:
目前遇到的主要问题是:我在公式测评中发现,开多和平多可以正常运行,
但是每次开空后,没有按照我设计的平空条件和止盈止损条件运行,
而是直接以开空的价格,马上在本周期就平掉,
我自己的想法是,可能是我设置的买入均价AVGENTERPRICE,只对开多和开空有效,
所以才产生错误,但又不知道怎么去修改..........
以下是我的代码:
INPUT:N1(10,1,100),N2(200,20,200);
MA10:=MA(C,N1);
MA200:=MA(C,N2);
IF CROSS(MA10,MA200) then
begin
BUY(holding=0,3,thisclose); //开多
SELLSHORT(holding<0,3,thisclose); //平空
end
IF CROSS(MA200,MA10) then
begin
SELL(holding>0,3,thisclose); //平多
BUYSHORT(holding=0,3,thisclose); //开空
end
IF (CLOSE-AVGENTERPRICE)>=70 THEN //止盈
BEGIN
SELL(HOLDING>0,3,MARKET);
end
IF (CLOSE-AVGENTERPRICE)<=70 THEN
BEGIN
SELLSHORT(HOLDING<0,3,MARKET);
end
IF (AVGENTERPRICE-CLOSE)>=20 THEN //止损
BEGIN
SELL(HOLDING>0,3,MARKET);
end
IF (AVGENTERPRICE-CLOSE)<=20 THEN
BEGIN
SELLSHORT(HOLDING<0,3,MARKET);
end
FLY版主,您好,多谢您的指导!
我按照您的指导,把enterbars>1,加进去了,
我的设计时在5分钟均线下运行,但是结果是,10分钟后,
不管什么任何情况,都会自动平仓,还请指教!
INPUT:N1(10,1,100),N2(200,20,200);
MA10:=MA(C,N1);
MA200:=MA(C,N2);
IF CROSS(MA10,MA200) then
begin
BUY(holding=0,3,thisclose); //开多
IF enterbars>1 then
SELLSHORT(holding<0,3,thisclose); //平空
end
IF CROSS(MA200,MA10) then
begin
SELL(holding>0,3,thisclose); //平多
BUYSHORT(holding=0,3,thisclose); //开空
end
IF (CLOSE-AVGENTERPRICE)>=70 THEN //止盈
BEGIN
SELL(HOLDING>0,3,MARKET);
end
IF (CLOSE-AVGENTERPRICE)<=70 THEN
BEGIN
IF enterbars>1 then
SELLSHORT(HOLDING<0,3,MARKET);
end
IF (AVGENTERPRICE-CLOSE)>=20 THEN //止损
BEGIN
SELL(HOLDING>0,3,MARKET);
end
IF (AVGENTERPRICE-CLOSE)<=20 THEN
BEGIN
IF enterbars>1 then
SELLSHORT(HOLDING<0,3,MARKET);
end
如果弄不清那么多关系,就写的规整和简单点
INPUT:N1(10,1,100),N2(200,20,200);
MA10:MA(C,N1);
MA200:MA(C,N2);
IF CROSS(MA10,MA200) then
begin
SELLSHORT(holding<0,3,thisclose); //平空
BUY(holding=0,3,thisclose); //开多
end
IF CROSS(MA200,MA10) then
begin
SELL(holding>0,3,thisclose); //平多
BUYSHORT(holding=0,3,thisclose); //开空
end
IF CLOSE>=ENTERPRICE+70 AND ENTERBARS>1 AND HOLDING>0 THEN //多盈
多盈:SELL(1,3,MARKET);
IF CLOSE<=ENTERPRICE-70 AND ENTERBARS>1 AND HOLDING<0 THEN
空盈:SELLSHORT(1,3,MARKET);
IF CLOSE<=ENTERPRICE-20 AND ENTERBARS>1 AND HOLDING>0 THEN //多损
多损:SELL(HOLDING>0,3,MARKET);
IF CLOSE>=ENTERPRICE+20 AND ENTERBARS>1 AND HOLDING<0 THEN
空损:SELLSHORT(1,3,MARKET);