相關標簽:惠比特交易和配種專區,夢三國交易專區,夢三國交易專區速秒,靈緹格力交易專區,中京交易市場下載專區,古幣銀元交易專區,長毛德牧交易專區,夢三國交易專區在哪里,qq交易專區,
模型策略源碼: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 點擊復制上述代碼粘貼到到公式管理器
{別忘了將本網告訴您身邊的朋友,向朋友傳達有用資料,也是一種人情,你朋友會感謝你的。}