以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  请査一下问题出在哪  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=93544)

--  作者:心静a
--  发布时间:2016/3/2 11:27:39
--  请査一下问题出在哪

老师,请求帮助检查一下,要求是当平仓出现亏损时,下次开仓为前仓单的2倍开仓,

                现在连续六次亏损都是按2倍的量开仓的,当平仓到64时还亏损时,下次开仓应该为124手,开仓手数dd显示为124手,但k线图上实际开仓为100手或其它数字,为什么不按开仓手数dd下单,

      下面代码可加载到螺纹钢1605合约,3分钟k线图,调出3月2日01.57分钟k线,下次开仓dd1显示为124手,实际开了100手,查一下,为什么不按dd1开仓,

variable:a1=0;
INPUT:ss(1,1,10,1);
手数:=ss;
//交易条件
MA1:MA(CLOSE,60);
平空开多条件:=CROSS(c,MA1);//开多平空条件
平多开空条件:=CROSS(MA1,c);//开空平多条件
//********************************************************************************日内第一次开仓,
N:=todaybar;
BKN:=COUNT(CROSS(c,MA1),N);
SKN:=COUNT(CROSS(MA1,c),N);
BKN1:=BKN=1 and CROSS(C,MA1);//当日内日未出现过BK信号并且CROSS(C,MA1),第一次开仓
SKN1:=SKN=1 and CROSS(MA1,C);
//多头开仓
    IF  BKN1  THEN  BEGIN//
 开多1:BUY(1,手数,MARKETr);
  a1:=0;                                  //当日第一次开仓赋值0
END
 
//空头开仓
   IF SKN1 THEN BEGIN //
开空1:BUYSHORT(1,手数,MARKETr);
   a1:=0;                                  //当日第一次开仓赋值0
END
//*************************************************************************************平空
if 平空开多条件 and holding<0 then  begin
 取得持仓量:=ABS(holding),NODRAW;//取得开空手数,
 取平空持仓量: 取得持仓量,NODRAW;//取得开空手数,
 SELLSHORT(1,holding,MARKETr);
end       
a1:=NUMPROFIT(1),NODRAW;//取本次平仓盈亏值 

//*****************************************************************************************开多
if 平空开多条件 then  begin 
S1:取得持仓量,NODRAW;//取得开空手数,
YK1:a1,NODRAW;//本次平仓盈亏值,
TJA0:= YK1 =  0  ; //前一仓单手数  
TJA1:= YK1 >  0  ;  //下次开仓为N手,
TJA2:= YK1 <  0  ; //前一仓单手数+1手      
DD:=IF(TJA0,手数,IF(TJA1,S1,IF(TJA2,S1*2,NODRAW)));
DD20:DD,NODRAW;
BUY(holding=0,DD,MARKETr);
DD21:DD,NODRAW; 
end

//*****************************************************************************平多                           
if 平多开空条件 and holding>0 then begin
 取得持仓量1:=holding,NODRAW;//取得开空手数
  取平多持仓量1: 取得持仓量1,NODRAW;//取得开空手数
SELL(1,holding,MARKETr);
end       
a1:=NUMPROFIT(1),NODRAW;//取本次平仓盈亏值 

//***********************************************************************************************开空
if 平多开空条件 then  begin 
S2: 取得持仓量1,NODRAW;//取得开多手数
YK2:a1,NODRAW;//本次平仓盈亏值,
TJA0:= YK2 =  0  ; //前一仓单手数  
TJA1:= YK2 >  0  ;  //下次开仓为N手,
TJA2:= YK2 <  0  ; //前一仓单手数+1手      
DD1:=IF(TJA0,手数,IF(TJA1,S2,IF(TJA2,S2*2,NODRAW)));
DD10:DD1,NODRAW;
BUYSHORT(holding=0,DD1,MARKETr);
DD11:DD1,NODRAW;
end
 
//*********************************************************************************************收盘淸仓
if time=closetime(0) then begin
多単清仓:sell (1,0,marketr);
空単清仓:sellshort(1,0,marketr);
end       


--  作者:jinzhe
--  发布时间:2016/3/2 11:28:49
--  
你算下剩下的虚拟资金够不够开120多手,是不是满仓就只能开100手
--  作者:心静a
--  发布时间:2016/3/2 11:39:11
--  

是的虚拟资金不够开了,谢谢!

请老师帮我看一下,这样写法结构对不对


--  作者:jinzhe
--  发布时间:2016/3/2 13:08:11
--  
理论上没错,就要看实际应用中的情况了
--  作者:心静a
--  发布时间:2016/3/8 19:34:04
--  
请求老师将1楼代码改写成后台源码,谢谢老师!
--  作者:jinzhe
--  发布时间:2016/3/9 9:04:01
--  

 请用户出示下专业版帐号

[此贴子已经被作者于2016/3/9 9:04:27编辑过]