tbquant函數小bug--average等小于指定周期的時候并沒有無效值 [開拓者 TB]
-
咨詢內容:
本帖最后由 quant_yunjinqi 于 2020-4-20 17:44 編輯
函數的說明
圖表顯示的結果
理論上,不是應該在current_bar小于10的時候,short_ma的值是無效值嗎?為什么是前面的bar的平均值?
公式代碼- Params
- ? ? ? ? //此處添加參數
- ? ? ? ? Numeric millsecs(1000);
- ? ? ? ? numeric short_window(10);
- ? ? ? ? numeric long_window(20);
- Vars
- ? ? ? ? //此處添加變量
- ? ? ? ? Numeric avg;
- ? ? ? ? Global Integer timerId;
- ? ? ? ? Series<Numeric> my_short_ma;
- ? ? ? ? Series<Numeric> my_long_ma;
- Defs
- ? ? ? ? //此處添加公式函數
- ? ? ? ? Numeric calcAvg(Numeric a,Numeric b)
- ? ? ? ? {
- ? ? ? ? ? ? ? ? return (a+b)/2;
- ? ? ? ? }
- Events
- ? ? ? ? //此處實現事件函數
- ? ? ? ?
- ? ? ? ? //初始化事件函數,策略運行期間,首先運行且只有一次,應用在訂閱數據等操作
- ? ? ? ? OnInit()
- ? ? ? ? {
- ? ? ? ? ? ? ? ? timerId=createTimer(millsecs);
- ? ? ? ? ? ? ? ? //與數據源有關
- ? ? ? ? ? ? ? ? Range[0:DataCount-1]
- ? ? ? ? ? ? ? ? {
- ? ? ? ? ? ? ? ? ? ? ? ? //=========數據源相關設置==============
- ? ? ? ? ? ? ? ? ? ? ? ? //AddDataFlag(Enum_Data_RolloverBackWard());? ? ? ? //設置后復權
- ? ? ? ? ? ? ? ? ? ? ? ? //AddDataFlag(Enum_Data_RolloverRealPrice());? ? ? ? //設置映射真實價格
- ? ? ? ? ? ? ? ? ? ? ? ? //AddDataFlag(Enum_Data_AutoSwapPosition());? ? ? ? //設置自動換倉
- ? ? ? ? ? ? ? ? ? ? ? ? //AddDataFlag(Enum_Data_IgnoreSwapSignalCalc());? ? ? ? //設置忽略換倉信號計算
- ? ? ? ? ? ? ? ? ? ? ? ? //AddDataFlag(Enum_Data_OnlyDay());? ? ? ? ? ? ? ? //設置僅日盤
- ? ? ? ? ? ? ? ? ? ? ? ?
- ? ? ? ? ? ? ? ? ? ? ? ? //AddDataFlag(Enum_Data_OnlyNight());? ? ? ? //設置僅夜盤
- ? ? ? ? ? ? ? ? ? ? ? ? //AddDataFlag(Enum_Data_StrategyQuote());? ? ? ? //設置返回公式行情
- ? ? ? ? ? ? ? ? ? ? ? ?
- ? ? ? ? ? ? ? ? ? ? ? ? //AddDataFlag(Enum_Data_NotGenReport());? ? ? ? //設置數據源不參與生成報告標志
- ? ? ? ? ? ? ? ? ? ? ? ?
- ? ? ? ? ? ? ? ? ? ? ? ? //=========交易相關設置==============
- ? ? ? ? ? ? ? ? ? ? ? ? //SetMarginRate(0.1);? ? ? ? //設置保證金率為10%
- ? ? ? ? ? ? ? ? ? ? ? ?
- ? ? ? ? ? ? ? ? ? ? ? ? //SetCommissionRate(BitOr(Enum_Rate_FreeOfExitToday,Enum_Rate_ByFillAmount),5);? ? ? ? //設置手續費率為成交金額的5%%,不收平今, BitOr進行位或運算即設置屬性和
- ? ? ? ? ? ? ? ? ? ? ? ?
- ? ? ? ? ? ? ? ? ? ? ? ? //SetSlippage(Enum_Rate_PointPerHand,2);? ? ? ? //設置滑點為2跳/手
- ? ? ? ? ? ? ? ? ? ? ? ?
- ? ? ? ? ? ? ? ? ? ? ? ? //SetOrderPriceOffset(2);? ? ? ? //設置委托價為叫買/賣價偏移2跳
- ? ? ? ? ? ? ? ? ? ? ? ?
- ? ? ? ? ? ? ? ? ? ? ? ? //SetOrderMap2MainSymbol();? ? ? ? //設置委托映射到主力
- ? ? ? ? ? ? ? ? ? ? ? ?
- ? ? ? ? ? ? ? ? ? ? ? ? //SetOrderMap2AppointedSymbol(symbols, multiples); ? ? ? ? //設置委托映射到指定合約,symbols是映射合約數組,multiples是映射倍數數組
- ? ? ? ? ? ? ? ? }
- ? ? ? ? ? ? ? ? //與數據源無關
- ? ? ? ? ? ? ? ? //SetBeginBarMaxCount(10);? ? ? ? //設置最大起始bar數為10
- ? ? ? ? ? ? ? ? ? ? ? ?
- ? ? ? ? ? ? ? ? //SetBackBarMaxCount(10);? ? ? ? //設置最大回溯bar數為10
- ? ? ? ? ? ? ? ?
- ? ? ? ? ? ? ? ? //=========交易相關設置==============
- ? ? ? ? ? ? ? ? //SetInitCapital(1000000);? ? ? ? //設置初始資金為100萬
- ? ? ? ? ? ? ? ?
- ? ? ? ? ? ? ? ? //AddTradeFlag(Enum_Trade_Ignore_Buy());? ? ? ? //設置忽略多開
- ? ? ? ? ? ? ? ? ? ? ? ?
- ? ? ? ? ? ? ? ? //AddTradeFlag(Enum_Trade_Ignore_Sell());? ? ? ? //設置忽略多平
- ? ? ? ? ? ? ? ? ? ? ? ?
- ? ? ? ? ? ? ? ? //AddTradeFlag(Enum_Trade_Ignore_SellShort());? ? ? ? //設置忽略空開
- ? ? ? ? ? ? ? ? ? ? ? ?
- ? ? ? ? ? ? ? ? //AddTradeFlag(Enum_Trade_Ignore_Buy2Cover());? ? ? ? //設置忽略空平
- ? ? ? ? }
- ? ? ? ? //在所有的數據源準備完成后調用,應用在數據源的設置等操作
- ? ? ? ? OnReady()
- ? ? ? ? {
- ? ? ? ? }
- ? ? ? ? //在新bar的第一次執行之前調用一次,參數為新bar的圖層數組
- ? ? ? ? OnBarOpen(ArrayRef<Integer> indexs)
- ? ? ? ? {
- ? ? ? ? }
- ? ? ? ? //Bar更新事件函數,參數indexs表示變化的數據源圖層ID數組
- ? ? ? ? OnBar(ArrayRef<Integer> indexs)
- ? ? ? ? {
- ? ? ? ? ? ? ? ? my_short_ma = average(close,short_window);
- ? ? ? ? ? ? ? ? my_long_ma = average(close,long_window);
- ??? ? ? ? ? ? ? ? Commentary("CurrentBar: "+text(CurrentBar));
- ??? ? ? ? ? ? ? ? Commentary("my_short_ma: "+text(my_short_ma));
- ??? ? ? ? ? ? ? ? Commentary("my_long_ma: "+text(my_long_ma));
- ??? ? ? ? ? ? ? ? if (my_short_ma[1]>my_long_ma[1] and MarketPosition<=0){buy(1,open);}
- ??? ? ? ? ? ? ? ? if (my_short_ma[1]<=my_long_ma[1] and MarketPosition>=0 ){sellshort(1,open);}
- ??? ? ? ? ? ? ? ?
- ? ? ? ? }
- ? ? ? ? //持倉更新事件函數,參數pos表示更新的持倉結構體
- ? ? ? ? OnPosition(PositionRef pos)
- ? ? ? ? {
- ? ? ? ? ? ? ? ?
- ? ? ? ? }
- ? ? ? ? //委托更新事件函數,參數ord表示更新的委托結構體
- ? ? ? ? OnOrder(OrderRef ord)
- ? ? ? ? {
- ? ? ? ? ? ? ? ?
- ? ? ? ? }
- ? ? ? ? //成交更新事件函數,參數ordFill表示更新的成交結構體
- ? ? ? ? OnFill(FillRef ordFill)
- ? ? ? ? {
- ? ? ? ? ? ? ? ?
- ? ? ? ? }
- ? ? ? ? //定時器更新事件函數,參數id表示定時器的編號,millsecs表示定時間的間隔毫秒值
- ? ? ? ? OnTimer(Integer id,Integer intervalMillsecs)
- ? ? ? ? {
- ? ? ? ? ? ? ? ?
- ? ? ? ? }
?
?來源:CXH99.COM
- Params
-
TB技術人員:
- Params
- ? ? ? ? Series<Numeric> Price(1);? ? ? ? //數值型序列值
- ? ? ? ? Numeric Length(10);? ? ? ? ? ? ? ? ? ? ? ? //周期數
- Vars
- ? ? ? ? Numeric AvgValue;
- Begin
- ? ? ? ? AvgValue = Summation(Price, Length) / Length;
- ? ? ? ? Return AvgValue;
- End
只不過此時的計算結果是可能不符合交易者需求的,所以建議在代碼里做一些判斷控制,不要用此計算結果來進行交易的判斷。 - Params
有思路,想編寫各種指標公式,交易模型,選股公式,還原公式的朋友
可聯系技術人員 QQ: 262069696 或微信號:cxh99cxh99 進行 有償收費 編寫!
(注:由于人數限制,QQ或微信請選擇方便的一個聯系我們就行,加好友時請簡單備注下您的需求,否則無法通過。謝謝您!)
相關文章
-
沒有相關內容