欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件交易策略发布专区 → [交易系统]fs1

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有7712人关注过本帖树形打印复制链接

主题:[交易系统]fs1

帅哥哟,离线,有人找我吗?
z7c9
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小飞侠 帖子:1882 积分:3310 威望:0 精华:15 注册:2010/3/15 13:11:56
[交易系统]fs1  发帖心情 Post By:2011/6/11 18:11:59 [只看该作者]

runmode:1;

input:unitoftime(15,5,15,5),length(4,1,6,1);
input:initialstop(2,2,6,1),trailingstop(4,2,6,1);
input:startdate(1110104,1,9999999,1),intraday(1,0,1,1);
input:money(0,0,10,1);
input:slippage(0,0,1,1);
input:debug(0,0,2,1);

strategyname:='fs1';
prefix:='ac1_'+stklabel+'_'+strategyname+'_';
costprice:=prefix+'cost';
stopline:=prefix+'stop';

myaccount:='888888';

if initialstop>trailingstop then exit;
if startdate>1 and date<startdate then exit;
 
begin
 if stricmp(marketlabel,'sq')=0 then
  label:=strleft(stklabel,2);
   
 if stricmp(marketlabel,'dq')=0 then
  label:=strleft(stklabel,1);
 
 if stricmp(marketlabel,'zq')=0 then
  label:=strleft(stklabel,2); 
  
 if stricmp(marketlabel,'zj')=0 then
  label:=strleft(stklabel,2);
  
 if stricmp(label,'cf')=0 then begin
  marginratio:=0.17;
  commission:=12;
  tradeable:=true;
 end  
 
 if stricmp(label,'sr')=0 then begin
  marginratio:=0.16;
  commission:=6;
  tradeable:=true;
 end
 
 //if not(tradeable) then exit;
end 

begin 
 entertime1:=t0totime(timetot0(opentime(1))+60*(unitoftime+2));
 entertime2:=t0totime(timetot0(closetime(0))-60);
 exittime1:=t0totime(timetot0(closetime(0)));

 entertime:=time>=entertime1 and time<=entertime2;
 exittime:=time>=exittime1; 
 
 cond:=day<>ref(day,1) or barpos=1; 
 n:=barpos-valuewhen(cond,barpos)+1; 
 settlementprice:=trimprice(sum(amount,n)/sum(vol,n)/multiplier);  

 period:=unitoftime*length;

 topband:=ref(hhv(high,period),1)+mindiff;
 botband:=ref(llv(low,period),1)-mindiff;
 
 atr:=trimprice(ref(ma(tr,unitoftime),1)+mindiff);
 
 initialstopnum:=atr*initialstop;
 trailingstopnum:=atr*trailingstop;
 slippagenum:=slippage*mindiff;
 
 longcond:=barpos>=period and entertime and high>=topband and topband<dynainfo(54);
 longprice:=close;
 
 shortcond:=barpos>=period and entertime and low<=botband and botband>dynainfo(55);
 shortprice:=close; 
end

if workmode=1 then begin
 if tbuyholdingex(myaccount,stklabel,1)=0 and tsellholdingex(myaccount,stklabel,1)=0 then begin
  extgbdataset(costprice,0);
  extgbdataset(stopline,0);
 end
     
 if tbuyholdingex(myaccount,stklabel,1)=0 then begin
  price:=0;
  lots:=0;
 
  if longcond then
   price:=longprice;   
   
  if price>0 then begin     
   mycash:=taccount2(19,myaccount); 
     
   lots1:=intpart(mycash/(price*multiplier*marginratio));   
   
   if money=0 then begin
    lots:=lots1;
   end else begin
    lots2:=intpart(mycash*0.01*money/(initialstopnum*multiplier));
    lots:=min(lots1,lots2);
   end
  end 
  
  if lots>=1 then
   tbuy(1,lots,lmt,price+slippagenum,0,myaccount,stklabel);
 end
  
 if tsellholdingex(myaccount,stklabel,1)=0 then begin
  price:=0;
  lots:=0;
 
  if shortcond then
   price:=shortprice;
   
  if price>0 then begin    
   mycash:=taccount2(19,myaccount); 
   
   lots1:=intpart(mycash/(price*multiplier*marginratio));
        
   if money=0 then begin
    lots:=lots1;
   end else begin
    lots2:=intpart(mycash*0.01*money/(initialstopnum*multiplier));
    lots:=min(lots1,lots2); 
   end
  end
  
  if lots>=1 then
   tbuyshort(1,lots,lmt,price-slippagenum,0,myaccount,stklabel);
 end
 
 if tbuyholdingex(myaccount,stklabel,1)>0 then begin 
  price:=0;
  lots:=tbuyholdingex(myaccount,stklabel,1);
  
  if close=dynainfo(54) then
   price:=close;
  
  if exittime then begin
   if intraday=0 then begin
    price:=close;
   end else begin
    if costprice<settlementprice and settlementprice<stopline then
     exit;
    else
     price:=close; 
   end 
  end  
  
  begin   
   if extgbdata(stopline)>0 and close<=extgbdata(stopline) then
    price:=close;
 
   if extgbdata(stopline)=0 then begin    
    if commission>1 then
     extgbdataset(costprice,trimprice(tavgenterpriceex2(myaccount,stklabel,0)+2*commission/multiplier)+mindiff);
    else
     extgbdataset(costprice,trimprice(tavgenterpriceex2(myaccount,stklabel,0)*(1+commission)/(1-commission))+mindiff);
     
    extgbdataset(stopline,extgbdata(costprice)-initialstopnum);
   end
   
   if extgbdata(stopline)<extgbdata(costprice) and high-initialstopnum>=extgbdata(costprice) then
    extgbdataset(stopline,extgbdata(costprice));
   
   if extgbdata(stopline)>=extgbdata(costprice) and high-trailingstopnum>extgbdata(stopline) then
    extgbdataset(stopline,high-trailingstopnum);   
  end
  
  if price>0 then
   tsell(1,lots,lmt,price-slippagenum,0,myaccount,stklabel);
      
 end
 
 if tsellholdingex(myaccount,stklabel,1)>0 then begin
  price:=0;
  lots:=tsellholdingex(myaccount,stklabel,1);
  
  if close=dynainfo(55) then
   price:=close;  
  
  if exittime then begin
   if intraday=0 then begin
    price:=close;
   end else begin
    if costprice>settlementprice and settlementprice>stopline then
     exit;
    else
     price:=close;
   end 
  end 
  
  begin 
   if extgbdata(stopline)>0 and close>=extgbdata(stopline) then
    price:=close;
    
   if extgbdata(stopline)=0 then begin
    if commission>1 then
     extgbdataset(costprice,trimprice(tavgenterpriceex2(myaccount,stklabel,1)-2*commission/multiplier)-mindiff);
    else
     extgbdataset(costprice,trimprice(tavgenterpriceex2(myaccount,stklabel,1)*(1-commission)/(1+commission))-mindiff);
     
    extgbdataset(stopline,extgbdata(costprice)+initialstopnum);
   end 
   
   if extgbdata(stopline)>extgbdata(costprice) and low+initialstopnum<=extgbdata(costprice) then
    extgbdataset(stopline,extgbdata(costprice));
   
   if extgbdata(stopline)<=extgbdata(costprice) and low+trailingstopnum<extgbdata(stopline) then
    extgbdataset(stopline,low+trailingstopnum); 
  end  

  if price>0 then
   tsellshort(1,lots,lmt,price+slippagenum,0,myaccount,stklabel);
 end
end

if workmode=0 then begin
 margin:close*multiplier*marginratio,linethick0; 
 ss:settlementprice,colorwhite,linethick2;
 
 if tbuyholdingex(myaccount,stklabel,1)=0 and tsellholdingex(myaccount,stklabel,1)=0 then begin
  tb:topband,linethick0;
  bb:botband,linethick0;
    
  drawicon(entertime and islastbar and topband<dynainfo(54),topband,10);
  drawicon(entertime and islastbar and botband>dynainfo(55),botband,11);
 end
 
 if tbuyholdingex(myaccount,stklabel,1)>0 or tsellholdingex(myaccount,stklabel,1)>0 then begin
  cp:extgbdata(costprice),linethick0;
  sl:extgbdata(stopline),linethick0;
  wl:if(tbuyholdingex(myaccount,stklabel,1)>0,(sl-cp)*multiplier*tbuyholdingex(myaccount,stklabel,1),(cp-sl)*multiplier*tsellholdingex(myaccount,stklabel,1)),linethick0;
 end 

 if tbuyholdingex(myaccount,stklabel,1)>0 then begin   
  drawicon(islastbar and extgbdata(stopline)<extgbdata(costprice),extgbdata(stopline),11);
  drawicon(islastbar and extgbdata(stopline)=extgbdata(costprice),extgbdata(stopline),12);
  drawicon(islastbar and extgbdata(stopline)>extgbdata(costprice),extgbdata(stopline),10);     
 end
 
 if tsellholdingex(myaccount,stklabel,1)>0 then begin     
  drawicon(islastbar and extgbdata(stopline)>extgbdata(costprice),extgbdata(stopline),11);
  drawicon(islastbar and extgbdata(stopline)=extgbdata(costprice),extgbdata(stopline),12);
  drawicon(islastbar and extgbdata(stopline)<extgbdata(costprice),extgbdata(stopline),10); 
 end
end

[此贴子已经被作者于2011-10-3 11:20:41编辑过]

 回到顶部
美女呀,离线,留言给我吧!
xian_0_9
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 BOO
等级:论坛游民 帖子:378 积分:1856 威望:0 精华:0 注册:2010/1/25 18:04:12
  发帖心情 Post By:2011/6/11 20:56:13 [只看该作者]

均价线?

 回到顶部