//交易策略執行頻率請設定5分鐘 // //進場條件 //收盤價在20日均線之上 //且 5 分鐘K棒突破過去三根K棒最高價 // //出場條件 //收盤價在20日均線之下 //且 5 分鐘K棒跌破過去三根K棒最高價 input:Davglength(20,"日均線期數"), Hlength(3, "近N根5分K棒最高價"); settotalBar(Davglength*54); condition1 = close > average(GetField("收盤價", "D"),Davglength); condition2 = close cross Above highest(high[1], Hlength); condition11= close < average(GetField("收盤價", "D"),Davglength); condition21= close cross under highest(high[1], Hlength); if condition1 and condition2 and filled = 0 then setposition(1,market); if condition11 and condition21 and filled <> 0 then setposition(0,market);上述範例在跑台股商品時,因為要用5分K棒組成日K棒來運算範例的20日均線數值,所以資料筆數需要設定到54(一天54根5分K)×20(均線期數)=1080筆,也就是使用settotalBar(Davglength*54)這行語法或者在介面上設定足夠的資料筆數,才能成功執行交易或雷達策略。如果資料筆數設定不足,會因為GetField指定日頻率資料筆數不足夠的關係,導致雷達或交易策略在洗價時發生錯誤,有關資料筆數的說明可以參考資料讀取範圍與腳本執行的關係此篇文章說明。在v7.06.01版本中,此範例可以使用 setbackbar(20,"D"); 直接將GetField指定頻率的資料引用筆數設定充足,主頻率5分K只要設定三筆即可執行成功交易或雷達策略,如下範例交易腳本語法
//交易策略執行頻率請設定5分鐘 // //進場條件 //收盤價在20日均線之上 //且 5 分鐘K棒突破過去三根K棒最高價 // //出場條件 //收盤價在20日均線之下 //且 5 分鐘K棒跌破過去三根K棒最高價 input:Davglength(20,"日均線期數"), Hlength(3, "近N根5分K棒最高價"); settotalBar(Hlength); setbarBack(Davglength,"D"); // 在 v7.06 版本添加 setbackbar 指定頻率調整資料引用筆數 condition1 = close > average(GetField("收盤價", "D"),Davglength); condition2 = close cross Above highest(high[1], Hlength); condition11= close < average(GetField("收盤價", "D"),Davglength); condition21= close cross under highest(high[1], Hlength); if condition1 and condition2 and filled = 0 then setposition(1,market); if condition11 and condition21 and filled <> 0 then setposition(0,market);有了setbackbar指定頻率設定資料引用筆數後,在此範例使用 setbarBack(Davglength,"D"); 來調整日頻率資料的引用筆數,就可以讓使用者簡便設定足夠的資料引用筆數,排除GetField指定頻率多期數運算時需要設定龐大資料筆數的困擾。另外資料準備速度方面,可以發現運用SetBackBar設定指定頻率資料引用筆數比SetTotalBar方式還要快速,如下圖執行紀錄比較結果。值得注意的是,這張圖是單一商品與5分跨20日均線運算結果,若是多商品與跨更多日均線的運算,則資料準備速度差異會更大。以上是Setbackbar指定頻率設定引用筆數相關應用介紹,有了Setbackbar指定頻率設定資料用筆數功能後,就能取代SetTotalBar設定龐大的資料筆數,加快交易策略或者雷達策略的資料準備運行速度,感謝大家的收看,咱們下次再會。