websocket_entry.py
import sys
import websocket
import _thread
import pprint
import json
import settings
import sendorder_entry
import datetime
import urllib.request
import time
def on_message(ws, message):
printWithTime('--- RECV MSG. --- ')
#print(message)
content = json.loads(message)
pprint.pprint(content)
curPrice = content["CurrentPrice"]
if curPrice is None:
settings.previous_current_value = 0.0
return
pprint.pprint(curPrice)
f_curPrice = float(curPrice)
pprint.pprint(f_curPrice)
if settings.previous_current_value > 0.0:
if settings.previous_current_value - f_curPrice >= settings.entry_delta:
# エントリ
sendorder_entry.sendorder_entry()
ws.close()
# 現在価格を1つ前の価格として格納する
settings.previous_current_value = f_curPrice
pprint.pprint(curPrice)
def on_error(ws, error):
if len(error) != 0:
printWithTime('--- ERROR --- ')
print(error)
def on_close(ws):
printWithTime('--- DISCONNECTED --- ')
def on_open(ws):
printWithTime('--- CONNECTED --- ')
def websocket_entry():
printWithTime('--- websocket_entry Start--- ')
url = 'ws://localhost:' + settings.port + '/kabusapi/websocket'
# websocket.enableTrace(True)
ws = websocket.WebSocketApp(url,
on_message = on_message,
on_error = on_error,
on_close = on_close)
ws.on_open = on_open
ws.run_forever()
printWithTime('--- websocket_entry --- ')
def printWithTime(message):
print(str(datetime.datetime.now()) + ' ' + message)
if __name__ == "__main__":
import sys
websocket_entry()
いつものWebSocketによるPUSH配信受信ブログラムです。トレーリングストップのブログラムとおなじように、1つ前の値をグローバル変数に入れておき、直近の値と比較するようにしています。
その差分が一定の値を超えたかどうかでエントリ判定としています。
コメント