仮想通貨取り引きbotを作るのが流行ってるみたい.
作り方はググれば出てくるのであまりネットになくて困ったことを書いてくよ
あといろんな指標の実装
独学なので汚い書き方だったり間違えてたりするかもなので勘弁.
あと,変数名でいろいろ察してくれ
・bitflyerが4:00-4:10メンテなのでその時間は停止させる
now = datetime.now()+ dt.timedelta(hours=9)
if(now.hour==3 and now.minute > 55):
hoge
elif(now.hour==4 and now.minute < 15):
fuga
else:
piyo
みたいに
・bitbankは現時点でccxtに含まれていない
・zaifはサーバ弱すぎて現状つらい→アビトラで使うならzaifで注文してエラーが返ってこないならほかの注文の順
・phantomJSはサポート終了してるから動かないJavaScriptがある.
そんな時は以下を参考にcloud9でもヘッドレスのgoogle chromeを動かせる
https://qiita.com/onorioriori/items/4fa271daa3621e8f6fd9
・bitmex(ccxt)でトレイリングストップ(売りはTrail値とamountが負,買いは正)
bitmex.private_post_order({'symbol':'XBTUSD','orderQty':amount,'ordType':'Stop','pegPriceType':'TrailingStopPeg','pegOffsetValue':Trailchi,'execInst':'LastPrice,Close'})
以下いろんな指標
変数名は空気読んでくれ.
・EMAの書き方(pricesは文字列/tは期間/pdはpandas)
def ema(prices,t):
result = pd.ewma(prices,t)
return result
・SMAの書き方
def sma(prices,t):
result = pd.rolling_mean(prices,t)
return result
※今はもう無理かも
result = pd.Series(prices).rolling(window=t).mean()
でおけ
・ストキャスティクス
def Stochastics(close,low,high,K,D,SLOWD):
C=pd.rolling_max(close,K,1)
LK = pd.rolling_min(low,K)
HK = pd.rolling_max(high,K)
ansK = ((C - LK) / (HK - LK))*100
bunshi_D = pd.rolling_mean(C-LK,D)
bunbo_D = pd.rolling_mean(HK - LK,D)
ansD = bunshi_D/bunbo_D
ansSlowD = pd.rolling_mean(ansD,SLOWD)
return ansK,ansD,ansSlowD
・MACD
def MACD(X,Y,Z):
emaX = np.array(ema(close,X))
emaY = np.array(ema(close,Y))
macd = emaX - emaY
signal = np.array(ema(macd,Z))
return macd,signal
・RSI
def RSI(kikan):
up = close - openp
down = openp - close
up[up[:] < 0] = 0
down[down[:]<0] = 0
rsi = pd.rolling_mean(up,kikan)/(pd.rolling_mean(up,kikan)+pd.rolling_mean(down,kikan))
return rsi
・RSIストキャスティクス
def RSIStochastics(K,HI,RSInoNAGASA,StochasticsKikan):
rsi = RSI(RSInoNAGASA)
C= rsi
LK = pd.rolling_min(rsi,StochasticsKikan)
HK = pd.rolling_max(rsi,StochasticsKikan)
ansK = (C - LK) / (HK - LK)
bunshi_D = pd.rolling_mean(C-LK,StochasticsKikan)
bunbo_D = pd.rolling_mean(HK - LK,StochasticsKikan)
ansD = bunshi_D/bunbo_D
return ansK,ansD
・ボリンジャーバンド
def BB(prices,window):
data = pd.DataFrame(prices)
ma=data.rolling(window=win).mean()
std=data.rolling(window=win).std()
band1_upper = np.array((ma + std)values.flatten())
band1_lower = np.array((ma - std)values.flatten())
band2_upper = np.array((ma + 2*std)values.flatten())
band2_lower = np.array((ma - 2*std)values.flatten())
band3_upper = np.array((ma + 2*std)values.flatten())
band3_lower = np.array((ma - 2*std)values.flatten())
return band1_upper,band1_lower,band2_upper,band2_lower,band3_upper,band3_lower
間違ってたらすまんの
それではまた
0 件のコメント:
コメントを投稿