• <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>
            穩定盈利的期貨交易方法-量化趨勢交易

            alantop -專業量化投資者

            愛好:量化投資,逆向工程,滲透
            隨筆 - 595, 文章 - 0, 評論 - 921, 引用 - 0
            數據加載中……

            tb跨周期函數

            //------------------------------------------------------------------------
            // 簡稱: k_Bar
            // 名稱: 跨周期函數--基礎BAR數據
            // 類別: 用戶函數
            // 類型: 用戶函數
            // 輸出: 數值型
            //------------------------------------------------------------------------


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

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


                NumericSeries barCnt;            
            // 讀取目標周期上一根BAR的數據在當前周期下需要回溯的BAR數
                NumericSeries Ht_CurBar;        // 當前BAR在目標周期下對應的CurrentBar
                Numeric barCntSum;                 // 臨時變量,返回目標周期數據需要回溯的BAR數
                NumericSeries Ht_Open;            // 目標時間周期的開盤價
                NumericSeries Ht_High;            // 目標時間周期的最高價
                NumericSeries Ht_Low;            // 目標時間周期的最低價
                NumericSeries Ht_Close;            // 目標時間周期的收盤價
                NumericSeries Ht_Vol;            // 目標時間周期的成交量
                NumericSeries Ht_OpenInt;        // 目標時間周期的持倉量
                bool condition(false);            // 判斷在目標時間是否屬于不同根BAR
                Numeric i;
                
            Begin

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

                
            // 根據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);

                    
            // 取當前品種,第一節交易的開始小時數
                    SessionStartHour = IntPart(GetSessionStartTime(0)*100);

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

                
            // 索引值不同的,則說明屬于不同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)              
                    
            // 如果在目標周期下,屬于另一根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
                    
            // 如果在目標周期下,屬于同一根K線,則Ht_CurBar不變,但最高價和最低價要記錄價格的變化,成交量要累加
                    {
                        barCnt 
            = barCnt[1+ 1;
                        Ht_High 
            = Max(Ht_High[1],High);
                        Ht_Low 
            = Min(Ht_Low[1],Low);
                        Ht_Vol 
            = Ht_Vol[1+ Vol;
                    }
                    
            // 收盤價和持倉量總是取最新值
                    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));
                
                
            // 前面在當前周期的每根BAR,記錄了它對應的目標時間周期的開高低收等數據。
                
            // 接下來把每根BAR對應的數據返回給調用本函數的公式(通過全局變量)
                barCntSum = barCnt ;
                If(BarsBack 
            == 0)
                
            // 如果BarsBack為0,則當前BAR記錄的是當前BAR所對應目標周期的當前BAR截止到目前為止的BAR數據值
                {
                    barCntSum 
            = 0 ;
                }
                
            // 如果BarsBack為1,則當前BAR記錄的是當前BAR所對應目標周期的前一根BAR的數據值
                Else
                {
                    barCntSum 
            = barCnt ;
                }

                
            // 將目標時間周期下的BAR數據寫入全局變量返回調用公式
                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]);

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


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

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


                NumericSeries barCnt;            // 讀取目標周期上一根BAR的數據在當前周期下需要回溯的BAR數
                NumericSeries Ht_CurBar;        // 當前BAR在目標周期下對應的CurrentBar
                Numeric barCntSum;                 // 臨時變量,返回目標周期數據需要回溯的BAR數
                NumericSeries Ht_Open;            // 目標時間周期的開盤價
                NumericSeries Ht_High;            // 目標時間周期的最高價
                NumericSeries Ht_Low;            // 目標時間周期的最低價
                NumericSeries Ht_Close;            // 目標時間周期的收盤價
                NumericSeries Ht_Vol;            // 目標時間周期的成交量
                NumericSeries Ht_OpenInt;        // 目標時間周期的持倉量
                bool condition(false);            // 判斷在目標時間是否屬于不同根BAR
                Numeric i;
                
            Begin

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

                // 根據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);

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

                // 索引值不同的,則說明屬于不同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)              
                    // 如果在目標周期下,屬于另一根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
                    // 如果在目標周期下,屬于同一根K線,則Ht_CurBar不變,但最高價和最低價要記錄價格的變化,成交量要累加
                    {
                        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;
                        }
                    }
                    // 收盤價和持倉量總是取最新值
                    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));
                
                // 前面在當前周期的每根BAR,記錄了它對應的目標時間周期的開高低收等數據。
                // 接下來把每根BAR對應的數據返回給調用本函數的公式(通過全局變量)
                barCntSum = barCnt ;
                If(BarsBack == 0)
                // 如果BarsBack為0,則當前BAR記錄的是當前BAR所對應目標周期的當前BAR截止到目前為止的BAR數據值
                {
                    barCntSum = 0 ;
                }
                // 如果BarsBack為1,則當前BAR記錄的是當前BAR所對應目標周期的前一根BAR的數據值
                Else
                {
                    barCntSum = barCnt ;
                }

                // 將目標時間周期下的BAR數據寫入全局變量返回調用公式
                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]);

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


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

            中文字幕久久亚洲一区| 国产欧美久久久精品| 婷婷久久综合九色综合98| 人妻无码久久一区二区三区免费| 久久夜色精品国产亚洲av| 久久国产综合精品五月天| 久久久久人妻精品一区三寸蜜桃| 99热都是精品久久久久久| 99久久综合国产精品二区| 亚洲综合精品香蕉久久网97| 人妻精品久久久久中文字幕一冢本| 国产A三级久久精品| 亚洲精品国产美女久久久| 久久久久久久久无码精品亚洲日韩| 亚洲欧美伊人久久综合一区二区| 久久久久免费精品国产| 一本色道久久88精品综合| 国内精品久久久久久99| 99久久99久久精品国产| 久久午夜福利电影| 久久婷婷五月综合色奶水99啪| 久久婷婷人人澡人人爽人人爱| 久久久亚洲欧洲日产国码二区| 久久精品国产亚洲AV电影| 色综合色天天久久婷婷基地| 国产精品免费久久久久影院| 伊人色综合九久久天天蜜桃| 欧美大香线蕉线伊人久久| 一本大道久久a久久精品综合| 欧美无乱码久久久免费午夜一区二区三区中文字幕| 狠狠色综合网站久久久久久久 | 久久免费精品一区二区| 天堂无码久久综合东京热| 久久精品无码一区二区无码| 久久久久亚洲av成人无码电影 | 久久青青草原精品国产软件| 久久精品国产亚洲AV香蕉| 伊人久久免费视频| 精品综合久久久久久888蜜芽| 久久久久亚洲AV综合波多野结衣| 亚洲午夜无码久久久久|