綠茶妹 發表於 23-1-31 23:01

Interactive Brokers Python API (官方原生) 新手教學

本帖最後由 綠茶妹 於 23-1-31 23:49 編輯


Interactive Brokers Python API (官方原生)
下面這一篇寫的很清楚。
我也不知道原生API有沒有比第三方API好用。反正就學學看
https://algotrading101.com/learn ... n-api-native-guide/

今天做到中間這裡 ,還滿好上手的。


我的測試









綠茶妹 發表於 23-2-2 00:36

TrendRover 發表於 23-2-1 23:51
好久不見 ,最近好嗎?

我本業做的不錯,現在是中階主管。
但是我越來越討厭上班。
過去一年多晚上會看MYM MNQ期貨,我工作太忙了,不能長期睡這麼少。
現在想試程式交易。


綠茶妹 發表於 23-2-12 00:00

取出1分鐘線的程式碼

from ibapi.client import EClient
from ibapi.wrapper import EWrapper
from ibapi.contract import Contract

import threading
import time

class IBapi(EWrapper, EClient):
        def __init__(self):
                EClient.__init__(self, self)
                self.data = [] #Initialize variable to store candle

        def historicalData(self, reqId, bar):
                print(f'Time: {bar.date} Close: {bar.close}')
                self.data.append()
               
def run_loop():
        app.run()

app = IBapi()
app.connect('127.0.0.1', 7497, 123)

#Start the socket in a thread
api_thread = threading.Thread(target=run_loop, daemon=True)
api_thread.start()

time.sleep(1) #Sleep interval to allow time for connection to server

#Create contract object
contract = Contract()
contract.symbol = "MYM"
contract.secType = "FUT"
contract.exchange = "CBOT"
contract.currency = "USD"
contract.lastTradeDateOrContractMonth = "202303"


#Request historical candles
app.reqHistoricalData(1, contract, '', '5 D', '1 min', 'TRADES', 1, 2, False, [])

time.sleep(10) #sleep to allow enough time for data to be returned

#Working with Pandas DataFrames
import pandas

df = pandas.DataFrame(app.data, columns=['DateTime', 'Open','High','Low','Close'])
df['DateTime'] = pandas.to_datetime(df['DateTime'],unit='s')
df.to_csv('MYM-1min.csv')

print(df)


app.disconnect()




結果如下


綠茶妹 發表於 23-1-31 23:47

MYM取資料也OK了。(一樣是上面這篇教學)


程式碼如下:
from ibapi.client import EClient
from ibapi.wrapper import EWrapper
from ibapi.contract import Contract

import threading
import time


class IBapi(EWrapper, EClient):
        def __init__(self):
                EClient.__init__(self, self)
        def tickPrice(self, reqId, tickType, price, attrib):
                if tickType == 2 and reqId == 1:
                        print('The current ask price is: ', price)

def run_loop():
        app.run()

app = IBapi()
app.connect('127.0.0.1', 7497, 123)

#Start the socket in a thread
api_thread = threading.Thread(target=run_loop, daemon=True)
api_thread.start()

time.sleep(1) #Sleep interval to allow time for connection to server

#Create contract object
contract = Contract()
contract.symbol = "MYM"
contract.secType = "FUT"
contract.exchange = "CBOT"
contract.currency = "USD"
contract.lastTradeDateOrContractMonth = "202303"


#Request Market Data
app.reqMktData(1, contract, '', False, False, [])

time.sleep(10) #Sleep interval to allow time for incoming price data
app.disconnect()




TrendRover 發表於 23-2-1 23:51

好久不見 ,最近好嗎?

TrendRover 發表於 23-2-3 02:29

不考慮用 multichart 嗎?
amp 期或有免費的絹商版 multichart.net 用 C# 寫
或是ninjatrader 也是 C# 寫 , ninjatrader在下單前都是免費
也就是回測開發策略階段都是免費使用

TrendRover 發表於 23-2-3 02:36

amp地當沖保證金是 1/10-1/20,所以可以寫當沖 mym mnq 每1000U 可以下 3~5 口順勢
賺錢加碼策略 ,每天 收盤前 30分還是 15分鐘要平倉 ,沒平,他會幫你平收高手續費(以前碰過是
25U ,現在多少你要問問) ,amp缺點是除了 mc.net 或 mc 外你無法在 ampclearing 的 user portal 裡看到 order position 等等

如果要看得到那麼可以選 deepdiscounttrading 他的 user portal 可以看order
不過他要下單前都要email 要求開放 ,做 op還不准隨便做賣方---需要嚴格批准(資金族也要request ,margin 安全控管嚴格) ---ddt 的CQG 也比較貴

TrendRover 發表於 23-2-3 02:39

https://deepdiscounttrading.com/trading-margins/
ddt   的當沖是 1/4

https://www.ampfutures.com/news/margin-changes-economic-news-releases?utm_campaign=Client%20Notice&utm_medium=email&_hsmi=244216889&_hsenc=p2ANqtz--5aqrTNXSgdTaLM35mZJuooagNTYJB1MYIfoF5gesZjU5S9YNzPcjBFFBObXCZe-_m50l3x2fBCRIjGA7MxceEnrjeEA&utm_content=244216889&utm_source=hs_email

TrendRover 發表於 23-2-3 02:41

你如果用 python api 換一家要寫一次,很不方便
若C# 就可以換 tool 換 broker marketdata

用 powerlanguage 就簡單幾行,其餘交給 multichart

綠茶妹 發表於 23-2-4 22:22

我只需要MYM MNQ期貨就可以了,不用選擇權。
剛才上網找一下,DDT與AMP好像都比IB有優勢。

請問用這2家都有multichart嗎?手續費是多少?

TrendRover 發表於 23-2-10 02:33

綠茶妹 發表於 23-2-4 22:22
我只需要MYM MNQ期貨就可以了,不用選擇權。
剛才上網找一下,DDT與AMP好像都比IB有優勢。



AMP選CQG 平台費低於DDT   

都可以選 MC的連線
AMP有 mc.net 免平台費 卷商版
DDT要租或自備 mc
market data 的費用都可以訂 cme 一個level1 1.5USD就好   MYM +MNQ要訂兩個交易所 cbot + cme

綠茶妹 發表於 23-2-11 11:27

TrendRover 發表於 23-2-10 02:33
AMP選CQG 平台費低於DDT   

都可以選 MC的連線


感謝分享!

MC好像比較簡單,Python我覺得比較有彈性,但是基礎的環境要弄起來也要花不少時間。
每星期只有假日才有空來做。


s4709110.tw 發表於 23-2-15 02:26

TrendRover 發表於 23-2-3 02:29
不考慮用 multichart 嗎?
amp 期或有免費的絹商版 multichart.net 用 C# 寫
或是ninjatrader 也是 C# 寫 ...

請問大大amp 免費的mc.net有詳細的資料嗎,想開戶但受限於資料太少都沒開成

TrendRover 發表於 23-2-16 23:00

s4709110.tw 發表於 23-2-15 02:26
請問大大amp 免費的mc.net有詳細的資料嗎,想開戶但受限於資料太少都沒開成
...

https://www.ampfutures.com/trading-platform/multicharts-ampmc-net-free
頁: [1]
查看完整版本: Interactive Brokers Python API (官方原生) 新手教學