老师您好!
发现开单命令的次序对测试结果有直接影响,例如:
AA:="macd.macd"(26,12,9);
BBB:= AA > 0 and AA > ref(AA,1) ;
SSS:= AA < 0 and AA < ref(AA,1) ;
多止赢: = HOLDING > 0 AND H > ENTERPRICE + 5; //5个点固定止盈
空止赢: = HOLDING < 0 AND L < ENTERPRICE - 5; //5个点固定止盈
if holding<0 and BBB then sellshort(1,0,thisclose),ORDERQUEUE; // (1)
if holding=0 and BBB then buy(1,1,thisclose),ORDERQUEUE; // (2)
if holding>0 and SSS then sell(1,0,thisclose),ORDERQUEUE; // (3)
if holding=0 and SSS then buyshort(1,1,thisclose),ORDERQUEUE; // (4)
空赢:SELLSHORT(空止赢 ,0,LIMITR,TRIMPRICE(ENTERPRICE-5)),ORDERQUEUE; // (5)
多赢:SELL(多止赢,0,LIMITR,TRIMPRICE(ENTERPRICE+5)),ORDERQUEUE; // (6)
如果将上述语句的次序改成:
(5)、(6)、(1)、(2)、(3)、(4),
发现两种测试结果很不一致,百思不得其解。
问题是:
止盈(平仓)语句(5)(6)应该放在什么位置才是对的。比如说“多赢”是应该放在开出多单之后,还是之前。
另外,语句“多止赢”中: H > ENTERPRICE + 5 使用了“H”是否合适?模拟或实盘中是否换为thiscolse ?
百忙之中希望得到您的解答。谢谢!
你把开多平空写一起,把开空平多写一起比如
if aaa then begin
sellshort;
buy;
end
if bbb then begin
sell;
buyshort;
end
谢谢您的回答。
你说的平空,开多,平多,开空的次序吧。这和上面的(1)(2)(3)(4)是一致的。
我想知道的是下面的两句该放在哪里才合适:
空赢:SELLSHORT(空止赢 ,0,LIMITR,TRIMPRICE(ENTERPRICE-5)),ORDERQUEUE;
多赢:SELL(多止赢,0,LIMITR,TRIMPRICE(ENTERPRICE+5)),ORDERQUEUE;
这两句并不能插进你上面的IF块里面,因为条件完全不一样。而且位置不同结果影响很大。
完全可以写一起啦
if sss then begin
sell(holding>0,);
buyshort(holding=0,);
end
if bbb then begin
sellshort(holding<0,);
buy(holding=0,);
end
谢谢您。您说的我了解啦。
呵呵。我说的是止盈(止损)语句啊。