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

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

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

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

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

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

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

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

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

スライド 1

スクリプトの 動 作 確 認 1.コード my_script_01.mq4 確 認 する 関 数 Comment,Print,Alert,MessageBox FileName=script_01.mq4 #include <WinUser32.mqh> MessageBox 用 #property

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

2. 結 果 の 画 面 テキスト(オブジェクト)を 表 示 する;OBJ_LABEL を 使 う 1.コード テキストを 表 示 する OBJ_LABEL は 表 示 位 置 の 指 定 に XY 座 標 (ピクセル); 左 上 が 原 点 を 使 う int init() ObjectCreat

スライド 1

はじめに 免責事項 本書およびサンプルプログラムに基づく行為の結果発生した障害 損失などについて 著者および出版社は一切の責任を負いません 本書に記載されている URLなどは 予告なく変更される場合があります 本書に記載されている会社名 製品名は それぞれ各社の商標および登録商標です MetaTra

1 章 : 基礎知識 MQL4 では C++ 言語で作成した DLL( ダイナミック リンク ライブラリ ) をインポートして すなわち DLL 中の関数を呼出すことで機能拡張することができます 本稿では C 言語および C++ 言語の基礎的 ( 初歩的 ) な知識のみを前提として DLL の開発方

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

AquesTalk for WinCE プログラミングガイド

AquesTalk プログラミングガイド

(C) 2011 amenbo the 3rd MQL5; 翻訳まとめ 8 つのデータ構造体 ( その 1) 翻訳のみ実施 アメンボです どうにも MQL5 は複雑 ( 怪奇 ) と言うか 全体像が掴み難く苦闘中ですが 裏を返せば 一度理解してしまうと良く出来たシステムなのかも

memo

SmartBrowser_document_build30_update.pptx

2

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

EA プロバイダーマニュアル

AquesTalk Win Manual

1

Microsoft Word - VB.doc


STARTプログラム.indd

広報しもつけp01ol

ONPRESS190


tomo_sp1

untitled

2. (297) 91 (365) (366) (371) (673) (938) (64) 85 (91) (631) (561) (302) (616) 63 (906) 68 (338) (714) (747) (169) (718) 62 (1,063) 67 (714) (169) (90

2. (1,009) 45 (368) (226) (133) (54) (260) 25 (446) 30 (774) (156) (805) (244) (652) 22 (128) (652) (157) (597) (805) (446) 30 (774) 35 (238) (581) (1

C#の基本2 ~プログラムの制御構造~

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

Microsoft Word - 田中亮太郎.doc

A p A p. 224, p B pp p. 3.

() L () 20 1

日経テレコン料金表(2016年4月)

B

73 p p.152


2

p

スラヴ_00A巻頭部分

308 ( ) p.121

広報かみす 平成28年6月15日号

.

_Print

122011pp

Microsoft Word - 映画『東京裁判』を観て.doc

9

戦後の補欠選挙

Microsoft Word - CygwinでPython.docx

CashDrawer ライブラリ API 仕様書 2014/07/09 CashDrawer ライブラリ API 仕様書 Rev / 10

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

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

Microsoft Word - 92.doc

Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac

GS1-128 の描画 DLL について (ver. 2.3) 動作環境など動作環境 WindowsXP Windows Vista Windows7 Windows8/8.1 Windows10 上記 OS について すべて日本語版を対象としております 32bit アプリケーションから呼び出される

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

intra-mart Accel Collaboration — ファイルライブラリ ユーザ操作ガイド   第3版  

POWER EGG V2.01 ユーザーズマニュアル 汎用申請編

プログラミング基礎

微分方程式 モデリングとシミュレーション

Win32API;EA にブレーク ポイントを設定する amenbo the 3rd アメンボです EA のデバッグ時に ブレーク ポイント を設定できたら良いと思ったことはありませんか? MT5 には存在する (?) 様ですが MT4 では専用機能が見つかりません

API 連携方式 外部 DLL の呼び出し宣言 外部 DLL の呼び出し宣言のサンプルコード (Microsoft Visual C#.NET の場合 ) プログラムコードの先頭で using System.Runtime.InteropServices; が必要 クラスの内部に以下のような外部 D

Brekeke PBX - Version 2.1 ARSプラグイン開発ガイド

Transcription:

New MQL4(Build 600 以降 ); 基礎 ( その 1) インディケータを表示する 2014.07.13 アメンボです New_MQL4 では MQL5 類似の OOP(Object-oriented programming) が採用されているの ですが 完全にコンパチと言うわけでは無いようです まずは定番の インディケータ から初めてみます 基礎の基礎 と言うわけで インディケータの表示 から始めることにします ただ 手を付けてみると色々と問題があり MQL5 のコードをそのまま New_MQL4 に持ってきても 動かない ことがあるようです < 本稿で使用した MQL4 コード> 単純なコードですが添付しました New MQL4 基礎 ( その1).zip (ZIP 形式で圧縮 ) 本稿は MT4;version 4.00 Build646 MetaEditor;version 5.00 Buid934 にて確認済み ----------------------------------------------------------------------------------------- 目次 : 1. On****() ハンドリング関数(MQL5 との比較 ) P1 2. インディケータを表示する P2~P6 (1)MQL5 でのコード記述例 (2)New MQL4 でのコード記述例と結果 ----------------------------------------------------------------------------------------- 1. On****() ハンドリング関数 (MQL5 との比較 ) New_MQL4 で使用可能な ハンドリング関数 を MQL5 の場合と比較しながら 使用方法を解説します 機能サホ ート New MQL4 のサホ ート範囲 確認 EA Indicator Script ハント リンク 関数 イヘ ント トリカ と MQL5 New 関数インテ ィケータスクリフ トモート 別 MQL4 使用表示実行 OnStart() OnInit() 開始 OnDeinit() 終了 OnTick() ティック マルチカレンシー モート?? OnTimer() タイマー OnTrade() order deal position OnTester() ストラテシ ー テスター OnBookEvent() 板 (DOM) 情報 OnChartEvent() 未確認??? カスタム イヘ ント OnCalculate() インテ ィケータ表示計算 本稿 簡略タイフ?? 確認作業の先は長いぞ! 従来の手続き型 関数 ( 以下 ) も使用可能です init(), start() および deinit() 1 / 6

2. インディケータを表示する以下 OnCaculate() を使ってインディケータを表示する場合の最小コードを MQL5 と New MQL4 の場合で比較します 共にMA( 移動平均線 ) を表示する場合です (1)MQL5 でのコード記述例 筆者は MT5(MQL5) を使ったことがありません 以下の内容は MT5(MQL5) 資料を読んだ机上の知識です #property indicator_chart_window 別ウイント ウに表示する場合 #property indicator_buffers 1 #property indicator_plots 1 インディケータ用バッファ ハンドル MA 計算周期 double MABuffer[]; int handle; int period=21; void OnInit() SetIndexBuffer(0,MABuffer,INDICATOR_DATA); ArraySetAsSeries(MABuffer,true); handle=ima(null,0,period,0,mode_ema,price_close); return(0); 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[] ) ---- 指標表示のための最小記述 全てのデータを表示に度に計算する場合例 int copied=copybuffer(handle,0,0,rates_total,mabuffer); ---- 次のコールのために計算済み足数を返す return(rates_total); 2 / 6

(2)New MQL4 でのコード記述例と結果 上記に示した MQL5 コードは そのままでは使えません 最大の理由は New MQL4 には CopyBuffer() 関数が無いことですが 更に ima() も若干 記載方法が異なるためです < 検討 1> コード 1; +------------------------------------------------------------------+ ind_01.mq4 amenbo 泉の森の弁財天池 +------------------------------------------------------------------+ #property copyright "amenbo" #property link " 泉の森の弁財天池 " #property version "1.00" Custom indicator #property strict #property indicator_chart_window #property indicator_buffers 1 #property indicator_plots 1 #property indicator_label1 "MA_1" #property indicator_type1 DRAW_LINE #property indicator_color1 clrred #property indicator_style1 STYLE_SOLID #property indicator_width1 2 double MABuffer[]; double handle; int period=21; int OnInit() (A) 部 SetIndexBuffer(0,MABuffer); ArraySetAsSeries(MABuffer,true); int handle=ima(null,0,period,0,mode_ema,price_close); return(init_succeeded); 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[]) (B) 部 int copied=copybuffer(handle,0,0,rates_total,mabuffer); MQL4 には CopyBuffer() が無い そこで以下の処理を実施 int limit=rates_total-prev_calculated; 3 / 6

for(int i=0;i<limit;i++) MABuffer[i]=iMA(NULL,0,period,0,MODE_EMA,PRICE_CLOSE,i); 次のコールのために計算済み足数を返す return(rates_total); +------------------------------------------------------------------+ MQL5 New MQL4 の修正内容 ; MQL5 の場合のコード記述部 ; (A) 部 SetIndexBuffer(0,MABuffer,INDICATOR_DATA); handle=ima(null,0,period,0,mode_ema,price_close); (B) 部 int copied=copybuffer(handle,0,0,rate_total,mabuffer); New MQL4 の場合に書き直した記述部 ; (A) 部 ;2 行 1 行 SetIndexBuffer(0,MABuffer); (B) 部 ;1 行 3 行 MQL4 には CopyBuffer() が無い そこで以下の処理を実施 int limit=rates_total-prev_calculated; for(int i=0;i<limit;i++) MABuffer[i]=iMA(NULL,0,period,0,MODE_EMA,PRICE_CLOSE,i); コンパイル結果 ; 表示結果 ; エラー ( エキスパート 動作履歴 ); ありません です 4 / 6

< 検討 2> コード 2; コード 1 をホンのチョット変更してみます for(int i=0;i<limit;i++) for(int i=0;i<=limit;i++) MABuffer[i]=iMA(NULL,0,period,0,MODE_EMA,PRICE_CLOSE,i); 55 行目 コンパイル結果 ; 表示結果 ; に見えますが! 実は! エラー ( エキスパート 動作履歴 ); NG です 下記の エキスパート タブ をみて下さい array out of range が発生しています これは最後の i=limit で発生しています でも なぜ表示するの? 実は! ( コードの 55 行目 の MABuffer[i] で発生している ) 5 / 6

< 検討 3> コード 3; コード 1 を またチョット変更してみます for(int i=0;i<limit;i++) for(int i=0;i<=limit;i++) NG なんと! 最後の i=limit で array out of range が発生 for(int i=limit;i>0;i--) MABuffer[i]=iMA(NULL,0,period,0,MODE_EMA,PRICE_CLOSE,i); 56 行目 コンパイル結果 ; 表示結果 ; NG です エラー ( エキスパート 動作履歴 ); NG です 下記の エキスパート タブ をみて下さい ポイント ; array out of range が発生したところで 実行がストップします コード 2 では 実行の最後に array out of range になったので それ以前の描画は実行されたわけです 以上 6 / 6