1. イベント ハンドリング関数とトリガ 一覧 (MQL5 との比較 ) On****() 形式のハンドリング関数のこと (C) 2011 amenbo the 3rd New_MQL4 で使用可能な ハンドリング関数 を MQL5 と比較しながら 使用方法を解説します 機能サホ ート New MQ

Similar documents
(C) 2011 amenbo the 3rd New MQL4(Build 600 以降 ); 基礎 ( その 2)OnTimer() を使う アメンボです New_MQL4 の特徴とはなんでしょう? 極論を言うと MQL5 から受け継いだ OOP つまり On***() 関

(C) 2011 amenbo the 3rd New MQL4(Build 600 以降 ); 基礎 ( その 1) インディケータを表示する アメンボです New_MQL4 では MQL5 類似の OOP(Object-oriented programming) が採用され

1. On****() ハンドリング関数(MQL5 との比較 ) New_MQL4 で使用可能な ハンドリング関数 を MQL5 と比較しながら 使用方法を解説します 機能サホ ート New MQL4 のサホ ート範囲 確認 EA Indicator Script ハント リンク 関数 イヘ ント

1. イベント ハンドリング関数とトリガ 一覧 ( 現状の理解 ) 表 1; 現時点での理解範囲で 全体と一応解説済みのものを整理してみます EA;ExpertAdviser Indicator Script ハント リンク 関数イヘ ント トリカ とモート 別関数使用 OrderSend 関数内発

(C) 2011 amenbo the 3rd MQL5; 翻訳まとめ OnBookEvent() の使い方 他 ( その 1) 翻訳のみ実施 本稿の翻訳対象は OnInit() OnDeinit() OnTimer() OnBookEvent() 4 関数です 注意 ; 本資

目次 : 1. 本稿の概要 P02 (1) 本稿で実現する システム図 (2) 本稿の記載範囲 (3) 添付プログラムの組合せと基本構成 2. 添付プログラムによる動作例 P05 (1) セット1の使い方 (2) セット2の使い方 3. 添付プログラムのコード詳細 P19 (1) セット1 (2)

SmartBrowser_document_build30_update.pptx

(C) 2011 amenbo the 3rd 擬似トレード提案 ( その 1) MT4/5 のストレテジー テスターのバックテスト機能は非常に強力ですが 幾つか不満があ ります その一つは 今表示されているリアルチャート上で EA を試したらどうなるかが良 く判らないことです アメンボが以前気に入

[ ニュース ] タブ内容をチャート上に表示する amenbo the 3rd アメンボです 本稿では 前稿 ( ) で投稿した ListView_f.dll の応用を報告します [ ニュース ] タブの内容を読取って チャート上に表示させることを考

2.Win32API によるファイル アクセス 本稿では 読み書きするデータは テキスト ( 文字列 ) との前提で解説します ( 絶対パス指定による任意の場所のファイル アクセスを目指します ) (1) 疑問? user 32.dll はどこにある? と思った方 アメンボ以外にいませんか?? そう

Javaプログラムの実行手順

(C) 2011 amenbo the 3rd MQL5; 翻訳まとめ 8つのデータ構造体 ( その2) 翻訳のみ実施 副題 ;OrderSend() と OrderSendAsync() アメンボです 今回は その2 なのですが MQL5 では MQL4 に比較すると 個々の

Jungo LTD. COPYRIGHT Copyright (c) Jungo Ltd. All Rights Reserved. Jungo Ltd. POB8493 Netanya Zip Israel Phone (USA) (W

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

Microsoft Word - Writing Windows Installer's DLL.doc

プログラミング実習I

スライド 1

編集する ファイルを開く マイクロデータの設定を行うファイルまたはファイルを開きます 開かれたファイルは編集画面に表示されて ブラウザ表示した時のプレビューも同時に表示されます HTML ファイルの選択 編集する ファイルを開くためにメインメニューから ファイル 開く を選びます ファイル選択ダイア

Android Layout SDK プログラミング マニュアル

/*Source.cpp*/ #include<stdio.h> //printf はここでインクルードして初めて使えるようになる // ここで関数 average を定義 3 つの整数の平均値を返す double 型の関数です double average(int a,int b,int c){

MMC Unity講座

Microsoft Word - VBA基礎(6).docx

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版  

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版   None

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

Microsoft Word Proself-guide4STD+Prof.docx

キリしていて メニューのボタンも大きくなっているので マウス操作はもちろん タッチ操作でも使いやすくなっているのが特長です アドレスバー画面上部にあるアドレスバーは インターネット検索も兼ねています ここにキーワードを直接入力して検索を実行できます 現在表示されているタブの右横にある + をクリック

yukarik

目次 第 1 章はじめに 取扱いについて 記載内容について... 6 第 2 章基本操作 Excel Online を開く ファイル ( ブック ) を作成する ファイル ( ブック ) を開く..

生存確認調査ツール

Adobe ユーザー申請システム Version 1.0 for 北海道大学利用者向け取扱説明書 第 1.1 版 平成 26 年 11 月 06 日

どこでも写真管理 Plus (ios 版 ) 操作手順書 ( 黒板作成 連携ツール使用時 ) EX-TREND 武蔵の写真管理 黒板作成 連携ツール どこでも写真管理 Plus でデータを連携して 電子小黒板機能付き工事写真を撮影する手順を解説します 解説内容がオプションプログラムの説明である場合が

Microsoft PowerPoint - prog04.ppt

スクールCOBOL2002

プログラミング基礎I(再)

PC-FAX.xls

eYACHO 管理者ガイド

目次 1. ログイン 報告 ユーザ 病院 使用場所 通知先 材料データベース... 7 ご注意ください...12 JAN コードから材料データを返します マネージャーの情報変更 報告 CS

バージョンアップにおける変更点 バージョンアップにおける変更点 07 年 月 7 日に実施したバージョンアップにおける変更点は次の通りです ) 最新 OS/ ブラウザへの対応 次の OS とブラウザの組み合わせが動作環境となりました [Windows 7 SP/8./0] Microsoft Edg

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String

CubePDF ユーザーズマニュアル

intra-mart Accel Platform — 招待機能プログラミングガイド   初版  

掲示板の閲覧 掲示板の閲覧 登録権または参照権のある掲示板グループの掲示版を閲覧することができます 各利用者の権限は 管理者によって設定されます 掲示板を閲覧する 1 掲示板画面を表示し 閲覧する掲示が含まれている掲示板グループ 掲示板の順にクリックします 掲示板画面の表示方法 ポータル画面の画面説

クライアント証明書インストールマニュアル

第 32 回文書ファイルの保存に関する Word の裏技 WORD2013 の裏技 第 32 回文書ファイルの保存に関する Word の裏技 1. 新しく作成した文書に名前を付けて保存する方法 作成した文書をファイルとして保存しておけば 後から何度でも利用できる 文書をはじめて保存する場合は 文書に

9. システム設定 9-1 ネットワーク設定 itmはインターネットを経由して遠隔地から操作を行ったり 異常が発生したときに電子メールで連絡を受け取ることが可能です これらの機能を利用するにはiTM 本体のネットワーク設定が必要になります 設定の手順を説明します 1. メニューリスト画面のシステム設


VPS マニュアル p. 1

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

マイクロソフト IT アカデミー E ラーニングセントラル簡単マニュアル ( 管理者用 ) 2014 年 11 月

目次 1 はじめに 必要動作環境 マニュアルの見方 利用規約 システムの操作説明 通常の利用 利用者登録の方法 ログインの方法 案件の検索方法

Excel2010基礎

テキストファイルの入出力1

<4D F736F F D2093C C6791D D F82C68C6791D D834F82C589D282AE95FB96402E646F63>

内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一

セットアップガイド

サイボウズ Office 10「個人フォルダ」

[ 操作履歴 ] タブ内容をリアルタイムでモニターする amenbo the 3rd アメンボです 本稿では MT4 システム操作履歴ログ を監視する一手法を紹介します ( [ 操作履歴 ] タブの内容をリアルタイムで読取ることで監視します ) 既に気が付いている諸兄

Microsoft PowerPoint - 09.pptx

はじめに ウイルスに感染させるための罠が仕掛けられた悪意のある文書ファイルは これまでにも Office の脆弱性の悪用や マクロ機能を悪用する手口のものがありました 昨今 それらとは異なる新たな攻撃手口を使ったものが出てきています 本資料は 新たな攻撃手口について紹介し 注意点を説明するものです

1. コミュまっぷ とは? コミュまっぷは グループでドライブする際 お互いのカーナビゲーション ( ナビ ) の画面に 仲間の位置を確認しながら ドライブすることができるアプリです スマホ向けのアプリもありますので スマホにインストールし ご利用いただければ 車でも徒歩でもシームレスに位置の共有が

Eschartマニュアル

Microsoft Word - 浄化槽管理システム_Ver3-操作マニュアル

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

どこでも写真管理 Plus (Android 版 ) 操作手順書 ( 黒板作成 連携ツール使用時 ) EX-TREND 武蔵の写真管理 黒板作成 連携ツール どこでも写真管理 Plus でデータを連携して 電子小黒板機能付き工事写真を撮影する手順を解説します 解説内容がオプションプログラムの説明であ

Mapmakerfor の手順下絵を準備 作者の設定した大きさで作成する場合 下絵にする地図を挿入 トリミングと大きさの調整 大きさを調整した画像を保存 下絵を背景に設定 作成画面の大きさを調整 1 自分で用意した下絵を背景にする場合 下絵を背景に設定 作成画面の大きさを調整 画像が大きい場合シート

目次. ご利用上の注意. アプリをインストールする. アプリを起動する. アプリの初期設定を行う. アプリのログインパスワードを変更する 6. アプリのメニューを操作する 7. ステータスを送信する 8. 定期位置通知間隔を変更する 9. 随時検索をする 0. メッセージ連絡をする. メッセージの連

1. 開発ツールの概要 1.1 OSS の開発ツール本書では OSS( オープンソースソフトウェア ) の開発ツールを使用します 一般に OSS は営利企業ではない特定のグループが開発するソフトウェアで ソースコードが公開されており無償で使用できます OSS は誰でも開発に参加できますが 大規模な

目 次 1. はじめに ソフトの起動と終了 環境設定 発助 SMS ファイルの操作 電話番号設定 運用条件 回線情報 SMS 送信の開始と停止 ファイル出力... 16

Microsoft PowerPoint - CproNt02.ppt [互換モード]

4. ファイルアップロード機能 使い方 ファイルをドラッグ & ドロップ した状態 図 4-1: ファイルアップロード画面 ( 例 ) 1. 送信するファイルをドラッグ & ドロップしてください 送信するファイルの右のエリアをマウスでクリックする事により 従来のエクスプローラー形式のアップロードも可

スライド 1

Transcription:

New MQL4(Build 600 以降 ); 基礎 ( その5)OnChartEvent()[2/2] 2014.10.02 ( EventChartCutom() と組み合わせて使う ) アメンボです 本稿は OnChartEvent() の内の チョット特殊なカスタム イベントの使い方です 前回述べたように イベントは大きく下記の 2 種類 に分類されており 1 MQL5( システム ) 備え付けのイベント 2 ユーザーが任意に設定するカスタム イベント本稿は 2 の検証結果の解説です 調査当初 とにかく資料が少ない ( あっても 何のこっちゃ?) と言う状況でした しかしながら 判ってしまえば なんてことはなく コロンブスの卵 と言うところです さてと カスタム イベントで NewMQL4 で新規に使えるようになった主だった イベント ハンドリング関数 の解説は終わってしまいます ( 小物は残りますが ) ところで 既にご存知のように New_MT4 は次から次へと目まぐるしくバージョンアップしており この記事を書いてる最中に ( 英語版 ) 最新バージョンは Build711 になったとの ニュースを読みました ( どこまで行くんでしょう?) どうせなら Old_MQL4(MT4) の機能 関数は極力そののままで 且つ MQL5(MT5) の機能 関数も全て使える のが 個人的にはうれしいのですが!( でも 入門書が無いのが悩ましい!) < 本稿で使用した MQL4 コード> 使用コード添付 ; new_mql4_2014_10_01.zip ;New MQL4 ChartEvent()[2/2] (ZIP 形式圧縮 ) 本稿は MT4;version 4.00 Build670 MetaEditor;version 5.00 Buid966 にて確認済み ----------------------------------------------------------------------------------- 目次 : 1. イベント ハンドリング関数とトリガ 一覧 (MQL5 との比較 ) P2 2.Chart Event の種類 (OnChartEvent() が呼出されるイベント ) P2 3. 関数書式と引数 (1)OnChartEvent(); 再確認 P3 (2)EventChartCustom() 関数 P3 4.EventChartCustom() の使い方 (1) 予備知識 chart ID について P4 (2) 基本動作の概念図 P5 5. 実例 ; 他チャート( 為替ペア ) の最新 Open 値 を監視する (1) 本稿での実現仕様 P6 (2) 送信側コード ( インディケータ ) P7 (3) 受信側コード (EA) P9 (4) 実行結果 P10 ----------------------------------------------------------------------------------- 1/10

1. イベント ハンドリング関数とトリガ 一覧 (MQL5 との比較 ) On****() 形式のハンドリング関数のこと (C) 2011 amenbo the 3rd New_MQL4 で使用可能な ハンドリング関数 を MQL5 と比較しながら 使用方法を解説します 機能サホ ート New MQL4 のサホ ート範囲 確認 EA Indicator Script ハント リンク 関数 イヘ ント トリカ と MQL5 New 関数インテ ィケータスクリフ トモート 別 MQL4 使用表示実行 OnStart() OnInit() 開始 OnDeinit() 終了 OnTick() ティック マルチカレンシー モート?? OnTimer() タイマー 済 OnTrade() order deal position OnTradeTransaction() OnTester() ストラテシ ー テスター 済 OnBookEvent() 板 (DOM) 情報 OnChartEvent() 10 種類 済 カスタム イヘ ント 本稿 OnCalculate() インテ ィケータ表示計算 済 簡略タイフ? 2.Chart Event の種類 (OnChartEvent() が呼出されるイベント ) OnChartEvent() を呼び出すイベントの内 システム備え付けのものは 10 種類 あります < イベント ;ID とパラメータ > イヘ ント ( 割込 ) 発生 ID 概要 1 キーが押された CHARTEVENT_KEYDOWN どのキーが押されたか 返し値 lparam dparama sparam キー コート 2 マウスが動いた CHARTEVENT_MOUSE_MOVE マウスの動きをフォロー X 座標 Y 座標 3 ク ラフィカル オフ シ ェクトの作成 4 ク ラフィカル オフ シ ェクトの変更 5 ク ラフィカル オフ シ ェクトの削除 6 チャート上でマウスがクリックされた 7 ク ラフィカル オフ シ ェクト上でマウス クリックされた 8 ク ラフィカル オフ シ ェクトがマウスでト ラック された CHARTEVENT_OBJECT_CREATE CHARTEVENT_OBJECT_CHANGE CHARTEVENT_OBJECT_DELETE ヒ ット マスク値ホ タン検出用 作成されたオフ シ ェクト名 変更されたオフ シ ェクト名 削除されたオフ シ ェクト名 CHARTEVENT_CLICK クリックした座標検出 X 座標 Y 座標 CHARTEVENT_OBJECT_CLICK オフ シ ャクトがあるチャート上の座標検出 X 座標 Y 座標 CHARTEVENT_OBJECT_DRAG クリックされたオフ シ ェクト名 ト ラック されたオフ シ ェクト名 9 オフ シ ェクトのラヘ ルがラヘ ル編集済み CHARTEVENT_OBJECT_ENDEDIT 編集されたオフ シ ェクト名 10 チャート変更 CHARTEVENT_CHART_CHANGE 表示チャートの変更 11 ユーサ ー定義イヘ ントが発生した CHARTEVENT_CUSOM+N ( カスタム イベント ) EventChartCustom() が実行された時に起動する 1 1 1 1;EventChartCustom() によって設定した値 long,double,string が 1 個づつ渡される N=0 の場合は ID= CHARTEVENT_CUSOM N=LastNo の場合は ID= CHARTEVENT_CUSOM_LAST 2/10

3. 関数書式と引数 (1)OnChartEvent(); 再確認 (C) 2011 amenbo the 3rd void OnChartEvent( const int id, イベント ID( 識別子 ) const long& lparam, イベント パラメータ (long タイプ ) const double& dparama, イベント パラメータ (double タイプ ) const string& sparam イベント パラメータ (string タイプ ) ) id により どの様なイベントが発生したかを判別することが可能であり また パラメータ ;lparam dparam sparam により更に詳細な情報を得ることが出来る 例えば id によりマウスがチャート上で クリック されたことを判別し パラメータ により クリックされたチャート上の 位置 を知る事が出来る (2)EventChartCustom() 関数 bool EventChartCustom( long chart_id, イベントを受取る側のチャート ID を指定する ushort custom_event_id, ユーザー設定カスタム イベントの ID( 識別子 ) long lparam, イベント パラメータ (long タイプ ) double dparam, イベント パラメータ (double タイプ ) string sparam イベント パラメータ (string タイプ ) ); パラメータ パラメータ 指定内容 chart_id [in] custom_event_id [in] lparam [in] dparam [in] sparam [in] カスタム イベントの受取側チャート ID を指定する ; 0 とすると現在のチャート つまり EventChartCustom を含む mql4 コードが実行されているチャートが送信先 ( 受信側 ) になります 通常は ChartFirst() や ChartNext() 等で取得した 別チャートのチャート ID( 多分 ハンドル値 ) を指定することで カスタム イベントを別のチャートに送信し そのチャートに設定されたEAやインディケータ上に OnChartEvent を発生させることが可能となります ユーザー設定カスタム イベントの ID で 追加で設定したときに 特に指定しなければ自動的に CHARTEVENT_CUSTOM は プラス1 される この ID は CHARTEVENT_CUSTOM から CHARTEVENT_CUSTOM_LAST までの 65536 通りが可能 受信先の OnChartEvent() の const long& lparam に渡す イベント パラメータ (long タイプ ) を ここで設定する 受信先の OnChartEvent() の const double& dparama に渡す イベント パラメータ (double タイプ ) を ここで設定する 受信先の OnChartEvent() の const string& sparam に渡す イベント パラメータ (string タイプ ) を ここで設定する もし string が 63 キャラクター以上の場合は切り詰められる 返し値 ; 成功すると true を 失敗すると false を返す エラーコードは GetLastError() で入手する ノート ; OnChartEvent() コードが使えるのは Expert Advisor かインディケータ 3/10

4.EventChartCustom() の使い方 (C) 2011 amenbo the 3rd カスタム イベントは 解析に非常に手間取りました 英語版 MQL5 にもロクな資料 ( と言うか 判りやすい資料 ) が 見当たらないのです ただ 判ってしまえば 実に簡単な構造 ( 仕掛け ) です ( コロンブスの卵 ですね ) 以下 なるべく判りやすく!? 解説したつもりです (1) 予備知識 chart ID について NewMT4 では MT5 と類似の Chart ID( チャート ID) と言う概念があります < 概念図 > Chart ID =*** Chart ID =+++ Chart ID =### NewMT4 では チャートを同時に 100 枚 まで開くことができます このチャートを NewMQL4 では Chart ID ( 多分ハンドルです ) によって管理 識別します Chart ID の値(long 型 ) は 開かれた時期によって 一定の規則 に従って決定されますが 筆者にはその規則が良く判りません ただし 一番最初に開かれたチャートが一番若い番号に 最後に開かれたチャートが一番大きな番号になります ( チャートと閉じてしまうと その順番はリセットされるようです ) Chart ID と メイン ウインドウ サブ ウインドウ の概念は異なります 本稿で使用した Chart 関係の関数 (NewMQL4) を下記に記載しておきます 型 書式機能 ( 内容 ) long ChartID() long ChartFirst() long ChartNext( long chart_id ); Chart ID string ChartSymbol( long chart_id Chart ID ); 現チャートの ID( 多分 ハンドル値だと思う ) を返す 最初に開いたチャートの ID を返す long chart_id で指定したチャートの 次に開かれたチャートの ID を返す long chart_id で指定したチャートの Symbol( 為替ペア名 ) を返す chart_id=0 とすると コードを実行した現チャートの Symbol( 為替ペア名 ) を返してくる 4/10

(2) 基本動作の概念図 EventChartCustom(chart_ID,,,,) が実行されると このイベントがトリガとなり chart_id で指定するチャート上のEAかインディケータの OnChartEvent() が実行されます ( ゆえに チャート イベントとして分類している様です ) < イメージ図 > 例えばチャート 1<mql4 コード 1> EventChartCustom(chart_ID=999,event_id,lparam,dparam,sparam); 例えばチャート 2(chart_ID=999)<mql4 コード 2> OnChartEvent(event_id,lparam,dparam,sparam) 呼出されたときの処理を記述 1EventChartCustom() の行が実行されると これをトリガとして 2chart_ID で指定されたチャート上の OnChartEvent() コードが実行されます コード 1 と コード 2 は同じチャート上でも あるいは 別々のチャート上に設定されていても構いません 青書 のパラメータ値がそのまま引き渡されます chart_id で引渡し先のチャートを指定するのがポイントです 発信側と受信側の組合せ ; 発信側 EventChartCustom() 受信側 OnChartEvent() 備考 1 インディケータ EA 動作確認済み 2 インディケータインディケータ動作確認済み 3 EA インディケータ未確認 4 EA EA 未確認 3 4 は 諸兄にて確認してみてください ( 注 ) バックテストで動作するのかは 1~4 全てで未確認です! 5/10

5. 実例 ; 他チャート( 為替ペア ) の最新 Open 値 を監視する 他チャートの Open 値 などは iopen() を使えば判るので ちっとも面白くないのですが 一例として採用しました ( 実を言うと 面白い例を思いつかなかっただけ なのですが ) (1) 本稿での実現仕様 1 送信側 ; [AUDJPYFXF,H4] チャート上に EventChartCustom() を含むコード を記載し chart_id を EURJPYFXF,Daily に設定する 2 受信側 ; [EURJPYFXF,Daily] チャート上に OnChartEvent() を含むコード を設定 if(event_id>=chartevent_custom) でカスタム イベントを検出する <イメージ図 ( 例 )> [USDJPYFXF,H1] チャート [EURJPYFXF,Daily] チャート ;chart_id OnChartEvent(event_id,lparam,dparam,sparam) 他 為替ペア の監視処理など [AUDJPYFXF,H4] チャート EventChartCustom(chart_ID,,,price_current,); [GBPUSDFXF,Dily] チャート チャートは 4 つ 開いています 開いた順番は [USDJPYFXF] [EURJPYFXF] [AUDJPYFXF] [GBPUSDFXF] 6/10

(2) 送信側コード ( インディケータ ) 本稿では [AUDJPYFXF,H4] チャート上に設定します ( 本当はどこでも良い ) また動作確認用に 余分な Print() と PlaySound() を入れてあります +------------------------------------------------------------------+ EventChart_Send_02.mq4 amenbo 泉の森の弁財天池 +------------------------------------------------------------------+ #property copyright "amenbo" #property link " 泉の森の弁財天池 " #property version "1.00" #property strict #property indicator_chart_window input ushort custom_event_id=0; event id input string target="eurjpyfxf"; int End; string target="usdjpyfxf"; string target="eurjpyfxf"; long chart_id_array[50]; string chart_pare_name[50]; +------------------------------------------------------------------+ Custom indicator initialization function +------------------------------------------------------------------+ int OnInit() --- indicator buffers mapping --- return(init_succeeded); +------------------------------------------------------------------+ Custom indicator iteration function +------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) 本来はここにインディケータ本体を書く ( 本稿ではカスタム イベントの例のみ記載 ) ------------------------------------------ 実施手順 ; 1. 全チャートの ChartID を取得する 2.ChartID と ChartSymbol の対応をつける 3. 特定の ChartSymbol に EventChartCustom を送信する ------------------------------------------ 7/10

<1. 全チャートの ChartID を取得する> <2.ChartID と ChartSymbol の対応をつける> chart_id_array[0]=chartfirst(); chart_pare_name[0]=chartsymbol(chart_id_array[0]); Print("[",chart_pare_name[0],"] の ChartID は ",chart_id_array[0]," です"); for(int i=1;i<10;i++) chart_id_array[i]=chartnext(chart_id_array[i-1]); if(chart_id_array[i]==-1) End=i; break; chart_pare_name[i]=chartsymbol(chart_id_array[i]); Print("[",chart_pare_name[i],"] の ChartID は ",chart_id_array[i]," です"); <3. 特定の ChartSymbol に EventChartCustom を送信する> データの準備 あまり面白くないけど Open 値 を送ってみる double price_current=open[0]; for(int j=0;j<end;j++) if(chart_pare_name[j]==target) Print(chart_pare_name[j]," を見つけた!"); EventChartCustom(chart_id_array[j],(ushort)(custom_event_id+1),(long)_Period,price_current, _Symbol+" から発信 :"); Print(_Symbol,": カスタム イベント発信しました "); PlaySound("tick"); break; Print(_Symbol,": まだ チャートが見つからない "); --- return value of prev_calculated for next call return(rates_total); +------------------------------------------------------------------+ 8/10

(3) 受信側コード (EA) 本稿では [EURJPYFXF,Daily] チャート上に設定します 送信側で string target="eurjpyfxf"; を書換えれば 自由に設定できる また動作確認用に 余分な Print() と PlaySound() を入れてあります +------------------------------------------------------------------+ EventChart_Receive_01.mq4 amenbo 泉の森の弁財天池 +------------------------------------------------------------------+ #property copyright "amenbo" #property link " 泉の森の弁財天池 " #property version "1.00" #property strict +------------------------------------------------------------------+ Expert initialization function +------------------------------------------------------------------+ int OnInit() --- --- return(init_succeeded); +------------------------------------------------------------------+ Expert deinitialization function +------------------------------------------------------------------+ void OnDeinit(const int reason) --- (C) 2011 amenbo the 3rd +------------------------------------------------------------------+ Expert tick function +------------------------------------------------------------------+ void OnTick() --- ここには通常動かすEAの本体を書く +------------------------------------------------------------------+ ChartEvent function +------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) --- if(id>=chartevent_custom) Print(_Symbol,": カスタム イベント受信!"); Print(TimeToString(TimeCurrent(),TIME_SECONDS)," -> id=", id-chartevent_custom,": ",sparam," ", EnumToString((ENUM_TIMEFRAMES)lparam)," price=",doubletostring(dparam,4)); /* 9/10

ここに 他の為替ペア チャートからの データ ( 例えば価格 ) を参照 利用する本体コードを記述する */ Sleep(1000); PlaySound("alert2"); Print(_Symbol,": カスタム イベントの受信は無し "); +------------------------------------------------------------------+ (4) 実行結果 とりあえず どのように動作しているかの確認用です 多少 PlaySound() 音がうるさいことはご容赦! 諸兄にて 何か面白い使い方を考えて 発表してください! 以上 10/10