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

無料ダウンロード

今日から、いきなりサンプルソースを見ながら、プログラミングを開始している。

まずは、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

管理者にだけ表示を許可する

トラックバックURLはこちら
http://1969681.blog66.fc2.com/tb.php/574-0e00665b

motochan

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


詳細はコチラ>>

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