等级: 免费版 
- 注册: 
 - 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); |   
 
 
 
 |