以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- 后台程序化模型,代码开1手,实际却是两手 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=173394) |
-- 作者:jzt666 -- 发布时间:2019/12/4 21:32:34 -- 后台程序化模型,代码开1手,实际却是两手 我写的代码是开一手多,开一手空,实际结果却是两倍,这是什么原因。 //主合约开多时 GLOBALVARIABLE:BBZY=0;
//止盈 GLOBALVARIABLE:BBZS=0;
//止损 //主合约开空时 GLOBALVARIABLE:SSZY=0;
//止盈 GLOBALVARIABLE:SSZS=0;
//止损 GLOBALVARIABLE:主合约方向 = 0; GLOBALVARIABLE:N = 0; GLOBALVARIABLE:开仓时间 = 094500; GLOBALVARIABLE:平仓时间 = 114500; GLOBALVARIABLE:账户 = \'\'; GLOBALVARIABLE:主合约 = \'HSI00\'; GLOBALVARIABLE:副合约 = \'HHI00\'; 昨收 := CallStock(主合约, VTCLOSE, 6, -1);
//最新 := CallStock(主合约, VTCLOSE); 最新 := dynainfo2(7, 主合约); 涨跌值 := 最新 - 昨收; //NEWJC := ABS(CallStock(主合约, VTCLOSE, -1, 0) - CallStock(副合约, VTCLOSE, -1, 0)); NEWJC := dynainfo2(7, 主合约)-dynainfo2(7, 副合约); //CurrentTime()>=开仓时间 and CurrentTime()<=095000) and if N=0 then begin
if (涨跌值 > 0) then begin
//MSGOUT(1,\'主开多,副开空\');
//主开多,副开空
TBUY(1, 1, MKT, 0, 0, 账户, 主合约);
TBUYSHORT(1, 1, MKT, 0, 0, 账户, 副合约);
主合约方向 := 1;
//INJC := ABS(CallStock(主合约, VTCLOSE, -1, 0) - CallStock(副合约, VTCLOSE, -1, 0));
INJC := dynainfo2(7, 主合约)-dynainfo2(7, 副合约);
BBZY := INJC + 10;
BBZS := INJC -10;
N := 1;
DEBUGOUT("主开多信号N:=%.2f", N);
end
else if (涨跌值 < 0) then begin
//主开空,副开多
MSGOUT(1,\'主开空,副开多\');
TBUYSHORT(1, 1, MKT, 0, 0, 账户, 主合约);
TBUY(1, 1, MKT, 0, 0, 账户, 副合约);
主合约方向 := 0;
//INJC := ABS(CallStock(主合约, VTCLOSE, -1, 0) - CallStock(副合约, VTCLOSE, -1, 0));
INJC := dynainfo2(7, 主合约)-dynainfo2(7, 副合约);
SSZY := INJC - 10;
SSZS := INJC + 10;
N := 1;
DEBUGOUT("主开空信号N:=%.2f", N);
end end
//===============主开多止盈=============== if 主合约方向=1 and NEWJC>=BBZY then begin
//主平多
TSELL(1, 1, MKT, 0, 0, 账户, 主合约);
TSELLSHORT(1, 1, MKT, 0, 0, 账户, 副合约);
//N := 0; end //===============主开多止损=============== if 主合约方向=1 and NEWJC<=BBZS then begin
//主平多
TSELL(1, 1, MKT, 0, 0, 账户, 主合约);
TSELLSHORT(1, 1, MKT, 0, 0, 账户, 副合约);
//N := 0; end //===============主开空止盈=============== if 主合约方向=0 and NEWJC<=SSZY then begin
//主平空
TSELLSHORT(1, 1, MKT, 0, 0, 账户, 主合约);
TSELL(1, 1, MKT, 0, 0, 账户, 副合约);
//N := 0; end //===============主开空止损=============== if 主合约方向=0 and NEWJC>=SSZS then begin
//主平空
TSELLSHORT(1, 1, MKT, 0, 0, 账户, 主合约);
TSELL(1, 1, MKT, 0, 0, 账户, 副合约);
//N := 0; end //================到点全平================ //if CurrentTime()>=平仓时间 then begin //
//到点平仓 //
//全部平仓 //
if 主合约方向=1 and N=1 then begin //
//主平多 //
TSELL(1, 1, MKT, 0, 0, 账户, 主合约); //
N := 0; //
end //
else if 主合约方向=0 and N=1 then begin //
//主平空 //
TSELLSHORT(1, 1, MKT, 0, 0, 账户, 主合约); //
TSELL(1, 1, MKT, 0, 0, 账户, 副合约); //
N := 0; //
end
//end |
-- 作者:FireScript -- 发布时间:2019/12/5 9:05:11 -- 你监控了2个品种啊。套利这种,你监控一个就行了。价格都是直接用函数调用过来的,你不需要监控2个品种的。 |
-- 作者:jzt666 -- 发布时间:2019/12/5 10:46:21 -- 谢谢,按你的方法m没错 |