概要
OandaFX用の新規成り行きの注文関数.注文量,通貨ペア量を指定して使う.
引数
- OandaのアカウントID(str型)
- api※
- 通貨ペア(***_***の形式,str型)
- 注文通貨量(買いなら***,売りなら-***の形式,int型)
※次のように定義:
api= API(access_token=*****, environment=”practiceまたはlive”)
戻り値
-
- 約定通貨量(買いなら***,売りなら-***の形式,int型)
- 約定時のレート(円,float型)
- 約定エラーフラグ(0 or 1,1ならエラー,int型)
コード
import oandapyV20.endpoints.instruments as instruments import oandapyV20.endpoints.orders as orders #201118 Oandaでの新規注文用関数.引数は順に通貨ペア,±取引通貨量 def MarketOrder_Oanda_ver1(accountID,api,CurrencyPair,OrderUnits): Result_OrderUnits=0#約定通貨量を初期化する Result_OrderPrice=9999#約定レートを初期化する ErrorCheck = 1 #エラーチェックを初期化(エラーなら1).約定されたら0にする iOrder = 0 # 取引回数を初期化 units_str = str(int(OrderUnits)) #print(units_str) # 注文情報 order_data = { "order":{ "instrument": CurrencyPair, "units": units_str, "type": "MARKET" } } # APIに対する注文書を作成 o = orders.OrderCreate(accountID, data=order_data) while(iOrder<3): # 注文要求 Results=api.request(o) Result_CurrencyPair_str=Results['orderFillTransaction']['instrument'] # 約定ペア Result_OrderUnits_str=Results['orderFillTransaction']['units'] # 約定通貨量 Result_OrderPrice_str=Results['orderFillTransaction']['price'] # 約定レート if FuncGeneral.is_num(Result_OrderUnits_str)==True:#返ってきたResultsの文字列が数字なら,約定成立と見做せる Result_OrderUnits=int(Result_OrderUnits_str)#約定通貨量をint変換 Result_OrderPrice =float(Result_OrderPrice_str) if Result_OrderUnits == OrderUnits:#注文した通貨量と,約定した通貨量が同じならループを抜ける ErrorCheck = 0 break iOrder=iOrder+1 return(Result_OrderUnits,Result_OrderPrice,ErrorCheck)
python用ライブラリ”oandapyV20”をインストール,インポートして使う.
指定した通貨量が約定されなかったとき,2回までリトライするようにした.効果があるかはわからないが,運用から2か月現在,今のところ,エラーフラグが1で返ってきたことは一度もない.
コメント