顯示具有 投資理財 標籤的文章。 顯示所有文章
顯示具有 投資理財 標籤的文章。 顯示所有文章

2024/02/06

利用python做台指期當沖自動交易~~失敗

 利用python做台指期當沖自動交易~~跑了快三個月吧。

程式本身沒什麼問題,大概就是停損出場會滑價,其他方面執行上是沒什麼問題。

但失敗了,因為策略太爛了,雖然風報比把2:1,但太常停損了,勝率太低,所以最重要的還是策略,程式只是個輔助。

現在就停止當沖,在好好想想策略吧。

2023/12/21

Shioaji 觸價停損

 Shioaji的官網上有提到怎麼做觸價停損: https://sinotrade.github.io/zh_TW/tutor/advanced/quote_binding/#_3

但我連callback都不懂的人,裡面寫的我實在無法理解,所以就想了另一個解法。

因為我只當沖小台,所以就一直snapshot小台目前的價格,每0.5秒一次,並不會超過流量限制。

如果價格有到我的停利或停損價,就馬上執行市價平倉單,來達到觸價停損的機制。

因為市價單必須是IOC,所以要馬上檢查庫存還有沒有單,確認是否已平倉,如果沒有,就繼續下市價平倉單,以確保我有把單平掉。

這就是個人一個簡單的觸價停損作法。

另外就是有發現一個問題,如果我平倉是掛當下限價單,用當下snapshot抓到的小台價格,幾乎不會馬上成交,我就要重新抓小台價格,把下單價格在更新重下,大概都要等個30秒才會成交,就會滑價。但改用市價單就直接成交,出場滑價的機會就會比較小,這也是用市價單的好處。


2023/12/08

廣告回復了 但流量好像變少了

自從廣告功能回來後,每日瀏覽量感覺有在下降。
不知是不是剛好也沒什麼新的文章。
要靠廣告賺錢還真是好難啊。

2023/11/08

學會程式交易~開啟穩定賠錢的旅程

 為了打造自動化交易工具,產生穩定的被動收入,就開始學python,要來打程式交易。

程式做出來了,但交易策略不太行,所以反而變成穩定的被動失血。

策略還是最重要的東西,想不出一個正期望值的策略,有沒有程式交易其實也沒什麼意義。


2023/09/08

選擇權操作-停止所有組合單策略

雙買只有明顯趨勢下才能賺,雙賣是一有趨勢就慘了。

價差單也差不多,看你怎麼組,也是有上面的問題,怎麼做都不順。

追蹤一個長期獲利的雙賣交易者對帳單,是用大口數來產生比較好的收益,如果只看單口的獲利,可能都不到50塊,過程中要一直調整部份,這個實在難做。

趨勢就是這樣,做賣方,他就很愛動,做買方就不太動,總是常在小賠,偶爾小賺一點點,期望值依然是負的,所以還是先暫停吧,專心做買方當沖。


2023/07/04

Shioaji 1分k轉成其他分k

 永豐shioaji可以把1分k做匯出,然後在自行轉成其他分k。

做法通常就是把1分k資料用pandas轉換成datafram,然後在用resample的方式,轉成其他的分k。

不過在轉成其他分k時,會遇到兩個問題。

第一是轉成其他k分時,會有從左邊算起或右邊算一起的問題,這就會影響到資料的正確性,關於這個,可以參考https://ithelp.ithome.com.tw/articles/10280495 這篇文章,用label跟closed兩個參數去調整資料的正確性。

系統預設是左邊,但在轉換shioaji的資料時,要從右邊算,出來的分k開高收低才會對。

第二個問題是在用resample重把切分1分k時,都是以完整一小時去切,譬如說你要換成30分k,系統就會用x點00分跟x點30分去切,但台指開盤是8點45分,應該要切成x點15分跟x點45分。

這時後就要在加一個base的參考,範例可參考 https://towardsdatascience.com/using-the-pandas-resample-function-a231144194c4 這篇最後面‘Base’ Argument的說明。


另外就是1分k只能用日期 去過濾,但裡面會包含到日跟夜盤的資料,如果只要日盤,或是特定時間,就要用between_time這個參考去過濾,範例可去https://geek-docs.com/pandas/pandas-dataframe/python-pandas-dataframe-between_time.html 看看。

2023/06/12

Shioaji 篩選 目前週選的TX代號

 現在選擇權代號通常會有當週,下週,跟月選3個合約,如果現在是第一週,就是有TX1,TX2,TXO,三個。只有第三週是2個(TXO跟TX4)。

目前的python語法裡TX是寫死的,每周要自己手動改,有點煩,所以就想了一個動判斷的語法,來抓今天是該是TX幾。

主要就是判斷連續兩週的合約有沒有值,如果都有的話,那TX就是比較小的那個。

像是TX1跟TX2都有值,那今天就會是TX1。

第三週因為是抓TXO跟TX4,但第四週也會有TXO跟TX4,所以這一個判斷要放在最後面才行,不然第四週會被先判斷成是TXO。

#抓當週的週選的TX代號
if api.Contracts.Options['TX1'] != None and api.Contracts.Options['TX2'] != None:
    TX = 'TX1'
    print(api.Contracts.Options[TX])
elif api.Contracts.Options['TX2'] != None and api.Contracts.Options['TXO'] != None:
    TX = 'TX2'
    print(api.Contracts.Options[TX])
elif api.Contracts.Options['TX4'] != None and api.Contracts.Options['TX1'] != None:
    TX = 'TX4'
    print(api.Contracts.Options[TX])
elif api.Contracts.Options['TX4'] != None and api.Contracts.Options['TX5'] != None:
    TX = 'TX4'
    print(api.Contracts.Options[TX])
elif api.Contracts.Options['TX5'] != None and api.Contracts.Options['TX1'] != None:
    TX = 'TX5'
    print(api.Contracts.Options[TX])
elif api.Contracts.Options['TXO'] != None and    api.Contracts.Options['TX4'] != None:
    TX = 'TXO'
    print(api.Contracts.Options[TX])

2023/06/01

Shioaji 篩選 期貨 日盤的kbars

Shioaji 在撈Kbar資料時,可以指定開始跟結束的"日期",然後就產出這段時間的一分k資料 。

假如是撈期貨的資料,就會把日盤跟夜盤的kbar全部列出來。



如果只想要日盤或夜盤,或是某幾小時內的資料時,就要做個篩選。
篩選的方式就是:
1. 先把dataframe裡的ts欄位設成index
df.set_index('ts',inplace=True) 
2. 在用between_time的功能,選出要的時間區間,就完成了。
df=df.between_time('08:44', '13:46')


可以參 考這篇
https://geek-docs.com/pandas/pandas-dataframe/python-pandas-dataframe-between_time.html





2023/05/31

永豐 e-leader 選擇權搭配autoit 做自動下單平倉 bug

 本來都有設定autoit做收盤前的自動平倉單功能。

昨天並沒開倉下單,所以就算執行了自動平倉也不會生效。

但晚上就發現居然有庫存,autoit的自動平倉居然變成開倉雙買了。

然後還賺了一點錢,好佳在,如果是雙賣就虧慘了。

然後仔細檢查了一下autoit裡面的程式,發現下單的下拉選單(開倉,停損,停利,自動)這個鈕的按鈕參數,在完全沒下過單跟有先下過單(任個一種單因)的狀況下,是不相同的。TR<>裡面那串數字會變動。

ControlCommand("e-Leader - [[6508]多次IOC :(0) TR<540001>]","","ComboBox8","SelectString",'平倉停損')

實在太奇怪了,所以如果沒下單,要把視窗關了,不然到時就會變自動開倉下單了。

2023/05/25

永豐 e-leader 選擇權收盤前搭配autoit 做自動下單平倉

 選擇權下單跟股票或期貨不一樣,沒有當沖這個功能可以選,讓單子可以在收盤自動平倉。

如果想要實現在這功能,就需要搭配autoit這個軟體來實現。

現在就是使用永豐的e-leader裡的組合單操作

1. 假設已手動下好多次IOC的組合單,而且成交了,這時後畫面就會停在原本下單的條件。


2. 這時後就開啟autoit ,設定讓程式自動做下列幾個動作
#第一個是點選"更新",抓到當下的價格
ControlClick("e-Leader","","Scintilla1")
#第二個是選到倉別的下拉選單,選到平倉停損
ControlCommand("e-Leader - [[6508]多次IOC :(0) TR<540001>]","","ComboBox8","SelectString",'平倉停損')
#第三個是下單的下拉選單,選到多次IOC,這個其實不一定要做,因為正常的話這個本來欄位本來就會停在多次IOC的選項
ControlCommand("e-Leader - [[6508]多次IOC :(0) TR<540001>]","","ComboBox7","SelectString",'多次IOC')
#第四個是點選"新增",送出這張停損單。
ControlClick("e-Leader","","Button19")
做好後轉成exe檔。

3. 在工作排程中,設定收盤前一點點的時間執行這個exe檔,為了怕沒成交要讓IOC跑一下,執行時間可能就要設在收盤前的幾十秒就要執行了。

這樣就完成了自動平倉單的設定了,在還沒寫好用shioaji的環境下,就先用autoit來做也是蠻方便的。

autoit的操作方法就自行上網找吧,上面提供的指令,還是要自己在實在時確認一下,會比較保險。



2023/04/21

永豐 shioaji api 登入後只有證券帳號 沒有期權帳號

跟期貨營業員確認已申請好了shioaji的api後,在python下指令要列出帳號清單,發現都只有證券帳號,沒有期權帳號,有點怪。

後來上了永豐api官方的telegram去發問,才知道原來當初在申請api key的時後,因為只有證券戶,期貨戶還沒開好,所以申請api key的過程,只有證券戶可以勾選,所以用那組api key登入時就只有證券帳號可以用。

重新在申請一次api key,勾選期權選項後,登入測試就有列出期權帳戶了。

2023/02/08

永豐 shioaji api 一直登入失敗 ValueError

 一開始學習就充滿挫折~

裝好shioaji套件後,最一開始就是先登入,在這關就卡三天,找到網路上一些教學,也有官方出的PDF檔文件,結果登入後都很怪,雖然有session up的字眼出現,但又有產生其他錯誤。


登入後常會看到這兩種錯誤訊息
ValueError: The seed must be exactly 32 bytes long或ValueError: Invalid character '0'



後來又在官網上在仔細查看,發現了一小段重要的說明,就是以前登入的帳號密碼,是跟下單軟體一樣,用身份證字號去登入,但現在api的登入帳號密碼已經不同了。
是要先去永豐金理財網這個網站,登入後裡面有個API管理的功能,新增一組系統自動產生的超長帳號跟密碼來搭配api登入,程式碼也跟舊的不太一樣,可以參考官網的教學 https://sinotrade.github.io/zh_TW/tutor/login/  


照網站教的,api登入就成功了,不會有那些奇怪的錯誤訊息。
















2023/02/02

永豐 shioaji 無法安裝

 在python裡要安裝永豐API要用的一個套件shioaji時,一直失敗,就找不到這個套件。

後來才發現,這個套件不支援自己電腦內的python3.11版。

所以就要另外裝一個python舊版的環境,目前測試是在3.8跟3.9都可以裝。

2022/12/15

2022年最後一個月選擇權交易

 今年基本上就是慘,前11個月,好像只有一個月是有獲利,其他都賠錢。

12月開始把交易條件訂的比較高,所以交易次數不多,雖然前兩週都只做1口單賣當沖,但至少都有賺,第三週目前確定是沒交易機會了,希望剩下兩週也能順一點,至少讓我最後一個月也是獲利結束今年,把希望寄託在明年。

2022/10/07

選擇權單賣 慘啊

 最近兩個月真的就是上下刷,做單賣當沖實在慘,一直打到停損,超累的。

還好都有控制好停損,至少都沒大賠。

2022/09/16

選擇權早盤當沖沒出掉 下午盤就會GG

當沖基本上就是早盤收盤要平倉,但有時後就是來不及,然後沒沖掉,就放到下午盤繼續等,但每次這樣子,就只會虧更多,唉!!!真的要照著計劃走,不能凹。

2022/09/01

選擇權做賣方要買保險

 做了幾個月的選擇權賣方,一直都記得做賣方要保險,不然遇到一次爆漲或爆跌,就會GG。

所以就一直做雙賣,想說至少有一邊能補一下,而且都做日盤當沖,頂多就價外1~2檔的位置,也流動性也還不錯,做的比較安心。

如果價格往其中一邊衝太多,還是會虧損,所以還是會設停損。

下單的策略並不是完全中立,是會先抓今天偏多或空,就會順勢往價外一兩檔做雙賣。

就算方向對了,賺的速度會比賠的快,所以還是會賺,但行情衝過頭,賠的速度就會比賺的快,反而會開始賠錢,等於是獲利有限,虧損無限大。

所以需要在好好想想,這策略應該要調整一下。

2022/07/27

連兩週結算日翻船啊

 連續兩周的OP週結算都來個V轉,本來當週都有機會賺錢,最後都賠了。

結算日雙賣,做錯邊,基本上就跟做小台差不多的賺賠啊。

2022/07/20

選擇權下單真是亂啊

 選擇權不像股票或期貨,今天你買了一張,如果又賣一張,帳戶就是0庫存。

但選擇權是可以同時存在買跟賣,所以下單前要先確認好現在是新倉還是平倉的選項,三不五時就會因為這個事情下錯單,真的很不爽,會因此產生不必要的虧損。

還有結算日時,明明要下結算日的合約,有時也會不小心下到新合約。

有時後就是因為這樣,原本當天要小賺的,就變小賠,白做工,真的要小心一點才行。

2022/06/23

選擇權操作-202206w5-沒想到還有w5

 本來想七月才重新開始,這周就可以來交易了。

沒想到這周只是6月w5~那就繼續忍吧,當作是在考驗自己的紀律。