公式网 股票指标公式源码分享 登录 注册
公式指标平网
未来函数检测
首页 金钻指标 通达信公式 大智慧公式 同花顺公式 文华财经公式 东财通公式 飞狐公式 操盘手公式 其他公式 公式解答 股票软件 股票池
当前位置:→ 公式网 > 其他公式 > 金字塔公式 > 正文 → 正文

金字塔fs2交易系统

发布时间:2015/10/25 7:06:13  浏览次数:

金字塔公式 金字塔模型策略源码:runmode:0;

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,2,1);
 input:debug(2,0,2,1);

variable:costprice=0,stopline=0;
 variable:myasset=50000,mycurve=0;

if initialstop>trailingstop then exit;
 if startdate>1 and date<startdate then exit;

database(\'provider=microsoft.jet.oledb.4.0;data source=e:\\Trade\\Report\\Report.mdb\');

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;
  
  atr:=trimprice(ref(ma(tr,unitoftime),1)+mindiff);
  
  initialstopnum:=atr*initialstop;
  trailingstopnum:=atr*trailingstop;
  slippagenum:=slippage*mindiff;
 
  topband:=ref(hhv(high,period),1)+mindiff;
  botband:=ref(llv(low,period),1)-mindiff;
 
  longcond:=barpos>=period and entertime and high>=topband;
  longprice:=max(topband,open);
 
  shortcond:=barpos>=period and entertime and low<=botband;
  shortprice:=min(botband,open);
 
  enterhour:=ref(hour,enterbars);
  enterminute:=ref(minute,enterbars);
 end

if debug=1 and ((startdate=1 and barpos=1) or date=startdate) then begin
  dbexecute(\'drop table 设置\');
  dbexecute(\'drop table 权益\');
  dbexecute(\'drop table 交易明细\');
  dbexecute(\'drop table 账户\');

 dbexecute(\'create table 设置(品种 text,周期 text,时间 text,初始资金 number,保证金率 number,佣金滑点 text)\');
  dbexecute(\'create table 权益(日期 datetime,权益 number,平仓盈亏 number,累计盈亏 number)\');
  dbexecute(\'create table 交易明细(开仓日期 datetime,合约名称 text,开仓时间 datetime,开仓价格 number,交易类型 text,平仓时间 datetime,平仓价格 number,盈亏点数 number,交易手数 number,总手续费 number,平仓盈亏 number)\'); 
 
  if commission>1 then
   comm:=numtostr(commission,0);
  else
   comm:=numtostr(commission*10000,2)+\'%%\';
 
  dwdate:=date[datacount];
  nyear:=intpart(dwdate/10000+1900);
  nmonth:=intpart(dwdate/100%100);
  nday:=intpart(dwdate%100); 
  ndate:=numtostr(year,0)+\'/\'+numtostr(month,0)+\'/\'+numtostr(day,0)+\'-\'+numtostr(nyear,0)+\'/\'+numtostr(nmonth,0)+\'/\'+numtostr(nday,0);

 dbexecute(\'insert into 设置(品种,周期,时间,初始资金,保证金率,佣金滑点) values("\'+stkname+\'","1分钟","\'+ndate+\'",500000,\'+numtostr(marginratio,2)+\',"\'+comm+\' & \'+numtostr(slippage,0)+\'")\'); 
 end

if holding=0 then begin
  costprice:=0;
  stopline:=0;
 end

if holding=0 then begin
  price:=0;
  lots:=0;
 
  if longcond then
   price:=longprice;
 
  if price>0 then begin 
   mycash:=cash(0);
  
   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
   buy(1,lots,limitr,price+slippagenum);
 end

if holding=0 then begin
  price:=0;
  lots:=0;
 
  if shortcond then
   price:=shortprice;
  
  if price>0 then begin 
   mycash:=cash(0);
  
   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
   buyshort(1,lots,limitr,price-slippagenum);
 end

if holding>0 then begin
  price:=0;
  lots:=holding;
 
  if exittime then begin
   if intraday=0 then begin
    price:=open;
   end else begin
    if costprice<settlementprice and settlementprice<stopline then
     exit;
    else
     price:=close;
   end
  end  
    
  begin
   if stopline>0 and low<=stopline then
    price:=min(stopline,open);
   
   if stopline=0 then begin
    if commission>1 then
     costprice:=trimprice(enterprice+2*commission/multiplier)+mindiff;
    else
     costprice:=trimprice(enterprice*(1+commission)/(1-commission))+mindiff;
   
    stopline:=costprice-initialstopnum;
   end
   
   if stopline<costprice and high-initialstopnum>=costprice then
    stopline:=costprice; 
  
   if stopline>=costprice and high-trailingstopnum>stopline then
    stopline:=high-trailingstopnum; 
  end
 
  if price>0 then begin
   sell(1,lots,limitr,price-slippagenum);
  
   if debug=1 then begin
    if commission>1 then
     commission:=2*commission*lots;
    else
     commission:=(enterprice+exitprice)*multiplier*commission*lots;
                       
    sql:=\'insert into 交易明细(开仓日期,合约名称,开仓时间,开仓价格,交易类型,平仓时间,平仓价格,盈亏点数,交易手数,总手续费,平仓盈亏) values("\'+
          numtostr(year,0)+\'-\'+numtostr(month,0)+\'-\'+numtostr(day,0)+\'","\'+stklabel+\'","\'+
          numtostr(enterhour,0)+\':\'+numtostr(enterminute,0)+\'",\'+numtostr(enterprice,2)+\',"Buy","\'+
          numtostr(hour,0)+\':\'+numtostr(minute,0)+\'",\'+numtostr(exitprice,2)+\',\'+
          numtostr(exitprice-enterprice,2)+\',\'+numtostr(lots,0)+\',\'+numtostr(commission,0)+\',\'+
          numtostr((exitprice-enterprice)*multiplier*lots,2)+\')\';        
    dbexecute(sql);
   end
  end
 end

if holding<0 then begin
  price:=0;
  lots:=-holding;
 
  if exittime then begin
   if intraday=0 then begin
    price:=open;
   end else begin
    if costprice>settlementprice and settlementprice>stopline then
     exit;
    else
     price:=close;
   end
  end

 begin
   if stopline>0 and high>=stopline then
    price:=max(stopline,open);
   
   if stopline=0 then begin
    if commission>1 then
     costprice:=trimprice(enterprice-2*commission/multiplier)-mindiff;
    else
     costprice:=trimprice(enterprice*(1-commission)/(1+commission))-mindiff;
   
    stopline:=costprice+initialstopnum;
   end
  
   if stopline>costprice and low+initialstopnum<=costprice then
    stopline:=costprice;
     
   if stopline<=costprice and low+trailingstopnum<stopline then
    stopline:=low+trailingstopnum;  
  end
 
  if price>0 then begin
   sellshort(1,lots,limitr,price+slippagenum);

  if debug=1 then begin
    if commission>1 then
     commission:=2*commission*lots;
    else
     commission:=(enterprice+exitprice)*multiplier*commission*lots;
      
    sql:=\'insert into 交易明细(开仓日期,合约名称,开仓时间,开仓价格,交易类型,平仓时间,平仓价格,盈亏点数,交易手数,总手续费,平仓盈亏) values("\'+
          numtostr(year,0)+\'-\'+numtostr(month,0)+\'-\'+numtostr(day,0)+\'","\'+stklabel+\'","\'+
          numtostr(enterhour,0)+\':\'+numtostr(enterminute,0)+\'",\'+numtostr(enterprice,2)+\',"Sell","\'+
          numtostr(hour,0)+\':\'+numtostr(minute,0)+\'",\'+numtostr(exitprice,2)+\',\'+
          numtostr(enterprice-exitprice,2)+\',\'+numtostr(lots,0)+\',\'+numtostr(commission,0)+\',\'+
          numtostr((enterprice-exitprice)*multiplier*lots,2)+\')\';     
    dbexecute(sql);      
   end 
  end
 end

if exittime then begin
  closeprofit:=asset-myasset;
  myasset:=asset;
  mycurve:=mycurve+closeprofit;
  if debug=1 then begin
   sql:=\'insert into 权益(日期,权益,平仓盈亏,累计盈亏) values("\'+numtostr(year,0)+\'-\'+numtostr(month,0)+\'-\'+numtostr(day,0)+\'",\'+numtostr(myasset,2)+\',\'+numtostr(closeprofit,2)+\',\'+numtostr(mycurve,2)+\')\';  
   dbexecute(sql);
  end
 end

if holding>0 then begin
  drawicon(stopline<costprice,stopline,11);
  drawicon(stopline=costprice,stopline,12);
  drawicon(stopline>costprice,stopline,10);
 end

if holding<0 then begin
  drawicon(stopline>costprice,stopline,11);
  drawicon(stopline=costprice,stopline,12);
  drawicon(stopline<costprice,stopline,10); 
 end

if debug=2 then begin
  盈亏:mycurve,noaxis,colormagenta;     
  收益:(myasset-50000)/50000,linethick0;
  次数:totaltrade,linethick0;
  胜率:percentwin,linethick0;
  连亏:maxseqloss,linethick0;
  连赢:maxseqwin,linethick0;
 end


复制上述代码粘贴到到公式管理器

 

资源下载链接   资源大小:unknow

手机移动版 - 关于我们 - 联系我们 - 广告合作 - 下载声明 - 网站帮助 - 友情链接 - 网站地图 - TOP
湘ICP备09016573号-3 增值电信业务经营ICP许可证:湘B2-20210269 湘公网安备43108102000039号
Copyright © GSZX.COM.CN ,All Rights Reserved.
股票公式,股票指标,股票软件,股票知识