Code

最適化を最適化する・・・//MQL4の高速化(1) 速度測定

商用の指標トレードEA「AutoForex_EventExpress」は、こちらの記事によると、相場環境の変化に応じて着々とバージョンアップが図られているようです。(セカンドインパクト...名前だけで買ってしまいそう 笑) 一方、「DailyImpact」の方は、数量限定!リア…

csvをhstに変換してMT4に取り込んでみたPerl

ロロマルさんが、無料配布されているユーロドルトレンド系EA Star Fleetですが、バックテストを少しだけ高速したバージョンが、ここにアップされています。テストされている人は、高速化版をお試しください。。 さて、今日もコメント対応… Coo 2010/02/07 23…

同一口座の他PC間 MT4の通信?

これまでに、 MT4 から Excel に任意のデータを渡す方法 Excel から MT4 にデータを渡す方法 MT4 から MT4 にデータを渡す方法 を紹介してきました。 これらはすべて同一のPC上でのプロセス間通信なのですが、MT4 を運用する上では、複数の PC 間での情報の…

MT4他業者の価格を表示させる。/共有メモリの活用。

FxPro が GBPJPY を何円で取引しているのか?を FXDD の MT4 上で知ることは…当然出来ない訳ですが、それを無理やりプログラム上で知るにはどうすればよいのか?…という話です。 それが何の役に立つのか?は不明で、業者間裁定が成り立つかどうかは分かりま…

昨日の続き。。。

昨日は、「+」や「*」を使わずにプログラムが書けるか?という話でしたが、MQL4 の関数を別のカタチで書きなおせるのか?を考えるのも、一種の知的パズルに成り得ます。 MathAbs,MathCeil,MathFloor,MathMax,MathMin,MathMod,MathPow,MathRound 辺りはすぐに…

「+」を使わずに足し算する術。

今日も、FX とは無関係な話なので、プログラミングされない人は読み飛ばし推奨です。 将棋の世界では、「2枚落ち」と言って、飛車・角を抜いて勝負する形態があり、麻雀には、「二飜縛り」という二飜以上の役がないと和了できないとするルールがあります。…

Yahoo Mail にメールを送る時は、改行に注意する。

Yahoo Mail 関係で困っていた人がいらっしゃったので、メモを残しておきます。 この話は、だいぶ昔に他のブログで話題になっていたので目新しい話ではありません...。 まず、Yahoo Mail 用に設定します。Gmail の時のような苦労は無いので簡単です。 以下の…

雲を描く

MetaTrader のインジケータでは、メインチャートウィンドウ内で SetIndexStyle 時に DRAW_HISTOGRAM を指定すると、一目均衡標のような雲を描くことができます。このチャートウィンドウ内でのDRAW_HISTOGRAM の使用方法は特殊な仕様になっており、バッファ番…

Comment関数を追記可能にする方法。

EAやインジケータの開発時の原始的なデバッグ方法として、MT4 では Print または Comment で、変数の値に何が入っているのかを表示させる手法があります。(こういう手法を 俗に Printデバッグ と呼びます。) Print は、ログファイルにも残るので、気合をい…

MQL4で使用可能な最大文字数

プログラマにとって、使用しているプログラミング言語にどんな制約があるのかを知るのは、重要なことです。 意外なところに意外な制約があると、自作中のプログラムがおかしな挙動を示したりするので要注意なのです。 制約の分かりやすい話として、文字列変…

TrailingStop と OrderModify error 1 の微妙な関係。

とある人からの問合せで、EA作成初心者がはまりやすいワナがあったので紹介します。 TrailingStop機能の実装で、以下のようなコードを書くと、OrderModify error 1が頻発するのですが、コードを見る限りおかしな所が無いように見えます。 for(i=0;i0) && (…

インジケータを書くとき注意すべきコード。

とある人のインジケータを見て気になったのでメモ。 下記は、終値を太いピンク色のラインで描くだけのインジケータですが、forループが無駄に多く回る 以外に1箇所だけ好ましくない部分があります。 #property indicator_chart_window #property indicator_b…

ドル円とポンドルの双方からポン円のsell buyポイントを判定する。

ドルが基軸通貨である以上、ポンド円の動きは、ドル円とポンドドルのそれぞれの動きから影響を受けるとみなすことができると思います。( クロス円をメインにトレードされている人にとっては常識ですよね.. ) ポンド円をトレードする際は、ドル円もポンドドル…

リアルタイム系EAでLabel Object をクリックしたら、数字を変える。

今日は、「Label Object をクリックしたら、数字を変える」の最終回です。 昨日に引き続き、一般向けの便利ツール公開はありませんので、この種のプログラムに興味のない人は読み飛ばし推奨です..。今日も、WindowsAPI を使って何か作りたい初心者な人向けの…

リアルタイム系EAでマウスの位置とウィンドウサイズを知る。

MetaTrader5 のパブリックベータテストが10/12..つまり明日から始まる予定ですが、最新の情報ではインジケータからオブジェクトが作れるようになったらしいです。..ということは、既存のインジケータの移植の手間が大幅に省けそうなのでホッとしています。 …

EAでリアルタイム時計を作り、回線切断を警告する。

Lさんから、「Labelをクリックしたら、数字が変わるなどしたいのですがどうしたらできるのでしょうか。」との質問を頂きましたので、その説明をする前段として、今日は、「EAでリアルタイム時計を作り、回線切断を警告する。」方法を考えます。 (え…脈…

MetaTrader4のDDE機能拡張

MT4 のDDE機能では、4本値しかExcel に渡すことしか出来ません。 そこで、今日は もっと他の値をDDEで渡したい人向けにDDEの機能拡張を試みます。 ・2つのメタトレーダーから1つのエクセルに値を渡したい人 ・口座残高やボリューム、インジケータの値をエク…

VisualMode でのバックテスト中に、日付が変わる度に一時停止させる。

自作EAの動作テストを兼ねてバックテストを行う場合、VisualMode が大活躍するのですが、テストスピードの設定がいまいち使いづらい気がしています。スピード調節バーを31にするとちょっと遅めで、32にすると速すぎて、ゆっくり見てみたい時間帯を見逃して…

VT/CT系のMACD をMT4で再現する。

昨日の続きで、今日はVT/CT系のMACD をMT4で再現します。 MACD も計算式が違うのかいっっ と突っ込みを入れたくなるようなMetaTrader..。他のトレードツールから移行してくる人には、本当に混乱の元です...orz ( RSIの定義のブレ、一目均衡表のズレ、ADXの怪…

VT/CT系のADX をMT4で再現する。

以前の記事で、MetaTrader4のADXは計算式が異なる..という話を取り上げました。その時は、移動平均の計算式にバリエーションがあると分かっただけで終わっていました。( あまり興味がなくて..^^;;; ) しかし、とある人に頼まれて調べたところ、CMS社のVisual…

MetaTraderにショートカットキーを割当てるAccela.ahk(2)

今日は、AutoHotKey でMetaTraderにキーボードショートカットを割当てる際の特殊なパターンを追加で紹介します。 AutoHotKeyの使い方は、過去記事1、過去記事2を参照してください。 MT4のテンプレートをショートカットで呼び出す例。 テンプレートに保存し…

MetaTraderにキーボードショートカットを割当てるAccela.ahk

昨日紹介した、MetaTraderにキーボードショートカットを割当てるAccela.ahk について簡単に解説します。 このスクリプトは、誰でも簡単に編集して自由にショートカットキーを割当てられますので、是非活用してみてください。 …と言う訳で、もっとも単純な割…

トレンドライン/水平ライン/プライスタグにショートカットを割り当てる。

MetaTrader4 で トレンドライン を引く際に、チャートとトレンドラインボタンの間を何度もマウスを往復させるのがつらい人、水平ライン/垂直ラインを一度画面に引いてからドラッグして位置を微調整するのをいつも不便に感じている人、プライスタグはそもそも…

WindowsメッセージのIDと効能を調べる(2)。

昨日に引き続いて、WindowsメッセージのIDの調べ方を紹介します。 厳密には、Windowsメッセージの中のWM_COMMAND というメッセージのパラメータIDを調べているのですが、昨日の方法では、例えば、最新のMT4でトレンドラインを引く為のボタンを押すにはどんな…

WindowsメッセージのIDと効能を調べる。

過去2日間の記事で、「MetaTraderを制御するには、Windowsメッセージが使える」という印象を持ってもらえたかと思うのですが、今日は、どのメッセージIDで何ができるのかを調べる方法...の1つ...を紹介します。 1年以上昔に、とあるロシア人が考案した手法は…

EAからMT4 を終了させる。

3日ほど前に、SwingPointView のようなインジケータを作ると、ウィンドウの縦幅が取得できなくて困っていると書いたら、何故かCodeBase に縦幅を取得するコードがアップされていました。これを使えば、チャートサイズに依存することなく、テキストオブジェク…

参照渡しとライブラリにまつわるバグ?

公式フォーラムで、参照渡しとライブラリにまつわるバグ?について投稿があったので紹介しておきます。 参照渡しを知らない人は、「参照渡しは、とても便利かも!」を読んで頂くとして、以下に簡単な再現コードを書きました。

GetLastError()の間違った使い方…。

先日リクエストを頂いた、GetLastError()の件ですが、忘れないうちに説明しておきたいと思います。 まずは、とあるEAにあったGetLastError()の間違った使い方のサンプルから。 #include // ←エラーコードをメッセージとして表示するErrorDescription を使う…

MT4のスクロールキーを楽に押したままにする法

MQL5のヘルプは一通り読み終えました。MQL4からMQL5への移植自体は難しくなさそうですが、MQL5の能力をフルに生かすにはインジケータもEAも再設計が必要…というのが今の印象です。ベータ版が出たら、追々テストしてゆこうと思っていますが、今はまだMT4に専…

MT4のアラート(Growl)を他のパソコンで受け付ける設定。

受信側のパソコンの設定 GrowlのSecurity で、Allow network notifications にチェックを入れる。 Password Manager にパスワードを設定する。 Windows ファイアーウォールで、ポート番号23053 を登録する。 送信側のパソコンの設定 GrowlのNetworkで、Forwa…