等级: 免费版
- 注册:
- 2025-8-7
- 曾用名:
|

楼主 |
发表于 2025-9-2 15:49
|
显示全部楼层
老师,运行后开空和平空,位置错位了。麻烦帮忙检查并修正一下代码
// 1. 空仓 → 开空
IF SELLSIGNAL AND 买=1 AND 卖=0 THEN BEGIN
DRAWTEXT(1,L,'卖', COLORRED);
卖:=1;
买:=0;
END
// 2. 空头 → 平空开多
IF BUYSIGNAL1 AND 卖=1 AND 买=0 THEN BEGIN
DRAWTEXT(1,L,'平1', COLORBLUE);
卖:=0;
买:=1;
END
IF BUYSIGNAL2 AND 卖=1 AND 买=0 THEN BEGIN
DRAWTEXT(1,L,'平2', COLORBLUE);
卖:=0;
买:=1;
END
IF BUYSIGNAL3 AND 卖=1 AND 买=0 THEN BEGIN
DRAWTEXT(1,L,'平3', COLORBLUE);
卖:=0;
买:=1;
END
IF BUYSIGNAL4 AND 卖=1 AND 买=0 THEN BEGIN
DRAWTEXT(1,L,'平4', COLORBLUE);
卖:=0;
买:=1;
END
IF BUYSIGNAL5 AND 卖=1 AND 买=0 THEN BEGIN
DRAWTEXT(1,L,'平5', COLORBLUE);
卖:=0;
买:=1;
END
IF BUYSIGNAL6 AND 卖=1 AND 买=0 THEN BEGIN
DRAWTEXT(1,L,'平6', COLORBLUE);
卖:=0;
买:=1;
END
IF BUYSIGNAL7 AND 卖=1 AND 买=0 THEN BEGIN
DRAWTEXT(1,L,'平7', COLORBLUE);
卖:=0;
买:=1;
END
IF BUYSIGNAL8 AND 卖=1 AND 买=0 THEN BEGIN
DRAWTEXT(1,L,'平8', COLORBLUE);
卖:=0;
买:=1;
END
//根据指定资金计算手数参考这段代码
input:zj(5000,1,1000000,1);
下单资金量:=zj;
MarginRatio:=TACCOUNT(42);//空头保证金比率. 这个要把合约信息设置里面的费率设置正确,否则函数取到的值可能是不对的。
bzj:=Close*Multiplier*MarginRatio;//一手保证金占用
ss1:=Intpart(下单资金量/(bzj));//根据资金ZJ计算的开仓手数
//最终结果
//ss1可能会有计算出为0 的情况,而恰好为手数参数为0在函数中是满仓开的含义。因此再次处理下,当ss1为0情况下默认按下一手处理。
ss:if(ss1>0,ss1,1);
IF SELLSIGNAL THEN
SELLSHORT(HOLDING<0,HOLDING,MARKET);
IF BUYSIGNAL1 OR BUYSIGNAL2 OR BUYSIGNAL3 OR BUYSIGNAL4 OR BUYSIGNAL5 OR BUYSIGNAL6 OR BUYSIGNAL7 OR BUYSIGNAL8 THEN
BUYSHORT(HOLDING=0,SS,MARKET); |
|