小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

期貨TB編程:夾板交易系統(tǒng)

 分界交易 2015-03-09

期貨TB編程:

夾板交易系統(tǒng)

    夾板在實(shí)盤中是一個(gè)很常見的運(yùn)用,用于吃住震蕩行情。它有個(gè)上軌和一個(gè)下軌,行情突破上軌就做空;突破下軌就做多,在上下軌之間來回吃。如圖:

TwoLines.jpg

2008-5-24 13:52:23 上傳
下載附件 (59.67 KB)


代碼如下:



Params
       Numeric   upperLine(100);
       Numeric   lowerLine(100);
       Numeric   StopInterval(150);

       Numeric    firstLots(4);    // 手?jǐn)?shù)(僅為正數(shù))
       Numeric    today(26);     // 日期(5月22日,則填入22)

Vars
       Numeric   tem;

       Numeric   needPosition;   // 當(dāng)前需要建立的頭寸(正數(shù)為多頭,負(fù)數(shù)為空頭,零為全部平光)
       Numeric   needPrice;    // 建立頭寸時(shí)下單的價(jià)格
       NumericSeries  wantStopLong;   // 多頭止損的位置
       NumericSeries  wantStopShort;   // 空頭止損的位置

Begin
       if(currentBar == 0)
       {
            // 初始化序列變量
            wantStopLong = -1;
            wantStopShort = -1;
       }Else
       {
            wantStopLong = wantStopLong[1]; 
            wantStopShort = wantStopShort[1]; 
       }
       if(day != today)
       {
            // 過濾非指定日期的BAR
            return ;
       }

       // 計(jì)算多、空頭止損的位置
       wantStopLong = lowerLine - stopInterval; 
       wantStopShort = upperLine + stopInterval;


       // 把計(jì)算好的值輸出來看看(這是調(diào)試的重要技巧?。。。?!)
       Commentary("wantStopLong:"+Text(wantStopLong));
       Commentary("wantStopShort:"+Text(wantStopShort));
       tem = 0;
       if(NumLosTrades == 0) // 當(dāng)日從來沒有止損過,開始準(zhǔn)備計(jì)算。開平倉的方法都包裝在OpenCoverFor2Lines函數(shù)中
       {
            // OpenCoverFor2Lines函數(shù)包裝了開平倉算法,其用意如下:
            // 1、返回值為零表示不做任何頭寸操作,非零表示要操作
            // 2、返回值為非零時(shí),needPosition寫入了當(dāng)前要建立的頭寸大小和方向,needPrice寫入了以什么價(jià)格去建立該頭寸
            tem = OpenCoverFor2Lines(MarketPosition(),firstLots,upperLine,lowerLine,wantStopShort,wantStopLong,needPosition,needPrice);
       }

       Commentary("needPosition:"+Text(needPosition));
       Commentary("needPrice:"+Text(needPrice));

       if(tem == 0)
       {
            // 不操作任何東西,返回!
            return ;
       }
       if(MarketPosition == 0)
       {
            if(needPosition > 0)
            {
                 // 當(dāng)前無倉,開始建立多頭
                 buy(abs(needPosition),needPrice);
            }Else
            {
                 // 當(dāng)前無倉,開始建立空頭
                 SellShort(abs(needPosition),needPrice);
            }
            return ;
       }
       if(MarketPosition > 0)
       {
            if(needPosition < 0)
            {
                 // 當(dāng)前多頭,要求反轉(zhuǎn)為空頭
                 SellShort(abs(needPosition),needPrice);
            }Else
            {
                 // 當(dāng)前多頭,要求平倉
                 Sell(0,needPrice);
            }
        return ;
       }
       if(MarketPosition < 0)
       {
            if(needPosition > 0)
            {
                 // 當(dāng)前空頭,要求反轉(zhuǎn)為多頭
                 buy(abs(needPosition),needPrice);
            }Else
            {
                 // 當(dāng)前空頭,要求平倉
                 BuyToCover(0,needPrice);
            }
       }
       return 0;
End

 

//OpenCoverFor2Lines函數(shù)代碼

// 返回值: 1:有所動(dòng)作,0:沒有動(dòng)作
// 返回值為非零時(shí),把當(dāng)前要建立的頭寸大小和方向?qū)懭雗eedPosition,把以什么價(jià)格去建立該頭寸寫入needPrice
// 返回值: 1:有所動(dòng)作,0:沒有動(dòng)作
// 返回值為非零時(shí),把當(dāng)前要建立的頭寸大小和方向?qū)懭雗eedPosition,把以什么價(jià)格去建立該頭寸寫入needPrice

Params
        Numeric         currentPosition(0);                // 當(dāng)前頭寸,可正可負(fù)
        Numeric        firstLots(0);

        Numeric         wantShort(120);                // 開空倉位置
        Numeric         wantLong(8);                         // 開多倉位置
       
        Numeric        wantStopShort(0);                // 空頭止損的位置
        Numeric        wantStopLong(0);                // 多頭止損的位置

       
        // 注意:以下兩個(gè)都是引用變量?。。。?br>         NumericRef        needPosition;    // 經(jīng)過計(jì)算后的當(dāng)前頭寸,正數(shù):建立多倉,負(fù)數(shù):建立空倉,零:平光所有頭寸
        NumericRef needPrice;              // 建立needPosition時(shí)的價(jià)格
       
Vars
        Numeric                         tem;
       
Begin

        // 14:55:00平掉當(dāng)日所有頭寸
        if(time >= 0.1455 && currentPosition != 0)
        {
                needPosition = 0;
                needPrice = close ;
                return 1;
        }
        if(currentPosition == 0)
        {
                // 無倉,準(zhǔn)備侍機(jī)開倉
                if(close <= wantLong)
                {
                        // 多頭
                        needPosition = firstLots;
                        needPrice = wantLong;
                        return 1;
                }
                if(close >= wantShort)
                {
                        // 空頭
                        needPosition = -1 * firstLots;
                        needPrice = wantShort;
                        return 1;
               
                }
                return 0;
        }
       
        if(currentPosition > 0)
        {
                // 持多倉,準(zhǔn)備止損或反轉(zhuǎn)
                if(close >= wantShort)
                {
                        // 反轉(zhuǎn)
                        needPosition = -1 * firstLots;
                        needPrice = wantShort;
                        return 1;
                }
               
                if(close <= wantStopLong)
                {
                        // 止損
                        needPosition = 0;
                        needPrice = wantStopLong;
                        return 1;
                       
                }
                return 0;
        }
        if(currentPosition < 0)
        {
                // 持空倉,準(zhǔn)備止損或反轉(zhuǎn)
                if(close <= wantLong)
                {
                        // 反轉(zhuǎn)
                        needPosition = firstLots;
                        needPrice = wantLong;
                        return 1;
                }
               
                if(close >= wantStopShort)
                {
                        // 止損
                        needPosition = 0;
                        needPrice = wantStopShort;
                        return 1;
                       
                }
                return 0;
        }
          return 0;
End

 

//初學(xué)者一定要認(rèn)真體會(huì)OpenCoverFor2Lines函數(shù),為什么需要把開平倉算法包裝到函數(shù)里。夾板是個(gè)半自動(dòng)的系統(tǒng),因?yàn)樯舷萝壎夹枰鳛閰?shù)輸入。當(dāng)你要轉(zhuǎn)換成全自動(dòng)系統(tǒng)的時(shí)候,那么上下軌就需要根據(jù)行情動(dòng)態(tài)計(jì)算出來。把計(jì)算出來的值作為參數(shù)輸入OpenCoverFor2Lines函數(shù)即可,如此程序就可以方便地拓展而不需要大改動(dòng)。甚至你還可以再做一個(gè)函數(shù)用于動(dòng)態(tài)計(jì)算上下軌。

 

if(currentBar == 0)
{
    // 初始化序列變量
    wantStopLong = -1;
    wantStopShort = -1;
}Else
{
    wantStopLong = wantStopLong[1]; 
    wantStopShort = wantStopShort[1]; 
}

//上一段代碼是使用序列變量時(shí)的常見用法,非常重要的用法。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多