NormalizeDouble関数について

変換関数

スポンサーリンク
スポンサーリンク

機能

NormalizeDouble関数は、小数点以下の数を指定した桁数で、四捨五入します。

英語で四捨五入をrooundingというので、わりと

「指定された精度に丸めます」

みたいな言葉で説明されていたりします。

(私みたいに野良でプログラムを勉強し始めたものにとっては、正直面くらいました(-_-;) )

EAを開発する過程においては扱う数値に正確な精度が求められる局面も出てくるので、NormalizeDouble関数はそんな局面でよく用いられます。

<書式>

double  NormalizeDouble(
  double  value,      // 正規化数
  int    digits      // 小数点以下の桁数
  );

引数

第1引数には、整形する対象のdouble型データが入ります。

第2引数には、整形する際の小数点以下の桁数が入ります。

要は小数点第何位まで表したいのというのを第2引数で指定するわけです。

引数についてはコチラのリンクをご覧ください。

戻り値

引数に指定したデータに基づいて計算されたdouble型の数値が返されます。

戻り値についてはコチラを下記の記事をご覧ください。

備考

計算された決済逆指値及び決済指値、また未決注文の価格は Digits() で取得される値によって正規化する必要があります

MQL5リファレンス

正規化とは?

正規化というのは、プログラムが取り扱うルールに則って値を整える作業

のことを言います。

通貨ペアに関する適切な桁数については、Digits関数(または定義済み変数_Digits」)で取得できますよ

という事を言っています。

サンプルコード

※以下のサンプルコードはTerminal>Common>ディレクトリのFilesフォルダにあるSignal.txtというテキストファイルがあることを前提としたものです。

#include <Trade\Trade.mqh>
//ファイルのインクルード

CTrade trade;
//クラスオブジェクトの宣言

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
      double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
      //チャートの値の取得と正規化
      
      int ExternalFile=FileOpen("Signal.txt",
      FILE_READ|FILE_ANSI|FILE_COMMON,
      '|',
      CP_ACP);
      //テキストファイルを開き、ファイルハンドルを取得
      
      string BuySignal=FileReadString(ExternalFile);
      //Terminal>Common>Filesフォルダにあるテキストを読み取る
      
      FileClose(ExternalFile);//ファイルを閉じる
      
      if(PositionsTotal()==0 && BuySignal=="BUY IT NOW")//読み取った中に"BUY IT NOW"があれば
      {
         trade.Buy(0.1,NULL,Ask,0,Ask+100*_Point,NULL);//買い注文
         
      }//if(PositionsTotal()==0 && BuySignal=="BUY IT NOW")
      
      Comment("BuySignal",BuySignal,"PositionsTotal:",PositionsTotal());//コメント表示
   
  }
//+------------------------------------------------------------------+

OnTick関数については↓をご覧ください↓

Print関数についてはこちらをご覧ください

<NormalizeDouble関数が使われている記事リンク↓>

MQL5 EA講座 第96回「トレーリングストップクラスを作る」

MQL5 EA講座 第101回「資金管理とロット調整について」

コメント

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