(4)メッセージリクエスト
update
ようやく、送信メッセージが送れました。
はまっていた箇所としては、CHATWORKSのSEND TIMEを
ストリングとして処理をするところ
最初はエポックタイムを、変換してから送ろうとしたけど、
やめました。
仕方なく、エポックタイムはメタトレード側で処理をします。
という訳で、PYTHON側のコードは終了いたしました。
あとはメタトレードで、受けた通貨ペアのログを取り、1分足のCSVを排出するところを、明日やります。
さっき、めっちゃ雨降ってきたよ~
#!/usr/bin/python
# -*- coding: utf-8 -*-
import json
from zmq import Context, REQ
from flask import Flask, request
import re
import pdb
from datetime import datetime
def mains(msg):
context = Context()
print("Connecting to hello world server...")
socket = context.socket(REQ)
socket.connect("tcp://localhost:5555")
for i in range(1):
socket.send(msg.encode('shift-jis'))
message = socket.recv()
print("Received reply %s [ %s ]" % (i, message))
def jsonConversion(jsonStr):
data = json.loads(jsonStr)
return data
app = Flask(__name__)
@app.route("/", methods=['POST'])
def webhook():
msg = request.get_data()
res = jsonConversion(msg)
res2 = res['webhook_event']['body']
result = re.match(r'[A-Z]{3}[\/][A-Z]{3}\s[A-Z]{3,}',res2)
if result != None:
res3 = res['webhook_event']['send_time']
mains(result.group(0)+' '+str(res3))
else:
print("not found!")
return msg
if __name__ == "__main__":
app.run()
update
何とか正規表現については、クリアできたようだ・・・
しかしながら、正規表現後のクラスが、ZEROMQのSENDエラーになってしまう・・・
誰かヘルプもらえないだろうか…
TypeError: <re.Match object; span=(0, 7), match=b'USD/JPY'> does not provide a buffer interface.
シグナルサイトから配信されるWEBHOOKには、
必要な情報となる、通貨ペアと、ポジション以外にも、
いろんな文章が文字列で乗っている。
基本的には、PYTHONでWEBHOOKメッセージに対して、
必要な情報を洗い出す(スクレイビング)処理が必要になる。
そこで正規表現を使おうとしているが、さっそく躓いている。
こんな時に役立つのが、teratailである。
さっそく、下記の投稿をした。
https://teratail.com/questions/208809
ちなみに、このサイトはITエンジニアが回答をくれるのだが、
質問の仕方がまずいと、かなりダメダシされるので、
ちょっと質問したいだけでも、相当量の情報を出す必要がある。
(もちろん、情報が多ければ、多いほど、それに対するアドバイスも
濃厚になるので、手間冴え惜しまなければ、質問内容は吟味した方がよい)
というわけで、今週末までの、スクレイビング処理を完成させて、
メタトレード側に、通貨ペア情報を送信するところを
仕上げなければならない。
ああ、完成はまだ先かなあ。。。