プリプロセッサとは、プログラムを動かす前にデータ入力やデータ整形などの準備的な処理の事です。
#property(共通)
#propertyとは、プログラムの為のプロパティ(属性)をパラメーターで指定する事が出来ます。
これはカスタムインジケータの外部設定にも使われます。
インクルードファイルに記載されたプロパティは完全に無視されますので、メインのmq4ファイルで指定する必要があります。
1 2 3 4 5 6 7 8 9 |
#property strict //厳格なコンパイルモード用の宣言 #property icon "\Images\dango.ico" //ex4プログラムのアイコン使用する画像ファイルへのパスを指定 #property link "https://zyunafx.com/" //作成者のwebサイトへのリンクを記載 #property copyright "Copyright 2022, 潤奈FX" //作成者(著作者)の名前を記載 #property version "1.00" //プログラムのバージョンを記載 #property description "ここにプログラムの説明文を記載します" #property description "説明文2" #property description "説明文3" #property stacksize 1024 //スタックサイズをバイト単位で指定 |
strict
#property strictを宣言する事で厳格(strict)モードという設定になります。
そうする事でコンパイル時に厳格にソースコードがチェックされて、細かいエラーについて警告やエラーが出るようになります。
警告が出る書き方
1 2 3 4 5 6 7 8 9 |
#property strict //厳格なコンパイルモード用の宣言 void OnTick(){ double a; int b; b=a+10; Print("b="+b); } |
コンパイルをすると警告が3件表示されました。
- possible use of uninitialized variable ‘a’
これは、初期化されていない変数「a」を使用していますという意味です。
a+0.1という計算をしていますが、aに値が入っているか宣言していないですが、大丈夫ですか?という警告です。 - possible loss of data due to type conversion
これは、型変換によるデータ損失の可能性がありますという意味です。
変数aは小数点数型なので、整数型の変数bに計算して代入すると小数点が消えちゃうよ?という警告です。 - implicit conversion from ‘number’ to ‘string’
これは、数値から文字列への変換されますよという意味です。
文字列型である “b=” と「+」で変数bの値を連結させようとしているので、連結するなら文字列型に変換しちゃうよ?という警告です。
警告を出さない書き方
1 2 3 4 5 6 7 8 9 10 |
#property strict void OnTick(){ double a=0.0; //① int b=0; b=(int)a+10; //② Print("b="+(string)b); //③ //もしくはIntegerToString(b)で文字列に変換も出来ます } |
①変数a,bを宣言する際に、初期値をセットします。
②(int)を付ける事で整数型に変換する宣言となるので警告はなくなります。
※小数点以下を切り捨てて問題ない場合
③(string)を付ける事で文字列型に変換する宣言となるので警告はなくなります。
これは簡易的な方法で、IntegerToString関数のような型を変換する関数もあります。
他にも厳密モードで出る警告・エラーはありますので警告文を読み解いてみて下さい。
icon
ex4プログラムのアイコンとして使用する画像ファイルへのパスを指定します。
※アイコンファイルはICO形式である必要があります。
1 2 3 |
<画像の保存場所 (MQL4→Imagesファイル)の場合> <画像ファイル名が「dango」の場合> #property icon "\Images\dango.ico" |
画像の保存場所はTerminal ≫ ターミナルディレクトリパス ≫ MAL4 ≫ Imagesにした場合です。
link
作成者や会社のWebサイトのリンクを記載します。
1 |
#property link "https://zyunafx.com/" |
copyright
作成者(著作者)や会社名の名前を記載します。
1 |
#property copyright "Copyright 2022, 潤奈FX" |
version
プログラムのバージョンを記載します。
(最大31文字)
1 |
#property version "1.00" |
description
プログラムの簡単な説明文を記載します。
テキスト1行を記述して、複数行で記述する事も出来ます。
説明文の長さは改行を含めて合計511文字が上限です。
1 2 3 |
#property description "ここにプログラムの説明文を記載します" #property description "説明文2" #property description "説明文3" |
stacksize
プログラムのスタックサイズを指定します。
スクリプトまたはEAを起動する際には8MB以上のスタックが割り当てられます。
カスタムインジケーターの場合は、スタックサイズは常に1MBに固定されています。
ストラテジーテスターで起動する際には、常に16MBのスタックが割り当てられます。
library
start関数が割り当てられていないexport修飾子のついた関数は、他のMQL4プログラムでインポートする事が出来ます。
#property(インジケーター用)
indicator_chart_window
カスタムインジケーターをチャートウインドウに表示させます。
indicator_separate_window
カスタムインジケーターをサブウインドウに表示させます。
indicator_height
インジケーターサブウインドウの高さをピクセル単位で固定します。
indicator_buffers
インジケーター計算のバッファ数(1~512)
indicator_minimum
インジケーターサブウインドウの下限値の設定。
indicator_maximum
インジケーターサブウインドウの上限値の設定。
indicator_labelN
データウインドウに表示されるN番目のインジケーターラベルの設定。
indicator_colorN
N番目のインジケーターの色設定。
indicator_widthN
N番目のインジケーターの太さ設定。
indicator_styleN
N番目のインジケーターの線種設定。
indicator_typeN
N番目のインジケーターの描画スタイル設定。
indicator_levelN
サブウインドウにN番目のインジケーターレベル(水平線)を表示設定。
indicator_levelcolor
インジケーターレベル(水平線)の色設定。
(個別設定は不可)
indicator_levelwidth
インジケーターレベル(水平線)の線の太さ設定。
(個別設定は不可)
indicator_levelstyle
インジケーターレベル(水平線)の線種設定。
(個別設定は不可)
#property(スクリプト用)
script_show_confirm
スクリプトを実行する前に確認ウインドウを表示する。
script_show_inputs
スクリプトを実行する前にプロパティウインドウを表示し、確認ウインドウを無効にする。
コメント