Wizard In The Market
システムトレードの魔術師

*

MQLでのWindowMessageText使用時にstring型がバグる

公開日: : 最終更新日:2015/01/13 その他

昨日、ひたすら困ってました・・・orz
バグが発生していたソースは下記の通りです。

最後のPrint2つの動作なのですが、本来であれば
[ windowのタイトル ]
[ 空白 ]
と表示されるはずなのですが、
[ windowのタイトル ]
[ windowのタイトル ]
と表示されてしまうのです・・・。
MQLでは、外部関数を呼び出しての参照渡しでちゃんと動かないことが多いのは
DLL作成しているときに確認したので、GetWindowTextAの第二引数が
ポインタで指定できないことが原因だというのは推測がつくのですが、
手の打ちようがありませんでした(||||▽ )
こういうときは、困ったときのfaiさん。
英語系のサイトも当たってみましたが、良答はなかったです><
以前、Demo口座とアカウントをMQL言語を使わないで使用できるようにしていた時に、
GetWindowTextを使用していたのを思い出しました。

昨日の続き。。。

やはり、ココに答えがありました。
注目したのはここ。

空白がいっぱい。
80個空白があります。
こうやって、あらかじめgwstrにメモリを割り当てておく必要があったんですね・・・。
そうしないと、メモリの割り当てがずれてしまって正常に動作しないようです。
このあたりの知識は目下勉強中なので、詳しい考察は今後していきます。。。
誰かのご参考になれば幸いです・・・。
お読みくださり、ありがとうございます。

にほんブログ村 為替ブログへ 
Fx-Kirin

About Fx-Kirin

2009年10月にFXを開始、翌年2010年5月から脱サラをしてFX業界に専念。 2012年10月頃から本格的に勝ち始め、一月で資産を倍にする、2年半月間負けなし等、安定した収支で2013年11月に生涯FX収支が1億を超える。 投資スタイルはシステムトレード。プログラミングの知識がほぼない状態から、独学で自分がしたいと思うことであればほぼ実現することが可能なレベルまで成長。好きな言語はRuby, Python。必要となればC++からVBA、Pascal等なんでも行う。MT4/MT5のプログラミングも得意。 2011年にはFXで稼いだ資金をもとにシンガポールに移住し、留学も兼ねて起業をチャレンジするほど、ビジネスを興すことに熱意がある。国内の業者を主に使い始めたことから、2012年に帰国。零細株式会社経営中。

Adsense

  • このエントリーをはてなブックマークに追加
  • Pocket
  • 67 follow us in feedly

関連記事

no image

日本のFX業者はなぜスプレットが低いのか?

みなさんは考えたことはございますか? それを考えると、 なぜmixiを見ていても「スキャルピング」という言葉が そこらじ

記事を読む

no image

11/4 取引結果

<colgroup> </colgroup>バイナリオプション日付曜日取

記事を読む

no image

今日は門出の日!

こんばんは。キリンです。 まず、非常に個人的な日記になることをお詫びさせていただきます。 今日は僕にとって区切りの日なん

記事を読む

no image

Windows環境ではRuby1.9.3にはruby-debug19が入らない?

Ruby1.9.2でやればすんなりと出来ました。RadRails上でのデバッグもバッチリ。1.DevKitを入れる2

記事を読む

no image

MT4用のWindowsアプリを公開しているブログ

こんばんは.キリンです。 この人すごい!と思ったので紹介させていただきます。 すでに有名なのかもしれません・・・ Par

記事を読む

no image

ナンピンはアブナイ

ちょっと古いですが、エアーマンネタです。 戦略的ナンピンは有効です。 それは間違いないんです・・・。 【ニコニコ動画】『

記事を読む

no image

11/15 運用結果

<colgroup> </colgroup>バイナリオプション日付曜日取引

記事を読む

no image

SMA,LWMAとチャートのクロスで警告を出すCustomIndicator

皆さん、お疲れ様です。 ちょっとOKWaveで依頼があったので、タイトルのものを作ってみました。 そのUPLoad用記事

記事を読む

no image

トレンドライン・サポレジラインのmq4の作成

こんばんは。 こんなに勉強しているのは、大学受験以来ですね。 プライベートの時間の大半を費やしています。 さて、メタトレ

記事を読む

no image

時間を区切って色を付けるインジケータ

おはようございます。キリンです。 裁量のバックテストや検証をするときに、 時間がいつなのかを線を引いてやるのは大変ですよ

記事を読む

Comment

  1. 詠み人しらず より:

    SECRET: 0
    PASS:
    APIの意味から考えると
    GetWindowTextA(hwnd, gwstr, StringLen(gwstr));
    とするのが正しかったのです。
    MQ4に限らず、可変長Stringを採用している言語(VB等)からAPIを呼び出す時のおきまり事ですので、覚えておいて損はないかと思います。

  2. SECRET: 0
    PASS:
    >詠み人しらずさん
    おお!なるほど!
    char型でそういう概念が必要だとは知っていたのですが、string型でも必要になるのですね><
    とても勉強になりました!
    ありがとうございますm(__)m

  3. 詠み人しらず より:

    SECRET: 0
    PASS:
    ちょと書き方が不親切だったので、補足。
    可変長のstringをサポートしているMQL4から固定長(?)のstringしかサポートしていないAPIを呼ぶときは事前にstring領域の確保は必須です。
    そして、APIに確保した領域の長さを教える必要があります。(これが3つめの引数)
    ここに数値を直接書き入れると、確保した領域と食い違った場合、予期せぬ結果となり悩むことになるので、StringLenで確実に正しい長さを教えてあげるのがいいと思います。
    はじめの例だと StringLenは0になるので、それほど悩まずに、間違いに気づいたのかなと思います。

  4. SECRET: 0
    PASS:
    >詠み人しらずさん
    なるほど。文字数を指定する必要があるのは、
    固定長だったからなのですね。
    非常に勉強になりました。
    本当にありがとうございますm(__)m

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Adsense

JupyterでボタンからJavascriptを実行して追加のアウトプットをさせない方法

Javascriptを実行するとアウトプットセルの行が増える これがとても面倒だった。上の

まだBokehで消耗してるの?これからはPandas-Bokehを使おうぜ

タイトルはあまり気にしないでください。全然、Bokehで消耗する価値があるとは思っています。ただ

SQLAlchemy のマイグレーションライブラリ Alembic を使ってみる。

SQLAlchemyの作者が作ったデータベースマイグレーションツール。個人的には、SQLAlch

Avoiding the problem of connect to outside of LAN with L2TP/IPSec on Ubuntu 18.04.

とても困って、原因の特定に2日かかった。疲れた。確定申告したいのに。 The IPSEC tu

Wine 上の MT4から ZeroMQ を使って Linux の pyzmq の通信をさせる

こんにちは。キリンです。 最近、年に数度のMQLを書くときがきたのですが、Pythonに慣れま

→もっと見る

PAGE TOP ↑