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

楼主 |
发表于 2025-10-27 15:21
|
显示全部楼层
我检查了确实顺序没有错。麻烦老师帮忙检查一下代码
VARIABLE:买=0,卖=1;
BUYSIGNAL:=CON1 AND CON2 ; //买入信号条件
IF BUYSIGNAL AND 买=0 AND 卖=1 THEN BEGIN
DRAWTEXT(1,L,'买', COLORRED);
买:=1;
卖:=0;
END
//买入信号所在K线相关指标定义
BO:= REF(OPEN,BARSLAST(BUYSIGNAL));// 买入信号的K线开盘价
BC:= REF(CLOSE,BARSLAST(BUYSIGNAL));// 买入信号的K线收盘价
BL:= REF(LOW,BARSLAST(BUYSIGNAL));// 买入信号的K线最低价
BV:REF(VOL,BARSLAST(BUYSIGNAL)); //最近一个买入信号所在K线的成交量
BKPH30: REF(PH30,BARSLAST(BUYSIGNAL));// 买入信号的K线PH30
//多单平仓条件
CON01:openprofit/MULTIPLIER>abs(holding)*3*mindiff; // 止盈:突破方向盈利达到3个最小变动单位
CON02:openprofit/MULTIPLIER<-abs(holding)*2*mindiff; // 止损:突破方向方向波段达到2个最小变动单位
CON03:enterbars>15; //强制平仓:持仓超过15分钟
SELLSIGNAL1:=CON01 ; //卖出信号条件
SELLSIGNAL2:=CON02 ; //卖出信号条件
SELLSIGNAL3:=CON03 ; //卖出信号条件
IF SELLSIGNAL1 AND 买=1 AND 卖=0 THEN BEGIN
DRAWTEXT(1,L,'平1', COLORBLUE);
买:=0;
卖:=1;
END
IF SELLSIGNAL2 AND 买=1 AND 卖=0 THEN BEGIN
DRAWTEXT(1,L,'平2', COLORBLUE);
买:=0;
卖:=1;
END
IF SELLSIGNAL3 AND 买=1 AND 卖=0 THEN BEGIN
DRAWTEXT(1,L,'平3', COLORBLUE);
买:=0;
卖:=1;
END
//根据指定资金计算手数参考这段代码
input:zj(1000,1,1000000,1);
下单资金量:=zj;
MarginRatio:=TACCOUNT(41);//多头保证金比率. 这个要把合约信息设置里面的费率设置正确,否则函数取到的值可能是不对的。
bzj:=Close*Multiplier*MarginRatio;//一手保证金占用
ss1:=Intpart(下单资金量/(bzj));//根据资金ZJ计算的开仓手数
//最终结果
//ss1可能会有计算出为0 的情况,而恰好为手数参数为0在函数中是满仓开的含义。因此再次处理下,当ss1为0情况下默认按下一手处理。
ss:if(ss1>0,ss1,1);
IF BUYSIGNAL THEN
BUY(HOLDING=0,15%,MARKET),PERTRADER;
IF SELLSIGNAL1 OR SELLSIGNAL2 OR SELLSIGNAL3 THEN
SELL(HOLDING>0,HOLDING,MARKET); |
|