mt4 (MetaTrader4)使い倒シストレ

メタトレーダー、自作インジケータ、自作EAで完全自動売買。使えるものは何でも使え。
インジケーター、EA(自動売買システム)製作のご依頼はこちらへ
Googolyen FX Factory
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


にほんブログ村 為替ブログ FX システムトレード派へ
--/--/--(--) --:--:-- | スポンサー広告 | Trackback(-) | Comment(-)
staticを使って健康的に
MQL4では『static』を使用することができます。
このstatic、実はとても便利なものなんです
(便利、便利じゃないの基準は色々あると思いますが、
私は便利と思ってます(笑))。



まずはstaticの使い方について少々。

以下のコードを見てください。

int start()
{
int counter, counter_s;
counter = RunningTimes();
counter_s = RunningTimes_s();
Comment(counter, ", ", counter_s);
}

int RunningTimes()
{
int count = 0;
count++;
return (count);
}

int RunningTimes_s()
{
static int count = 0;
count++;
return (count);
}


このコードを実行すると、
・counterの値はずっと1のまま
・counter_sの値は1ずつ増加する

となります。
前回この関数を呼び出した時のcount値を覚えておいて、その値に1を足している訳です。
static変数を使えば、その関数を抜けた後も、値を保持することができるのです。


値を保持する為に『グローバル変数を使っていた場面』に使えるんです。

よく見かける場面を見てみましょう。

int AllBars;
bool isNewBar()
{
bool res=false;
if (AllBars!=Bars)
{
AllBars=Bars;
res=true;
}
return(res);
}

新足が登場するとtrueを返す関数です。

この関数内で使われているAllBars変数の特徴は以下です。
・AllBars変数はグローバル領域で宣言された変数
・AllBars変数はプログラム全体の中でisNewBar()関数内でしか使われない
・AllBarsは値を保持する為に使われている

ピコーン!


staticが使えます。
そしてstaticを使えば、グローバル変数の数を1個減らすことができますね。

isNewBar()関数をstaticを使って書き換えたコードが以下になります。

bool isNewBar()
{
static int allBars = 0;
bool res=false;
if (allBars!=Bars)
{
allBars=Bars;
res=true;
}
return(res);
}


たったこれだけですが、グローバル変数を減らすことに成功しました。
これで前回記事にした、グローバル変数乱用の弊害から一つ逃れることができますね。


健康的なソースファイル作りにお役立てください。

にほんブログ村 為替ブログ FX システムトレード派へ
Comment
≪この記事へのコメント≫
コメントを投稿する
URL:
Comment:
Pass:
Secret: 管理者にだけ表示を許可する
 
Trackback
この記事のトラックバックURL
≪この記事へのトラックバック≫
Designed by aykm.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。