潤奈流EA講座④(オリジナル関数とは,AdjustPoint関数,AdjustSlippage関数)

EA講座

どうも潤奈です( ・Д・)
今回からオリジナル関数の解説に入りますので頑張りましょう!

では参考コードEAを元に解説して行きたいと思います!

え?それどこにあるの?という方は次の記事から読み進めて下さい。
潤奈流EA講座①(参考コードと構成説明)
それ以降の記事はこちら。
潤奈流EA講座②(プロパティとパラメーター)
潤奈流EA講座③(OnInit,OnTick,OnDeinit関数)

スポンサーリンク

オリジナル関数とは

その前にまず関数について簡単に説明したいと思います。

関数とは、一定の処理内容をひとまとめにしたものです。

関数の構成は以下のように記述して定義されています
(例)オリジナルKansuu関数

日本語訳にすると、
//オリジナル関数
戻り値の型 関数名(引数の型 引数名1、引数の型 引数名2){
変数の型 変数に引数名1と引数名2を足した数を代入。
指定した変数値を戻す。

変数Xを整数で宣言し、0を代入。
//関数の呼び出し
変数Xに関数名(引数1、引数2)の戻り値を代入。
となります。

いろんな言葉が出て来ましたが、一つずつ理解して行きましょう!

戻り値の型:int型(Kansuu関数は整数を入れる箱です)と宣言しています。
引数名1と2:これを使って計算して下さいと引き渡された数を入れている整数の箱です(変数)。
関数の呼び出し時に引数に1,2を指定しているので、A=1、B=2が引き渡された状態で処理が開始されます。
よって、変数ABには1+2の計算結果3が代入されます。
最後にreturnで計算結果を呼び出された所へ戻します。
つまり最終的に変数Xに計算結果3が代入されます。

以上が処理の流れになります。
通常プログラムは上から下に処理して行きますが、関数を使うとその処理へ飛んで行きますので何処に入力していても大丈夫です。

ではこれを実用的に考えると例えば、「注文する」「手仕舞いする」「トレンド判断」「レンジ判断」などのプログラムを作っておけばあとは組み合わせるだけでEAが完成します。

そしてその関数は自由に作成する事が出来るので、自分のオリジナル関数として作成しいろんな組み合わせを試す事が出来るようになります。

ここからは参考コードに記述しているオリジナル関数の解説をして行きたいと思います( ・Д・)

AdjustPoint関数

※当初の参考コードではポジション調整と間違えて記述していました、正しくはポイント調整です。

これはdouble(小数点数)のAdjustPoint関数を作成します。
AdjustPointの( )内にはこの関数で使用する引数(変数)を宣言します。
string(型)は文字列型で、Currencyという文字が入る箱を用意するという事です。
このポイント調整関数は前述のOnInit内で「Pips=AdjustPoint(_Symbol);」と呼び出されており、これはAdjustPoint関数に_Symbol(通貨ペア名)をCurrency変数に代入して{ }内を計算し、returnで返った値をPipsに代入するという流れになります。
ではその{ }内ですが、
・MarketInfo関数で対象通貨ペアの小数点以下桁数をSymbolDigits変数に代入します。
 頭に(int)が付いていますが、これは取得した値の型を整数(int)に変換してから、SymbolDigits変数に代入しないと、型が違いますよ!って注意がコンパイル時に発生するので、その対策になります。
・次にCalculatedPoint変数を小数点数で宣言して、0.0値を代入しておきます。
・if関数は( )条件に当てはまったら{ }内を処理する関数です。改行していますが、else if()が一つの意味で、if(最初の条件){ 最初の条件と合致したら処理 }else if(最初の条件でなければこの条件){ 次の条件と合致したら処理 }という意味になります。
今回のプログラム内容は、if(SymbolDigtisが2か3であれば){CalculatedPointに0.01を代入}else if(2か3でなくて、4か5であれば){CalculatedPointに0.0001を代入}という流れになります。
符号の意味ですが、「==」が同じ、「||」又は、という意味になります。
・最後にCalculatedPointに代入した値をreturn関数で値を返します。計算された答えがこれですよ~って事ですね。

AdjustSlippage関数

これはdouble(小数点数)のAdjustSlippage関数を作成します。
AdjustSlippageの( )内にはこの関数で使用する引数(変数)を宣言します。
string(型)は文字列型でCurrencyという文字が入る箱を用意し、int(型)は整数型でSlippagePipsという数が入る箱を用意しておきます。
このスリッページ調整関数は前述のOninit内で「SLP=(int)AdjustSlippage(_Symbol,Slippage);」と使っており、これはAdjustSlippage関数の_Symbol(通貨ペア名)をCurrency変数に代入し、パラメーターで指定したSlippage値をSlippagePips変数に代入して{ }内を計算し、returnで返った値をSLPに代入するという流れになります。

ではその{ }内ですが、
・小数点数型で宣言したCalculatedSlippage変数に0.0を代入。
・MarketInfo関数で対象通貨ペアの小数点以下桁数をSymbolDigits変数に代入します。

 頭に(int)が付いていますが、これは取得した値の型を整数(int)に変換してから、SymbolDigits変数に代入しないと、型が違いますよ!って注意がコンパイル時に発生するので、その対策になります。
・if関数を利用して計算します。プログラムの内容は、if(SymbolDigtisが2か4であれば){CalculatedSlippageにスリッページ値をそのまま代入}else if(2か4でなくて、3か5であれば){CalculatedSlippageにスリッページ値に10を掛けた値を代入}という流れになります。
符号の意味ですが、「==」が同じ、「||」又は、という意味になります。

・最後にCalculatedSlippageに代入した値をreturn関数で値を返します。

このポイント調整とスリッページについての深い内容は、ボリュームが大きいのでまた別の記事にて書きたいと思います。

今日はこの辺りで。
では( ・Д・)

次の記事「潤奈流EA講座⑤(Position関数,OpenOrder関数,CloseOrder関数)

EA講座
スポンサーリンク
#潤奈FXをフォローする
スポンサーリンク
MT4でEA自作ブログ【潤奈FX】

コメント

タイトルとURLをコピーしました