晴れ時々、FX

My dairy fx life

(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エンジニアが回答をくれるのだが、

質問の仕方がまずいと、かなりダメダシされるので、

ちょっと質問したいだけでも、相当量の情報を出す必要がある。

(もちろん、情報が多ければ、多いほど、それに対するアドバイス

濃厚になるので、手間冴え惜しまなければ、質問内容は吟味した方がよい)

というわけで、今週末までの、スクレイビング処理を完成させて、

メタトレード側に、通貨ペア情報を送信するところを

仕上げなければならない。

ああ、完成はまだ先かなあ。。。