註冊  登入
 

 搜尋

迷你方式顯示論壇 RSS訂閱此版新訊息  

加入收藏 

使用幫助 

聯繫我們 
首頁 >> 程式交易 >> 論壇主區 >> 程式交易討論區 >> 查看文章
 新帖 新投票 回覆文章 上篇 重新整理 下篇  


 97128: 此主題共有13帖 此頁12帖 每頁12帖
 


 主題:不同策略放在同程式一程式中的操作訊號問題 - 複製地址
 

離線

unicorn666 



級別 職業俠客
積分 82
經驗 5139
文章 60
註冊 11-05-16 21:34
發表: 2013-04-06 00:53:25 人氣:90861樓主

不同策略放在同程式一程式中的操作訊號問題

請教版主
 
例如
使用不同策略的個別進出場在同一個程式中時
 
A策略  操作訊號(多單建倉,A程式口數,A程式進場價)
A策略未平倉時,B策略即符合條件要進場,可是為反向
B策略 操作訊號(空單建倉,B程式口數,B程式進場價)
 
此時會出現"空單建倉有誤,因部位中尚有多單"
那該用什麼方式執行??
 
謝謝!!
 

帥哥,離線

Hunta 



門派 管理員
職務 總版主
級別 法老
聲望 +100000
財富 100002
積分 101915
經驗 642850
文章 1733
註冊 09-04-10 17:15
發表: 2013-04-06 08:23:322

應該是部位中尚有多單時,就下達空單命令。用Debug函數檢查一下「目前部位」的狀況。

離線

unicorn666 



級別 職業俠客
積分 82
經驗 5139
文章 60
註冊 11-05-16 21:34
發表: 2013-04-06 10:33:213

板主你好

因為如果AB策略口數不相同時
要先平倉再建倉反而需要使用多餘的變數去計算
如果不使用操作訊號可以執行嗎?

如A策略為多單3口,B策略直接進空單2口
總部位則為多單1口,
直接使用命令檔為1,讓API自行判別原口數而下單
此方法能用嗎?

帥哥,離線

Hunta 



門派 管理員
職務 總版主
級別 法老
聲望 +100000
財富 100002
積分 101915
經驗 642850
文章 1733
註冊 09-04-10 17:15
發表: 2013-04-06 13:11:364

操作訊號是系統用來統計倉位變化之用,在多空轉換之時,最好先平倉再建倉,才不會錯誤。

離線

unicorn666 



級別 職業俠客
積分 82
經驗 5139
文章 60
註冊 11-05-16 21:34
發表: 2013-04-06 16:07:465

版主你好

我有於進出場前先增加判別"平倉的口數"及"建倉的口數"

//空單出場
If B程式部位<0 Then
  ...
If 目前部位(倉位多空) < 0 Then
If 目前部位(口數) >= 出場單位 Then
   平倉口數 = 出場單位
   建倉口數 = 0
ElseIf 目前部位(口數) < 出場單位 Then
   平倉口數 = 0
   建倉口數 = 出場單位-目前部位(口數)
End If
ElseIf 目前部位(倉位多空) >= 0 Then
   平倉口數 = 0
   建倉口數 = 出場單位
End If
If 單K計數器 = 0 Then
...
...
[COLOR=#ff0000]操作訊號(空單平倉,平倉口數#口,出場價位#)[/COLOR]
操作訊號(多單建倉,建倉口數#口,出場價位#)
...
...
單K計數器 = 出場價位
End If
...
...
...


B策略原為進場空單2口,B策略尚未平倉時
A策略進場部位為多單3口,所以執行平倉2口空單並建倉1口多單
再來B策略的出場應為平倉0口空單並建倉2口多單
 
但是有加入操作訊號時,即使讓平倉口數為0
在K線圖及回測執行上也是會出現"空單平倉有誤,因目前部位為多單"
但是在圖上用DEBUG檢查及回測的交易明細時,則是無誤!!

可否麻煩版主
將操作訊號的口數為0不會出現此現象

謝謝

[ 此貼最後由unicorn666在2013/4/6 下午 04:20:21編輯過 ]   


離線

unicorn666 



級別 職業俠客
積分 82
經驗 5139
文章 60
註冊 11-05-16 21:34
發表: 2013-04-06 16:53:216

版主你好

不好意思補充一下
只要有加入操作訊號
就算目前部位(口數) = 0 時
目前部位(倉位多空)依舊會有出現 = 1 or = -1 的情況

帥哥,離線

Hunta 



門派 管理員
職務 總版主
級別 法老
聲望 +100000
財富 100002
積分 101915
經驗 642850
文章 1733
註冊 09-04-10 17:15
發表: 2013-04-07 00:06:597

平倉時口數可選「全部」,因為有時自己下平倉口數時,有可能系統中記錄的口數不見得跟自已想像的口數一致。

離線

unicorn666 



級別 職業俠客
積分 82
經驗 5139
文章 60
註冊 11-05-16 21:34
發表: 2013-04-07 15:12:078

版主你好

將判別式放置於單K計數器後問題就可以解決了!!
謝謝版主的建議,減少了一些執行錯誤!!

離線

unicorn666 



級別 職業俠客
積分 82
經驗 5139
文章 60
註冊 11-05-16 21:34
發表: 2013-04-08 15:59:059

版主你好
 
可否建議版主在操作訊號不要分成[COLOR=#ff0000]平倉[/COLOR]跟[COLOR=#ff0000]建倉[COLOR=#000000]或新增一個無分別的操作訊號[/COLOR]
[/COLOR]直接以操作訊號(多單,口數,價位)及操作訊號(空單,口數,價位)來使用
可使系統提供更多元化的應用

因為下列的判別式在每個進場每個出場都需要加入
If 目前部位(倉位多空) < 0 Then
If 目前部位(口數) >= 出場單位 Then
   平倉口數 = 出場單位
   建倉口數 = 0
ElseIf 目前部位(口數) < 出場單位 Then
   平倉口數 = 0
   建倉口數 = 出場單位-目前部位(口數)
End If
ElseIf 目前部位(倉位多空) >= 0 Then
   平倉口數 = 0
   建倉口數 = 出場單位
End If
甚至於ELSE之後也需要再加入一次
單以上述的"[COLOR=#ff0000]額外再判別需平倉跟需建倉的程式碼[/COLOR][COLOR=#000000]"就多加了幾百行了...已經是原程式碼的1/3以上[/COLOR]
今日實際執行程式時速度降低非常多,會導致滑價變更多
 
感謝版主

帥哥,離線

Hunta 



門派 管理員
職務 總版主
級別 法老
聲望 +100000
財富 100002
積分 101915
經驗 642850
文章 1733
註冊 09-04-10 17:15
發表: 2013-04-08 22:42:1410

不用自行記錄平倉口數,只要在下平倉指令時,口數的部份選「全數」即可。

離線

unicorn666 



級別 職業俠客
積分 82
經驗 5139
文章 60
註冊 11-05-16 21:34
發表: 2013-04-09 00:36:5811

版主你好

不好意思 上面的策略有打錯
應該為
If 目前部位(倉位多空) < 0 Then
If 目前部位(口數) >= 進場單位 Then
   平倉口數 = 進場單位
   建倉口數 = 0
ElseIf 目前部位(口數) < 進場單位 Then
   平倉口數 = 目前部位(口數)
   建倉口數 = 進場單位-目前部位(口數)
End If
ElseIf 目前部位(倉位多空) >= 0 Then
   平倉口數 = 0
   建倉口數 = 進場單位
End If


因為如果A策略原先的口數為多單3口
之後B策略的進場單位為空單2口時
總部位應該會為多單1口

如果口數部位選用"全數"的話~
就會連那1口多單都一起平倉

謝謝版主

帥哥,離線

Hunta 



門派 管理員
職務 總版主
級別 法老
聲望 +100000
財富 100002
積分 101915
經驗 642850
文章 1733
註冊 09-04-10 17:15
發表: 2013-04-09 09:38:1112

你應該用部位總量的觀點來處理,因為就算自動下單的部份也是以「最終部位」來處理,可以這樣寫:
If 目前部位(倉位多空) < 0 Then
  If 目前部位(口數) >= 進場單位 Then
    操作訊號(空單平倉,進場單位#口)
  ELSE
    操作訊號(空單平倉,全數)
    Va = 進場單位 - 目前部位(口數)
    操作訊號(多單建倉,Va口)
  End If


 97128: 此主題共有13帖 此頁12帖 每頁12帖
 

 新帖 新投票 回覆文章



回覆文章 注意: *為必填項
*驗證訊息
用戶名稱 密碼 註冊
*文章名稱 長度不得超過255字
內容(最大25K)

是否是UBB代碼

內容支持插入UBB標籤
使用方法請參考幫助
其它選項:  顯示簽名   鎖定文章  - 顏色表   Alt+S或Ctrl+Enter快速提交