關(guān)于A_SendOrder函數(shù)使用的實例 [開拓者 TB]
- 咨詢內(nèi)容:
版主您好,我從網(wǎng)上http://www.tradeblazer.net/article/45.html直接復(fù)制了這個每日平倉的范例,命名為test公式,然后在期貨模擬賬戶打開這個交易公式,但是收盤時沒有反應(yīng)。我有這幾個問題:
1)表示商品品種的data0,data1,data2在實際的交易公式編寫時是不是要替換成商品編號,如Data0.A_SendOrder是不是要變化;
2)如果想做半小時線或者小時線的判斷,這個條件語句是否成立,(CurrentTime*100-Floor(CurrentTime*100, 1))*100==29 Or (CurrentTime*100-Floor (CurrentTime*100, 1))*100==59;
3)如果方便請問是否可以提供一個單賬戶單商品的實際自動交易例子,或提供鏈接也可以,其中的A_SendOrder內(nèi)容直接按實際使用的給出即可,不用偽代碼。
非常感謝!
每日平倉的范例如下:- Params
- Numeric offSet(1); // 委托價格偏移,為了保證成交
- Numeric BeforeMins(5); // 收盤前幾分鐘開始操作
- Vars
- Numeric tempPos; // 倉位
- Numeric DeleteOrderTickCounter;
- Numeric HasSendOrder(0);
- Begin
- If(BarStatus == 0)
- {
- DeleteOrderTickCounter = 9999;
- HasSendOrder = 0;
- SetGlobalVar(0,DeleteOrderTickCounter);
- SetGlobalVar(1,HasSendOrder);
- }Else
- {
- DeleteOrderTickCounter = GetGlobalVar(0);
- HasSendOrder = GetGlobalVar(1);
- }
- If(CurrentTime > (0.1459 - 0.0001*(BeforeMins-1)) AND BarStatus == 2 AND HasSendOrder == 0)
- {
- If(Data0.Close != InvalidNumeric AND Data0.A_GetOpenOrderCount()>0) // 商品0全部撤單
- {
- Data0.A_DeleteOrder();
- DeleteOrderTickCounter = 1;
- }
- If(Data1.Close != InvalidNumeric AND Data1.A_GetOpenOrderCount()>0) // 商品1全部撤單
- {
- Data1.A_DeleteOrder();
- DeleteOrderTickCounter = 1;
- }
- If(Data2.Close != InvalidNumeric AND Data2.A_GetOpenOrderCount()>0) // 商品2全部撤單
- {
- Data2.A_DeleteOrder();
- DeleteOrderTickCounter = 1;
- }
- DeleteOrderTickCounter = DeleteOrderTickCounter + 1;
- SetGlobalVar(0,DeleteOrderTickCounter);
- If(DeleteOrderTickCounter < 5) Return; // 撤單后需要延遲幾個Tick才平倉
- tempPos = Data0.A_BuyPosition();
- If(tempPos > 0) // 平多單
- {
- Data0.A_SendOrder(Enum_Sell,Enum_Exit,tempPos,Data0.Q_BidPrice-offSet*Data0.MinMove*Data0.PriceScale);
- }
- tempPos = Data0.A_SellPosition();
- If(tempPos > 0) //平空單
- {
- Data0.A_SendOrder(Enum_Buy,Enum_Exit,tempPos,Data0.Q_AskPrice+offSet*Data0.MinMove*Data0.PriceScale);
- }
- tempPos = Data1.A_BuyPosition;
- If(tempPos > 0) // 平多單
- {
- Data1.A_SendOrder(Enum_Sell,Enum_Exit,tempPos,Data1.Q_BidPrice-offSet*Data1.MinMove*Data1.PriceScale);
- }
- tempPos = Data1.A_SellPosition;
- If(tempPos > 0) //平空單
- {
- Data1.A_SendOrder(Enum_Buy,Enum_Exit,tempPos,Data1.Q_AskPrice+offSet*Data1.MinMove*Data1.PriceScale);
- }
- tempPos = Data2.A_BuyPosition;
- If(tempPos > 0) // 平多單
- {
- Data2.A_SendOrder(Enum_Sell,Enum_Exit,tempPos,Data2.Q_BidPrice-offSet*Data2.MinMove*Data2.PriceScale);
- }
- tempPos = Data2.A_SellPosition;
- If(tempPos > 0) //平空單
- {
- Data2.A_SendOrder(Enum_Buy,Enum_Exit,tempPos,Data2.Q_AskPrice+offSet*Data2.MinMove*Data2.PriceScale);
- }
- HasSendOrder = 1;
- SetGlobalVar(1,HasSendOrder);
- }
- End
- Params
- TB技術(shù)人員:
補充問題:
模擬交易的程序已經(jīng)寫好后,也測試通過了。現(xiàn)在只是需要用實際交易的A_SendOrder函數(shù)代替模擬測試程序里所有的Buy Sell BuytoCover 和SellShort就可以了,請問最標(biāo)準(zhǔn)和簡單的方法替代這些函數(shù)是怎么寫的呢? 例如替代Buy(Lots, Close) ;是直接用A_SendOrder(Enum_Buy,Enum_Entry,1,Q_BidPrice);嗎? 針對目前的超級圖表里的商品,股指期貨"IF888"需要在A_SendOrder之前加類似”data0."類似的標(biāo)示嗎?非常感謝! - TB客服:
Zye436 發(fā)表于 2016-3-2 16:38
補充問題:
模擬交易的程序已經(jīng)寫好后,也測試通過了。現(xiàn)在只是需要用實際交易的A_SendOrder函數(shù)代替模擬測 ...
A函數(shù)沒那么簡單的。
每個動作都要打記號,不然就亂。
還有A函數(shù)不可避免用close,這個價格是不斷變動的。那么你不處理好就會反復(fù)開倉或者反復(fù)止損。
data0 只是代表你圖表中的商品,只有一個就無所謂,如果你疊加多個商品,就需要用data0 ,data1 來區(qū)分。
有思路,想編寫各種指標(biāo)公式,程序化交易模型,選股公式,預(yù)警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 511411198 進(jìn)行 有償 編寫!(不貴!點擊查看價格!)
相關(guān)文章
-
沒有相關(guān)內(nèi)容