• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            穩(wěn)定盈利的期貨交易方法-量化趨勢(shì)交易

            alantop -專業(yè)量化投資者

            愛(ài)好:量化投資,逆向工程,滲透
            隨筆 - 595, 文章 - 0, 評(píng)論 - 921, 引用 - 0
            數(shù)據(jù)加載中……

            tb跨周期函數(shù)

            //------------------------------------------------------------------------
            // 簡(jiǎn)稱: k_Bar
            // 名稱: 跨周期函數(shù)--基礎(chǔ)BAR數(shù)據(jù)
            // 類別: 用戶函數(shù)
            // 類型: 用戶函數(shù)
            // 輸出: 數(shù)值型
            //------------------------------------------------------------------------


            Params 
                Numeric TimeFrame(
            1440);    
                    
            // 目標(biāo)時(shí)間周期:按月線=4周(40320),周線=7天(10080),日線=24小時(shí)(1440)
                    
            // 其他日內(nèi)的周期等于相應(yīng)的分鐘數(shù),如:1小時(shí)=60, 30分鐘=30。。。
                    
            // 1分鐘圖表,支持不規(guī)則分鐘數(shù),如3分鐘、8分鐘、14分鐘等
                    
                Numeric BarsBack(
            0); 
                    
            // 目標(biāo)時(shí)間周期BAR偏移:
                    
            // 1--表示當(dāng)前周期下的當(dāng)前BAR對(duì)應(yīng)目標(biāo)周期的前一根BAR
                    
            // 0--表示當(dāng)前周期下的當(dāng)前BAR對(duì)應(yīng)目標(biāo)周期的當(dāng)前BAR截止到目前為止的BAR數(shù)據(jù)值

            Vars
                Numeric TradeDate;                
            // 當(dāng)前K線實(shí)際交易日期(主要解決夜盤(pán)問(wèn)題)
                Numeric TradeHour;                // 當(dāng)前K線實(shí)際交易時(shí)間(小時(shí))
                Numeric TradeMinute;            // 當(dāng)前K線實(shí)際交易時(shí)間(分鐘)
                NumericSeries Index;            // 當(dāng)前BAR在TimeFrame時(shí)間周期下的索引值
                Numeric SessionStartHour;        // 當(dāng)前K線實(shí)際的交易日的第一節(jié)交易的起始時(shí)間(小時(shí))


                NumericSeries barCnt;            
            // 讀取目標(biāo)周期上一根BAR的數(shù)據(jù)在當(dāng)前周期下需要回溯的BAR數(shù)
                NumericSeries Ht_CurBar;        // 當(dāng)前BAR在目標(biāo)周期下對(duì)應(yīng)的CurrentBar
                Numeric barCntSum;                 // 臨時(shí)變量,返回目標(biāo)周期數(shù)據(jù)需要回溯的BAR數(shù)
                NumericSeries Ht_Open;            // 目標(biāo)時(shí)間周期的開(kāi)盤(pán)價(jià)
                NumericSeries Ht_High;            // 目標(biāo)時(shí)間周期的最高價(jià)
                NumericSeries Ht_Low;            // 目標(biāo)時(shí)間周期的最低價(jià)
                NumericSeries Ht_Close;            // 目標(biāo)時(shí)間周期的收盤(pán)價(jià)
                NumericSeries Ht_Vol;            // 目標(biāo)時(shí)間周期的成交量
                NumericSeries Ht_OpenInt;        // 目標(biāo)時(shí)間周期的持倉(cāng)量
                bool condition(false);            // 判斷在目標(biāo)時(shí)間是否屬于不同根BAR
                Numeric i;
                
            Begin

                 TradeDate 
            = TrueDate(0);         // 取實(shí)際交易日期

                
            // 根據(jù)TimeFrame分別處理
                If(TimeFrame == 40320)            // 月線
                {
                    Index 
            = (YearFromDateTime(TradeDate) - 1970* 12 + MonthFromDateTime(TradeDate);
                }
                Else If(TimeFrame 
            == 10080)        // 周線
                {
                    Index 
            = IntPart(DateDiff(19700105,TradeDate)/7);
                }
                Else If(TimeFrame 
            == 1440)        // 日線
                {
                    Index 
            = DateDiff(19700105,TradeDate);
                }
                Else
                {
                    TradeHour 
            = HourFromDateTime(Time);
                    TradeMinute 
            = MinuteFromDateTime(Time);

                    
            // 取當(dāng)前品種,第一節(jié)交易的開(kāi)始小時(shí)數(shù)
                    SessionStartHour = IntPart(GetSessionStartTime(0)*100);

                    
            // 解決4小時(shí)圖的時(shí)間劃分比較特殊問(wèn)題
                    If(TimeFrame == 240) SessionStartHour = IIF(SessionStartHour == 21,20,8);
                    
                    
            // 按當(dāng)前BAR對(duì)應(yīng)時(shí)間,除以TimeFrame的分鐘數(shù),得到的商為索引值,索引值相同的在大周期上屬于同一根BAR
                    Index = DateDiff(19700105,TradeDate) * (IntPart(1439/TimeFrame)+1+ IntPart((IIF(TradeHour >= SessionStartHour, TradeHour - SessionStartHour,
                    TradeHour 
            + 24 - SessionStartHour) * 60 + TradeMinute)/TimeFrame);
                }

                
            // 索引值不同的,則說(shuō)明屬于不同BAR
                condition = Index <> Index[1];

                If(CurrentBar
            ==0)                // 如果是第一根Bar, Ht_CurBar=0
                {
                    barCnt 
            = 0;
                    Ht_CurBar 
            = 0;
                    Ht_Open 
            = Open;
                    Ht_High 
            = High;
                    Ht_Low 
            = Low;
                    Ht_Close 
            = Close;
                    Ht_Vol 
            = Vol;
                    Ht_OpenInt 
            = OpenInt;
                }
                Else
                {
                    If(Condition)              
                    
            // 如果在目標(biāo)周期下,屬于另一根K線,則Ht_CurBar加1
                    {
                        barCnt 
            = 1;
                        Ht_CurBar 
            = Ht_CurBar[1+ 1;
                        Ht_Open 
            = Open;
                        Ht_High 
            = High;
                        Ht_Low 
            = Low;
                        Ht_Vol 
            = Vol;
                    }
                    Else
                    
            // 如果在目標(biāo)周期下,屬于同一根K線,則Ht_CurBar不變,但最高價(jià)和最低價(jià)要記錄價(jià)格的變化,成交量要累加
                    {
                        barCnt 
            = barCnt[1+ 1;
                        Ht_High 
            = Max(Ht_High[1],High);
                        Ht_Low 
            = Min(Ht_Low[1],Low);
                        Ht_Vol 
            = Ht_Vol[1+ Vol;
                    }
                    
            // 收盤(pán)價(jià)和持倉(cāng)量總是取最新值
                    Ht_Close = Close;
                    Ht_OpenInt 
            = OpenInt;
                }

            //    FileAppend("c:\\qqqq.txt","DT="+Text(Date+Time)+" Index="+Text(Index)+" CurrentBar="+Text(CurrentBar)+" barCnt="+text(barCnt)+" Ht_CurBar="+text(Ht_CurBar)+" Ht_Open="+text(Ht_Open)+" Ht_High="+text(Ht_High)
            //    +" Ht_Low="+Text(Ht_Low)+" Ht_Close="+Text(Ht_Close)+" Ht_Vol="+Text(Ht_Vol)+" Ht_OpenInt="+Text(Ht_OpenInt));
                
                
            // 前面在當(dāng)前周期的每根BAR,記錄了它對(duì)應(yīng)的目標(biāo)時(shí)間周期的開(kāi)高低收等數(shù)據(jù)。
                
            // 接下來(lái)把每根BAR對(duì)應(yīng)的數(shù)據(jù)返回給調(diào)用本函數(shù)的公式(通過(guò)全局變量)
                barCntSum = barCnt ;
                If(BarsBack 
            == 0)
                
            // 如果BarsBack為0,則當(dāng)前BAR記錄的是當(dāng)前BAR所對(duì)應(yīng)目標(biāo)周期的當(dāng)前BAR截止到目前為止的BAR數(shù)據(jù)值
                {
                    barCntSum 
            = 0 ;
                }
                
            // 如果BarsBack為1,則當(dāng)前BAR記錄的是當(dāng)前BAR所對(duì)應(yīng)目標(biāo)周期的前一根BAR的數(shù)據(jù)值
                Else
                {
                    barCntSum 
            = barCnt ;
                }

                
            // 將目標(biāo)時(shí)間周期下的BAR數(shù)據(jù)寫(xiě)入全局變量返回調(diào)用公式
                SetGlobalVar2("Ht_curbar",Ht_CurBar);
                SetGlobalVar2(
            "Ht_open",Ht_Open[barCntSum]);
                SetGlobalVar2(
            "Ht_high",Ht_High[barCntSum]);
                SetGlobalVar2(
            "Ht_low",Ht_Low[barCntSum]);
                SetGlobalVar2(
            "Ht_close",Ht_Close[barCntSum]);
                SetGlobalVar2(
            "Ht_vol",Ht_Vol[barCntSum]);
                SetGlobalVar2(
            "Ht_openInt",Ht_OpenInt[barCntSum]);

                
            // 將讀取大周期數(shù)據(jù)的回溯BAR數(shù)作為函數(shù)的返回值返回
                Return barCnt;
                
            End


             
            /* 
            Params 
                Numeric TimeFrame(1440);    
                    // 目標(biāo)時(shí)間周期:按月線=4周(40320),周線=7天(10080),日線=24小時(shí)(1440)
                    // 其他日內(nèi)的周期等于相應(yīng)的分鐘數(shù),如:1小時(shí)=60, 30分鐘=30。。。
                    // 1分鐘圖表,支持不規(guī)則分鐘數(shù),如3分鐘、8分鐘、14分鐘等
                    
                Numeric BarsBack(0); 
                    // 目標(biāo)時(shí)間周期BAR偏移:
                    // 1--表示當(dāng)前周期下的當(dāng)前BAR對(duì)應(yīng)目標(biāo)周期的前一根BAR
                    // 0--表示當(dāng)前周期下的當(dāng)前BAR對(duì)應(yīng)目標(biāo)周期的當(dāng)前BAR截止到目前為止的BAR數(shù)據(jù)值

            Vars
                Numeric TradeDate;                // 當(dāng)前K線實(shí)際交易日期(主要解決夜盤(pán)問(wèn)題)
                Numeric TradeHour;                // 當(dāng)前K線實(shí)際交易時(shí)間(小時(shí))
                Numeric TradeMinute;            // 當(dāng)前K線實(shí)際交易時(shí)間(分鐘)
                NumericSeries Index;            // 當(dāng)前BAR在TimeFrame時(shí)間周期下的索引值
                Numeric SessionStartHour;        // 當(dāng)前K線實(shí)際的交易日的第一節(jié)交易的起始時(shí)間(小時(shí))


                NumericSeries barCnt;            // 讀取目標(biāo)周期上一根BAR的數(shù)據(jù)在當(dāng)前周期下需要回溯的BAR數(shù)
                NumericSeries Ht_CurBar;        // 當(dāng)前BAR在目標(biāo)周期下對(duì)應(yīng)的CurrentBar
                Numeric barCntSum;                 // 臨時(shí)變量,返回目標(biāo)周期數(shù)據(jù)需要回溯的BAR數(shù)
                NumericSeries Ht_Open;            // 目標(biāo)時(shí)間周期的開(kāi)盤(pán)價(jià)
                NumericSeries Ht_High;            // 目標(biāo)時(shí)間周期的最高價(jià)
                NumericSeries Ht_Low;            // 目標(biāo)時(shí)間周期的最低價(jià)
                NumericSeries Ht_Close;            // 目標(biāo)時(shí)間周期的收盤(pán)價(jià)
                NumericSeries Ht_Vol;            // 目標(biāo)時(shí)間周期的成交量
                NumericSeries Ht_OpenInt;        // 目標(biāo)時(shí)間周期的持倉(cāng)量
                bool condition(false);            // 判斷在目標(biāo)時(shí)間是否屬于不同根BAR
                Numeric i;
                
            Begin

                 TradeDate = TrueDate(0);         // 取實(shí)際交易日期

                // 根據(jù)TimeFrame分別處理
                If(TimeFrame == 40320)            // 月線
                {
                    Index = (YearFromDateTime(TradeDate) - 1970) * 12 + MonthFromDateTime(TradeDate);
                }
                Else If(TimeFrame == 10080)        // 周線
                {
                    Index = IntPart(DateDiff(19700105,TradeDate)/7);
                }
                Else If(TimeFrame == 1440)        // 日線
                {
                    Index = DateDiff(19700105,TradeDate);
                }
                Else
                {
                    TradeHour = HourFromDateTime(Time);
                    TradeMinute = MinuteFromDateTime(Time);

                    // 取當(dāng)前品種,第一節(jié)交易的開(kāi)始小時(shí)數(shù)
                    SessionStartHour = IntPart(GetSessionStartTime(0)*100);
                    
                    // 按當(dāng)前BAR對(duì)應(yīng)時(shí)間,除以TimeFrame的分鐘數(shù),得到的商為索引值,索引值相同的在大周期上屬于同一根BAR
                    Index = DateDiff(19700105,TradeDate) * (IntPart(1440/TimeFrame)+1) + IntPart((IIF(TradeHour >= SessionStartHour, TradeHour - SessionStartHour,TradeHour + 24 - SessionStartHour) * 60 + TradeMinute)/TimeFrame);
                }

                // 索引值不同的,則說(shuō)明屬于不同BAR
                condition = Index <> Index[1];

                If(CurrentBar==0)                // 如果是第一根Bar, Ht_CurBar=0
                {
                    barCnt = InvalidNumeric;
                    Ht_CurBar = InvalidNumeric;
                    Ht_Open = InvalidNumeric;
                    Ht_High = InvalidNumeric;
                    Ht_Low = InvalidNumeric;
                    Ht_Close = InvalidNumeric;
                    Ht_Vol = InvalidNumeric;
                    Ht_OpenInt = InvalidNumeric;
                }
                Else
                {
                    If(Condition)              
                    // 如果在目標(biāo)周期下,屬于另一根K線,則Ht_CurBar加1
                    {
                        If(Ht_CurBar[1] == InvalidNumeric)
                        {
                            Ht_CurBar = 0;
                        }
                        Else
                        {
                            Ht_CurBar = Ht_CurBar[1] + 1;
                        }
                        barCnt = 1;
                        Ht_Open = Open;
                        Ht_High = High;
                        Ht_Low = Low;
                        Ht_Vol = Vol;
                    }
                    Else
                    // 如果在目標(biāo)周期下,屬于同一根K線,則Ht_CurBar不變,但最高價(jià)和最低價(jià)要記錄價(jià)格的變化,成交量要累加
                    {
                        If(Ht_CurBar[1] <> InvalidNumeric)
                        {
                            barCnt = barCnt[1] + 1;
                            Ht_High = Max(Ht_High[1],High);
                            Ht_Low = Min(Ht_Low[1],Low);
                            Ht_Vol = Ht_Vol[1] + Vol;
                        }
                    }
                    // 收盤(pán)價(jià)和持倉(cāng)量總是取最新值
                    If(Ht_CurBar <> InvalidNumeric)
                    {
                        Ht_Close = Close;
                        Ht_OpenInt = OpenInt;
                    }
                }
                
                //Commentary("barCnt = "+Text(barCnt));
                //Commentary("Ht_CurBar="+text(Ht_CurBar));
                
                //FileAppend("c:\\qqqq.txt","DT="+Text(Date+Time)+" Index="+Text(Index)+" CurrentBar="+Text(CurrentBar)+" barCnt="+text(barCnt)+" Ht_CurBar="+text(Ht_CurBar)+" Ht_Open="+text(Ht_Open)+" Ht_High="+text(Ht_High)
                //+" Ht_Low="+Text(Ht_Low)+" Ht_Close="+Text(Ht_Close)+" Ht_Vol="+Text(Ht_Vol)+" Ht_OpenInt="+Text(Ht_OpenInt));
                
                // 前面在當(dāng)前周期的每根BAR,記錄了它對(duì)應(yīng)的目標(biāo)時(shí)間周期的開(kāi)高低收等數(shù)據(jù)。
                // 接下來(lái)把每根BAR對(duì)應(yīng)的數(shù)據(jù)返回給調(diào)用本函數(shù)的公式(通過(guò)全局變量)
                barCntSum = barCnt ;
                If(BarsBack == 0)
                // 如果BarsBack為0,則當(dāng)前BAR記錄的是當(dāng)前BAR所對(duì)應(yīng)目標(biāo)周期的當(dāng)前BAR截止到目前為止的BAR數(shù)據(jù)值
                {
                    barCntSum = 0 ;
                }
                // 如果BarsBack為1,則當(dāng)前BAR記錄的是當(dāng)前BAR所對(duì)應(yīng)目標(biāo)周期的前一根BAR的數(shù)據(jù)值
                Else
                {
                    barCntSum = barCnt ;
                }

                // 將目標(biāo)時(shí)間周期下的BAR數(shù)據(jù)寫(xiě)入全局變量返回調(diào)用公式
                SetGlobalVar2("Ht_curbar",Ht_CurBar);
                SetGlobalVar2("Ht_open",Ht_Open[barCntSum]);
                SetGlobalVar2("Ht_high",Ht_High[barCntSum]);
                SetGlobalVar2("Ht_low",Ht_Low[barCntSum]);
                SetGlobalVar2("Ht_close",Ht_Close[barCntSum]);
                SetGlobalVar2("Ht_vol",Ht_Vol[barCntSum]);
                SetGlobalVar2("Ht_openInt",Ht_OpenInt[barCntSum]);

                // 將讀取大周期數(shù)據(jù)的回溯BAR數(shù)作為函數(shù)的返回值返回
                Return barCnt;
                
            End 
            */


            posted on 2019-07-19 22:26 AlanTop 閱讀(978) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 量化趨勢(shì)交易

            欧美精品福利视频一区二区三区久久久精品 | 久久99这里只有精品国产| 一级做a爰片久久毛片16| Xx性欧美肥妇精品久久久久久| 久久国产视频99电影| 久久人人爽人人人人片av| 久久久久久久97| 国产69精品久久久久9999| 久久久久久久久久久久久久| 国产精品岛国久久久久| 久久精品国产亚洲Aⅴ蜜臀色欲| 欧美精品乱码99久久蜜桃| 久久久久四虎国产精品| 18禁黄久久久AAA片| 久久久久人妻精品一区二区三区| 中文字幕久久欲求不满| 国产精品乱码久久久久久软件| 精品久久久久久久久午夜福利| 色综合久久天天综线观看| 精品久久久久久久久午夜福利| 漂亮人妻被中出中文字幕久久| 99精品伊人久久久大香线蕉| 亚洲狠狠婷婷综合久久蜜芽 | 久久丫忘忧草产品| 国产精品免费看久久久香蕉| 久久精品无码专区免费东京热| 亚洲精品无码久久毛片| 激情综合色综合久久综合| 久久精品九九亚洲精品| 影音先锋女人AV鲁色资源网久久| 久久久久久极精品久久久| 青草影院天堂男人久久| 国产精品美女久久久久网| 欧美喷潮久久久XXXXx| 亚洲国产精品无码久久一线| 亚洲欧洲久久久精品| 亚洲精品tv久久久久久久久久| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 久久久久久久综合综合狠狠| 久久久久久免费一区二区三区| 精品人妻久久久久久888|