求解,關于多公式組合策略在數據源上的運算
作者:開拓者 TB 來源:cxh99.com 發布時間:2022年02月08日
-
咨詢內容:
我在TBQ的幫助文檔里看到“為了使用的方便,以及降低使用門檻, TB 公式系統支持將現有的多個公式應用按照一定的順序組合為一個交易策略
交易策略執行時按照公式設置的順序依次串行執行,公式間持倉共享,公式信號單獨顯示。
相當于把每個公式看成是一個函數,在交易策略內依次執行各個函數,整個策略共享一個 MarketPosition。”
然后我在后面例子中看到,把5個公式加載到一個策略單元,也沒有特別的設置。我看每個公式的買入信號都會判斷marketposition,我就有點疑問,既然共享marketposition,那第一個公式如果買入了,第二個公式就不會買入了,如果達到例子里說的3個公式中的2個公式買入之后再停止呢,請幫忙給解釋一下,謝謝
?
?來源:CXH99.COM
-
TB技術人員:
第一個公式買入后,后面的公式是否繼續交易,取決于后面公式開倉條件里寫法。
如果第二個公式的開倉條件并沒有要求限制marketposition必須等于0的,那么就條件滿足就要可以繼續開倉。類似于加倉。
而第三個人公式的開倉條件里做marketposition==0的限制的話,則不會開倉了。
?
-
TB客服:
公式應用 1: Average_Buy
Params
Numeric percent(0.002); //大于日均價幅度
Vars
Begin
If(MarketPosition<>1 && (Close[1] > Q_AvgPrice *(1 + percent)))
{
Buy(1,Open);
}
End
公式應用 2: Dual_Buy
Params
Numeric FastLength(5);
Numeric SlowLength(20);
Vars
NumericSeries AvgValue1;
NumericSeries AvgValue2;
Begin
AvgValue1 = AverageFC(Close,FastLength);
AvgValue2 = AverageFC(Close,SlowLength);
PlotNumeric("MA1",AvgValue1);
PlotNumeric("MA2",AvgValue2);
// 集合競價和小節休息過濾
If(!CallAuctionFilter()) Return;
If(MarketPosition <>1 && AvgValue1[1] > AvgValue2[1])
{
Buy(1,Open);
}
End
公式應用 3: High_Buy
Vars
Numeric MinPoint; // 一個最小變動單位,也就是一跳
Numeric MyEntryPrice; // 開倉價格,例中為開倉均價,可設置為某次入場價
Numeric AddSet(2); // 大于最高價跳數
Begin
If(!CallAuctionFilter()) Return;
MinPoint = MinMove*PriceScale;
If(MarketPosition<>1 && (Close > Q_High + AddSet*MinPoint))
{
Buy(1,Open);
}
End
公式應用 4: Average_Sell
Params474
Numeric percent(0.01); //小于日均價幅度
Vars
Begin
If(!CallAuctionFilter()) Return;
If(MarketPosition==1 && (Close < Q_AvgPrice *(1 - percent)))
{
Sell(1,Open);
}
End
公式應用 5: Dual_Sell
Params
Numeric FastLength(5);
Numeric SlowLength(20);
Vars
NumericSeries AvgValue1;
NumericSeries AvgValue2;
Begin
AvgValue1 = AverageFC(Close,FastLength);
AvgValue2 = AverageFC(Close,SlowLength);
PlotNumeric("MA1",AvgValue1);
PlotNumeric("MA2",AvgValue2);
// 集合競價和小節休息過濾
If(!CallAuctionFilter()) Return;475
If(MarketPosition == 1 && AvgValue1[1] < AvgValue2[1])
{
Sell(1,Open);
}
End
這是例子的5個公式,例子里說“上面 3 個開倉公式,任何 2 個先到達開倉條件,則由于倉位達到最大頭寸 2,另外一個開倉公式將不會執行。上面任何 1 個平倉公式達到平倉條件平掉所有的倉位,則另外一個平倉公式不會執行。”,說只要按順序加載這5個公式,就可以達到上面的效果,我不太理解如何實現目的的
?
-
網友回復:
本帖最后由 小米 于 2019-10-22 16:08 編輯
baggiobatistuta 發表于 2019-10-21 15:15
公式應用 1: Average_Buy
Params
Numeric percent(0.002); //大于日均價幅度
這段代碼說明是有些問題的, 不足以參考 。。
先不要看這個說明,后面會更新相關說明文檔的。
可以先看軟件里--TB量化學院--TBL語言--公式運行機制--多公式組合策略在數據源上的運算。這里面的內容說明與代碼是正確的。