モミ合い時の対策
モミ合い時は、手数料負けする
初見
過去 5つの MACD値 が 全部 1以下だったら取引を止める?
1が特微値かどうかは不明。
検討結果
データマイニング結果、 MACD 値が -0.05 〜 0.05 の間は、 bot を停止させる。
15分足の現在の MACD もしくは 一つ前の MACD が -0.05 〜 0.05 だったら一旦停止?
とりあえず現在の MACD値の範囲によって、取引するかしないか判断させてみることに。。。
プログラム
import talib
import pandas as pd
import time
from datetime import datetime
import calendar, requests
import json
x = 0
print("-- MyBot Start --")
startTIME = datetime.now()
print(startTIME)
now = datetime.utcnow()
unixtime = calendar.timegm(now.utctimetuple())
since = unixtime - 60 * 1200
param = {"period": 5, "from": since, "to": unixtime}
url = "https://www.bitmex.com/api/udf/history?symbol=XBTUSD&resolution={period}&from={from}&to={to}".format(
**param)
res = requests.get(url)
data = res.json()
df = pd.DataFrame({
"timestamp": data["t"],
"open": data["o"],
"high": data["h"],
"low": data["l"],
"close": data["c"],
"volume": data["v"],
}, columns=["timestamp", "open", "high", "low", "close", "volume"])
df["datetime"] = pd.to_datetime(df["timestamp"], unit="s")
df = df.set_index("datetime")
pd.to_datetime(df.index, utc=True)
df = df.resample("15T").agg({
"timestamp": "first",
"open": "first",
"high": "max",
"low": "min",
"close": "last",
"volume": "sum",
})
df.set_index(['timestamp'], inplace=True)
macd, signal, hist = talib.MACD(df.close.values,
fastperiod=12, slowperiod=26, signalperiod=9)
MACD_hist = hist[-6:-1]
onoff_data = hist[-1]
hantei = -0.6 < onoff_data < 0.6
hantei_kekka = "トレード停止?" + str(hantei)
while True:
if hantei == True:
print("Waiting.....")
print(MACD_hist)
print(onoff_data)
print(hantei_kekka)
x = x+1
print(x)
time.sleep(5)
else:
print("GO Trade!")
print(MACD_hist)
print(onoff_data)
print(hantei_kekka)
x = x+1
print(x)
time.sleep(5)
print("Program End")
確認のため MACD値は -0.6 〜 0.6 でテスト
結果
いいですね、指定した MACD -0.6 〜 0.6 で止まっています。
My BOTに組み込んでみたら
一旦ポジションを取った後、 MACD -0.06 〜 0.06 になり、 取引お休み中に。。。。はたしてどうなるやら。。。。