FC2ブログ
にほんブログ村 為替ブログ システムトレード 自作EA派へ にほんブログ村 為替ブログ ユーロドルへ

ほったらかしのメタトレードで資産1億円を目指す

今月から楽天のアフェリエイトをやっています。
サイトを経由するだけで、購入金額の1%が懐に入ってきます。
ぜひぜひ、皆様もお試しくださいね。

今月から楽天のアフェリエイトをやっています。
サイトを経由するだけで、購入金額の1%が懐に入ってきます。
ぜひぜひ、皆様もお試しくださいね。

03 | 2021/04 | 05
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -

最強EA 9.2

無料ダウンロード

さてさて、前回のNGORKのURL自動設定も完了したので、
全システムを稼働チェックを実施している。

システムの流れとしては、
・18:00ごろ PCを自動で起動
・NGROKの立ち上げ
・メタトレードの起動


最初のPCは、BIOSの中に、決めた時刻で電源を入れる設定があったので採用した。
パソコンへのログインについては、パスワード無しに入れるように設定。
スタートアップへのバッチファイルの作成。


pythonマクロの起動。

python C:\Users\moto\Documents\GitHub\binary_robot\binary.py
cmd /k


メタトレードの起動。

python C:\Users\moto\Documents\GitHub\binary_robot\ngrok_refreash.py
cd C:\Program Files (x86)\OANDA - MetaTrader\
terminal.exe "C:\Users\moto\AppData\Roaming\MetaQuotes\Terminal\3212703ED955F10C7534BE8497B221F4\config\test.ini"



という流れだ。


ちょっと、つまずいたのであるが、メタトレードでスクリプトを起動する
INIファイルを書く際に、DLLインポートをしないと、メタトレード側でエラーになる。

ここはちょっと注意だ。


昨日、一応動作確認して、完全にシステムとして動作することを確認した。


来週から、チャットワークで受けたサインから、CSVデータをバンバンと吸い上げていく。

そして、ある程度、データが溜まった段階で、統計解析、AIパターン認識データとして
活用していくことになる。


統計解析については、だいたいJMPを使う事を想定している。

AI認識の方は、   
これまた、まだまだ未開のゾーンである。
(これが出来れば、AI技術者として応用範囲は一気に高まるだろう・・・)


急に肌寒くなってきた。

昨日は北陸出張だったが、さすがに寒かった。

もう夏は完全に終わったんだなあと実感・・・


来週末は久々の山登りに行ってくる。
https://www.facebook.com/events/1357174641096551/


あと、最近、中国語の勉強にも拍車がかかってきた。
(だいぶん、ネットの動画を見ても意味が分かるようになってきた。)

こちらの方も約9か月になるが、ようやく3合目まで来たかなあと実感。
登り続けることが大事なので、マイペースで頑張って行こう


最近のニュース
・わんこを飼うことになった。
・リップスティックを練習する(防具をamazonで頼んだ)
・冬場に向けて、家の片づけ、衣替えを開始する
・子供の参観日
・実家の法要



スポンサーサイト





2019/09/21 07:54|MT4連携TB:0CM:0
ついに完成しました。

NGROKのリフレッシュと、WEBHOOKのリダイレクト

この2本を作るために、いったいどれだけの時間がかかったことか・・・


その中で、いくつかつまずいた点があったので、簡単にメモしておく

結局のところ、doPost(e)で受審したメッセージを、
そのまま、リダイレクトするのに、
JSONオブジェクトをこねくり回すのがポイントだった。

リストを見てもらえば、分かると思うが、
入れ子のJSONというのは、かなり深い構造になっている。

JSONに始まり、JSONに終わる。

今回はJSONというものが、いったい何であるのか?
それを全くわかっていなかった自分と
どれだけ向かい合えたのか?

それが課題である。

あとWEBのPOSTメッセージというものの、
基本的な構造など、WEBアプリケーションに必要な
かなりの知識を得ることができた。


あとの課題

NGROKが適当な時間でEXPIREされる。
これを適宜ウォッチングして、もしEXPIREなら
再起動して、リフレッシュを行う

これを完成させれば、もうすべてのプログラムが完成したことになる。

というわけで、来週からCSVデータをがっちり集めていくぞ!!


-----------------------------
function doPost(e){
var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/12pSM7h3C4vmCp9u22lAZLe8rRfYOINNMZMjXWCA9CxI/edit#gid=0");

var param = e.postData.getDataAsString();
var js = JSON.parse(param);
var sheet = ss.getSheets()[0];
var lastRow = sheet.getLastRow();
var url = sheet.getRange(lastRow, 2).getValue();
var sheet = ss.getSheets()[1];

var data = {
"webhook_setting_id": js.webhook_setting_id,
"webhook_event_type": js.webhook_event_type,
"webhook_event_time": js.webhook_event_time,
"webhook_event":{
"from_account_id": js.webhook_event.from_account_id,
"to_account_id": js.webhook_event.to_account_id,
"room_id": js.webhook_event.room_id,
"message_id": js.webhook_event.message_id,
"body": js.webhook_event.body,
"send_time": js.webhook_event.send_time,
"update_time": js.webhook_event.update_time
}
}

var options = {
'method': 'post',
'contentType': 'application/json',
'payload': JSON.stringify(data)
}

var response = UrlFetchApp.fetch(url,options);
}

-----------------------



2019/09/16 18:52|MT4連携TB:0CM:0
現在のシステムでは、WEBHOOKを受けるための
ローカルホストに、NGROKを使っているが、
NGROKの有効期間があるために、ときどき再起動しなければならない

再起動時には、アドレスが毎回変わってしまうので、
これは面倒である。

流れとしては、pythonの方でタイマーを仕掛けて、
NGROKを再起動させることと、
GOOGLE APP SCRIPT側に、アドレスを送信して
それをSPREAD SHEETに転記しておく

CHATWORK側からのWEBHOOKを受けるための
トンネルサーバーを作っておき、URLをリダイレクトさせるという仕組みだ。

このためには、GASには、POST関数を2つ作っておく必要がある。
(最初は1つのスクリプトで、送信先で分岐処理しようと思ったが、
別にスクリプトを分ければいい)

それを、この記事を書いていて気が付いた。

うーん、やはりブログに書き留めることで、
頭の整理ができて、問題解決につながるものである。


という訳で、今週は飲み会が2回もあり、来週は中国出張ということで、
プログラムができるのは、しばらく先かなあ・・・


台風が去って、日本列島はとんでも無い状態になっている。

次の台風が来る前にも、やはり備えは重要・・・


1)飲料水
 山用のグッズで、飲み水に替えるものがある。

2)電気
 太陽電池式のモバイルバッテリー

他にも、ネタがあれば、こちらも書き留めておく。


中国語の勉強も、しばらく止まっている。
(これはプログラム言語よりも、ずっと高度で時間がかかる)


というわけで、そろそろ会社に行く
(那么,时间就没有了,我差不多要上班了)

2019/09/11 07:38|MT4連携TB:0CM:0
ついに最終段階!!

と、思いきやトラブルに見舞われています。

string symbol = sep_str[0]+ sep_str[1];  //通貨ペアの文字列

if(Symbol()!=symbol){
for (long i = ChartFirst(); i!=-1; i = ChartNext(i))
{
ChartSetSymbolPeriod(i,symbol,ChartPeriod(i));
}
}

通貨ペアを受け取ってから、ChartSetSymbolPeriodにて、
シンボルを切り替えようとすると、

・サーバーのスクリプトが停止する
・シンボルは切り替わるが、タイムラグが10秒ぐらいかかる
・ときどきメタトレードが落ちる

ちょっとこれは致命的だぞ・・・


うーむ、やはり想定した通貨ペアのチャートを複数出しておき、
そこからスイッチングさせるしかないのだろうか・・・

仕方なく、6個のチャートをマークすることにした。

USD/JPY LOW
EUR/JPY LOW
AUD/USD LOW
AUD/JPY LOW
USD/JPY LOW
GBP/JPY LOW


今日は、ここをコーディングする気もうせてしまい
少々疲れたので、寝ようかな。。。


それとNGROKのアドレスが毎回変わる件、
GOOGLE APP SCRIPTを使われている方がいて、
それを参考にして、こっちも自動アサインを
行うようにしなければ・・・

自宅スマートホームプロジェクト~自動消灯・点灯システム~ - ピリ辛的備忘録







2019/09/04 21:53|MT4連携TB:0CM:0
平日の取引時間なので、TICKデータの吸い上げについて検証しました。

MT4側のマクロとしては、2つあります。

bop_server.mq4 ⇒ スクリプト

これはWEBサーバーです。
PYTHON側から送られた、メッセージに反応して、
CSV排出させるファイル名をCONFIG化して、
グローバル変数内の、リクエストのフラグをONにします。

tick_out_CSV.mq4 ⇒ エキスパートアドバイザ

これはTICKデータをCSVに排出させる本体です。
グローバル変数のリクエストを見て、
フラグが立っていたら、CONFIG内のファイル名を見て
ファイルをOPENして、そこにカレントの値を記入します。

いくつかポイントがありました。

タイマー
 最初はTICKの変動に対して、集計しようと思いましたが、
そもそも、TICKが変わらないと、データが更新されません。
 ゆくゆくは秒足で解析をしたいため、1秒のタイマイベントで起動するようにしました。

int OnInit()
{
//--- create timer
EventSetTimer(1);

//---
return(INIT_SUCCEEDED);
}



現在値
 これは現在の時間と、現在の価格ですが、次の関数を使っています。

FileWrite(handle, TimeToStr(Time[i], TIME_DATE), TimeToStr(TimeCurrent(), TIME_SECONDS), TimeToStr(TimeLocal(), TIME_SECONDS),Ask );

現在の時間
 Timelocal()を使っています。ローカルPCの時間を読み取っています。
現在の価格
 これはASK,BITのどっちでもいいのですが、ASKにしています。

残務

1)通貨ペアの切り替え

今回、まだ出来ていないところは、リクエストの中に通貨ペアの情報があるのですが、
現在は、EAを張り付けたチャートの通貨ペアの読み値しか入っていません。

所定の通貨ペアの値を出させるために、EA内で通貨を変える必要があるのですが、
いまいち、やり方が分かっていません。

2)タイマイベントの終了

一定の時間分のCSVデータを排出させたら(目安10分)
タイマーを停止しなければなりません。

とりあえず、起動タイマーがONになったら、終了タイマーを起動させるように
すればいいのだと思いますが、いまいちタイマーの使い方が分かっていません


上記の2点をコーディングすれば、一応目的としているAIトレードシステムの
データ収集機能は完成したことになります。


今週は火曜日ですね。

昨夜も22時まで残業だったので、帰宅して2時間ぐらいのコーディングでした。

今日も、どれだけ時間がかけられるのか分かりませんが・・・


感想

GITHUBを覚えてから、プログラムを作るのが割合快適になりました。
ただし、どうしても英語でコメントを入れないとならず、
この辺りが苦痛です。

そもそも、私のプログラムを再利用される方がまずはいないと思いますけど。。。

プログラマとして、独立自走するには、こういうマメなことを
やっていかないと駄目ですね・・・

私には、プログラマには、成れないのかもしれない。

2019/09/03 07:31|MT4連携TB:0CM:0
update

梅田に行ってきました。

さて、コーディングの続きです。

やはりファイル入出力する方が、早いという結論になりました。
参考ソースがありました。

https://www.mql5.com/en/forum/140679


今日中にプログラム完成させます。




update

とりあえず、プログラムを組んだが、文字列データはグローバル変数に入りませんでした。

しかたなく、DATATIMEと、ON/OFFフラグだけを保持して、あとはテキストデータ化して
ファイル入出力を使うしかないのかなあ・・・

ひとまず、知恵袋に投げて、いまから家族で梅田に買い物に行きます。

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12212915032



今日は山行計画は中止にしました。

来週から9月なんですねえ (早いねうぇ)

9月目標としては、
・ バイナリOPのデータ抽出マクロの完成 
・ データの統計処理による勝率計算
・ トレードパターンの抽出
・ AIバイナリトレードの完成

ここまで取り付けたいと思います。




今回のメタトレード側の処理としては、
WEBサーバーを仕込んで置き、クライアントからリクエストが来たら、
それをトリガーにして、ティックデータを排出させるにあたり、
スクリプトとインジケーターの2つを使おうとしている。

関連記事
https://www.mql5.com/ja/articles/1393

プログラム構成としては、WEBサーバーをスクリプトにして無限に走らせておき、
EAはステータスの状態を、グローバル変数で判断して、リクエストが来ている状態なら、
csvファイルを新規にオープンして、一定時間だけ、ティックを書き出して、クローズするというのが良さそうだ。


-----------------------------------------
http://googolyenfx.blog18.fc2.com/blog-entry-110.html

Global variables
グローバル変数の制御を担う関数群

クライアント端末のグローバル変数はMQL4プログラムのグローバルスコープ(プログラム内のどこからでも参照可能)において宣言された変数と重複してはならない。

グローバル変数は最後の参照から4週間、クライアント端末内に保存され、その後自動的に削除される。
グローバル変数への参照とは、新しい値を設定することや読み込むことだけではない。

クライアント端末のグローバル変数は、クライアント端末内で起動しているすべてのMQL4プログラムから同時に参照できる。



2019/08/31 17:16|MT4連携TB:0CM:0
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エンジニアが回答をくれるのだが、
質問の仕方がまずいと、かなりダメダシされるので、
ちょっと質問したいだけでも、相当量の情報を出す必要がある。

(もちろん、情報が多ければ、多いほど、それに対するアドバイスも
濃厚になるので、手間冴え惜しまなければ、質問内容は吟味した方がよい)


というわけで、今週末までの、スクレイビング処理を完成させて、
メタトレード側に、通貨ペア情報を送信するところを
仕上げなければならない。


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



2019/08/28 21:38|MT4連携TB:0CM:0
ようやくプログラミングが進みました。

いろいろ、つまずいた点がありましたので報告します。


python側


#!/usr/bin/python
# -*- coding: utf-8 -*-
import json
from zmq import Context, REQ
from flask import Flask, request
import pdb

def mains(msg):
context = Context()
print("Connecting to hello world server...")
socket = context.socket(REQ)
socket.connect("tcp://localhost:5555")
# pdb.set_trace()
for i in range(10):
socket.send(msg)
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'].encode()
mains(res2)
return msg

if __name__ == "__main__":
app.run()



metatrade側


#include <Zmq/Zmq.mqh>

void OnStart()
{
string port = "5555";
uchar data[];

Context context("helloworld");
Socket socket(context,ZMQ_REP);
socket.bind(StringFormat("tcp://*:%s" ,port));

while(true)
{
ZmqMsg request;

socket.recv(request);
ArrayResize(data,request.size());
request.getData(data);
string msg = CharArrayToString(data);

Sleep(1000);

csv_out(msg);
// Send reply back to client
socket.send("msg");
}
}
//+------------------------------------------------------------------+

void csv_out(string &msg)
{

Print(msg);
}







python側は、WEBHOOKを受けるサーバー機能と、
MQL4にzeroMQでメッセージを送るクライアント機能
中継サーバーのような恰好になっている。

サーバーは、FLASKというWEBフレームワークを使っている。

FLASKは、ちょうどWEBページのフォルダ構造を
プログラムで書くような格好になっている。

関数定義されている名前には、まったく意味がないことに驚いた。
(スクリプト言語なので、@app.routeの次の行が実行されるのが
約束事のようになっている)

WEBHOOKのメッセージを受け取るには、
requestライブラリにある、get_dataメソッドを使う必要がある。

これはmetatrade側も同様であるが、
ソケットを繋いでも、戻ってくるのは、リクエストオブジェクト自体であり、
メッセージを引き出すには、getDATAメソッドを使う必要がある。

次に、送られるメッセージは文字列では無くて、バイナリデータというものである。
この辺りは、文字列-バイナリ変換しなければならないのである。

PYTHON側で言えば、encode()、decode()のメソッド
Metatrade側で言えば、CharArrayToString()関数となる。

とりあえず、手当たり次第にググったソースを真似して作ったわけだが・・・
このあたり、自分自身もプログラマとしての知識不足を実感する。

参考ソース







2019/08/23 05:06|MT4連携TB:0CM:0
昨日は通信の仕方について、学ばなければならないと認識。

キーワードとしては、IOTなどで言われている、分散ネットワークのことらしいが・・・

https://www.hulft.com/special-column/iot-architecture_01/iot-architecture_05


https://cloud-textbook.com/60/

もうだるだる。。。

しかしながら、我が社もIOT部門などもあり、



実はソフトウェア開発をやっている。

なので、これらの勉強は、いずれ身になる可能性があり
情報は仕入れておこうと思う。

--------------------------------
分類
キュー・メッセージングについて、下記の分類があります。

PTP (Peer To Peer) モデル または キューモデルPTP モデルは、1本のキューがあり、送信側と受信側が 1対1 の形になっているものです。
Pub/Sub (パブ・サブ) モデルPub/Sub モデルは、Publish/Subscribe のことで、 送信側と受信側のレイヤがわかれており、1対1 もできますし、1対多 にすることもできます。 「出版-購読型モデル」と言うこともあるようです。
さらに別の切り口として、PULL・PUSH があります。

PULL受信側が、新しいメッセージを取りに来るタイプ。 例えば1秒に1回とか、1分に1回などの頻度でメッセージを取りに来るので、その分のタイムラグが発生します。
PUSH新しいメッセージがあると (比較的) すぐに受信側に送りつけるタイプです。
例えば Amazon SQS は、PTP モデルであり、PULL のみです。 Google Pub/Sub は、Pub/Sub モデルであり、PULL と PUSH 両方が可能です。
---------------------------------

ちなみにzeroMQのマニュアルに記載されていたのは

-----------------------------------
第 1 章「基礎」で最初の 3 つは既に見てきました。そして排他的ペアのパターンは後の章で
やります。zmq_socket() の man ページはパターンについて詳しく説明していますのでよく
理解できるまで何度か読み返すだけの価値はあります。以下は接続と bind を行う際に有効な
ソケットペアの組み合わせです。(どちら側でも bind 出来ます)
• PUB と SUB
• REQ と REP
• REQ と ROUTER
• DEALER と REP
• DEALER と ROUTER
• DEALER と DEALER
• ROUTER と ROUTER
• PUSH と PULL
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

今回のシステム開発は、通信ができれば何でもよさそうなので、
この辺はパスして、次のコーディングに進むことにする。
(システム完成までの貴重な時間を、1日ロスしてしまう。)


今後のスケジュールをザクっと書く

・PYTHON-MT4 メッセージ通信仕様の確認
・LOCALHOSTでのHEBHOOK受審(python側)
・MT4へのメッセージ送信(通貨ペア、HI/LOシグナル) (python側)
・MT4でのメッセージ受信
・MT4、該当通貨ペアでの分足データのCSV出力

ここまでを今月中に完成することを目指したい



2019/08/22 07:14|MT4連携TB:0CM:0
今日から、いきなりサンプルソースを見ながら、プログラミングを開始している。

まずは、PYTHONとMT4の通信仕様の確認から。

正直、この手のジャンルは、まったくの無知状態。


まずはTCPとは何?
というところから、つまずいている。


とりあえず、パソコンの通信状態というのは、
何らかソフトで見れるらしい。

調べて入れたソフトがこれ。
https://forest.watch.impress.co.jp/library/software/tcpmonitor_p/


立ち上げておくと、通信ポートの状態が確認できる(らしい)



ひとまず、今日のところは、PYTHON側から下記のソースで
メッセージ送信できることは確認した


from zmq import Context, REQ

def Main():
context = Context()
print("Connecting to hello world server...")
socket = context.socket(REQ)
socket.connect("tcp://localhost:5555")

for i in range(10):
socket.send(b"sell usd")
message = socket.recv()
print("Received reply %s [ %s ]" % (i, message))

if __name__ == '__main__':
Main()


これまでのpythonの知識から、
軽くコードの説明をする。

最初のfromというのは、いわゆるライブラリのインストールである。
当然ながら、ライブラリを入れることが必要で、それはPIPというコマンドを
DOSで実行する。

cmd ⇒ pip install zmq

これでサクッとダウンロードされる

次に、pythonのプログラムの書き方であるが、
今回はメインだけのプログラムなので、
最初に、mainの中身を書いておき、
一番下の行で、mainを起動する。

ちょっと見ると、何がどうかは分からないと思うが
この構成は、丸暗記すればいい

とりあえず、このソースを走らせると、
TCPのポート、5555が解放される。

ちなみに、ローカルホストというのは、
自分のPC自体の名前を指す。

socket.send(文字列) で、ポートにメッセージを送る
socket.recv()で、メッセージを受け取る

文字列に b がついているのは、
pytonのバイナリ表現を示す、表記方法である。


次にMT側

MT側の導入は、少々てこずった。

やはり、こちらもライブラリを的確な場所に置くことが重要である。


//+------------------------------------------------------------------+
//| HelloWorldServer.mq5 |
//| Copyright 2016, Li Ding |
//| dingmaotu@hotmail.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Li Ding"
#property link "dingmaotu@hotmail.com"
#property version "1.00"

#include Zmq/Zmq.mqh '<>必要
//+------------------------------------------------------------------+
//| Hello World server in MQL |
//| Binds REP socket to tcp://*:5555 |
//| Expects "Hello" from client, replies with "World" |
//+------------------------------------------------------------------+
void OnStart()
{
Context context("helloworld");
Socket socket(context,ZMQ_REP);

socket.bind("tcp://*:5555");

while(true)
{
ZmqMsg request;

// Wait for next request from client

// MetaTrader note: this will block the script thread
// and if you try to terminate this script, MetaTrader
// will hang (and crash if you force closing it)

Print(socket.recv(request));
Sleep(1000);

ZmqMsg reply("World");
// Send reply back to client
socket.send(reply);
}
}
//+------------------------------------------------------------------+


動かしてみて気づいたのであるが、
送られてきたメッセージは、
TRUEという中身になっていた。

どうやらsocket.recvの内容が、
フラグになっていて、これはたぶん通信の
仕様をZMQ_REPにしているところが怪しい。

とりあえず、ソケットの種類が結構あるらしくて、
今回の選んだものは、単なるtrue/falseのフラグだけのような気がする。

これからは、ZMQのマニュアルを見て勉強することにする。

とりあえず、メタトレード側については、
かなりGITHUBの説明を見て、ちゃんとライブラリを入れることが大事

ようやく、動作確認まで出来たので、一安心した。

2019/08/21 06:51|MT4連携TB:0CM:0

motochan

Author:motochan
人に感謝されることをやっていく。誰かに喜ばれること。先に歩いて、道を作っていくこと。喜ばれることを、生きがいにしていく。時代は、後でついてくるもの。自分で感じたことを、自分がやっていく。世の中にないものは、自分で考えていく。理想とするものは、自分が自ら考える。自己の満足が、他人の満足につながる。


詳細はコチラ>>

Copyright(C) 2006 テクニカル講座上級の部屋 All Rights Reserved.
Powered by FC2ブログ. template designed by 遥かなるわらしべ長者への挑戦.