最新公告
  • 欢迎您光临九毛八公式指标网www.9m8.cn,本站全新改版试运行,期间内容全部免费,欢迎下载!欢迎加入本站VIP
  • 金字塔fs2交易系统

    正文概述    2024-04-14 10:59:59  

    金字塔公式 金字塔模型策略源码: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:TradeReportReport.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


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

    九毛八公式指标,一个优质的公式指标平台!
    九毛八公式指标 » 金字塔fs2交易系统 加入收藏