MQL4言語のソースコードをNotePad++で整形する方法

突然ですが、綺麗なソースコードは好きですか?
EA開発は、一人で開発可能なレベルですので、とにかく動けばOK!という人も多いかと思います。

私はWebシステム開発に従事していたことがあり、プログラマーやプロジェクトリーダーの立場も
経験したことがありますが、プログラムの可読性・保守性は、効率・品質の観点で大事だと考えています。

自分でプログラムを書いても「三日経てば他人のコード」という名言(迷言?)は非常に有名ですね。


EAを運用している最中に意図しない連続売買をするようなバグがあって、口座が破綻したら大変です。

自分で運用する分には自業自得ですが、fx-on.com に出品するEAについては
他の人が運用しますので、もしバグがあったら。。。(ヤバイよヤバイよ)

ですので、品質を担保する上でもプログラムの可読性・保守性を考慮してEAを開発する必要があります。


少し前置きが長くなりましたが、MQL4言語のソースコードを整形する方法は
前々回からご紹介している高機能なテキストエディタ「Notepad++」で簡単に実施することが可能です。


まず、NotePad++のプラグインを使って、ソースコード整形ツールをインストールします。

メニューの[プラグイン]から[Plugin Manager] -> [Show Plugin Manager] で Plugin Managerを選択
すると下記画面が立ち上がりますので、UniversalIndentGUI にチェックをつけて Install を選択します。

Show Plugin Manager

インストールが完了すると、メニューの[プラグイン]に [UniversalIndentGUI] が増えていますので
[UniversalIndentGUI] -> [Indent Text] で Indent Text を選択するとコードの整形ができます。


それでは、どのように整形されるかインデントを削除した状態で試してみます。

【整形前のコード】
//+------------------------------------------------------------------+
int start()
{
int i,k,counted_bars=IndicatorCounted();
double deviation;
double sum,oldval,newres;
//----
if(Bars <= BandsPeriod) return(0);
//---- initial zero
if(counted_bars < 1)
for(i=1;i <= BandsPeriod;i++)
{
MovingBuffer[Bars-i]=EMPTY_VALUE;
UpperBuffer[Bars-i]=EMPTY_VALUE;
LowerBuffer[Bars-i]=EMPTY_VALUE;
}
//----
int limit=Bars-counted_bars;
if(counted_bars > 0) limit++;
for(i=0; i < limit; i++)
MovingBuffer[i]=iMA(NULL,0,BandsPeriod,BandsShift,MODE_SMA,PRICE_CLOSE,i);
//----
i=Bars-BandsPeriod+1;
if(counted_bars > BandsPeriod-1) i=Bars-counted_bars-1;
while(i >= 0)
{
sum=0.0;
k=i+BandsPeriod-1;
oldval=MovingBuffer[i];
while(k >= i)
{
newres=Close[k]-oldval;
sum+=newres*newres;
k--;
}
deviation=BandsDeviations*MathSqrt(sum/BandsPeriod);
UpperBuffer[i]=oldval+deviation;
LowerBuffer[i]=oldval-deviation;
i--;
}
//----
return(0);
}
//+------------------------------------------------------------------+


【整形後のコード】
//+------------------------------------------------------------------+
int start()
{
int i,k,counted_bars=IndicatorCounted();
double deviation;
double sum,oldval,newres;
//----
if (Bars <= BandsPeriod) return(0);
//---- initial zero
if (counted_bars < 1)
for (i=1;i <= BandsPeriod;i++)
{
MovingBuffer[Bars-i]=EMPTY_VALUE;
UpperBuffer[Bars-i]=EMPTY_VALUE;
LowerBuffer[Bars-i]=EMPTY_VALUE;
}
//----
int limit=Bars-counted_bars;
if (counted_bars > 0) limit++;
for (i=0; i < limit; i++)
MovingBuffer[i]=iMA(NULL,0,BandsPeriod,BandsShift,MODE_SMA,PRICE_CLOSE,i);
//----
i=Bars-BandsPeriod+1;
if (counted_bars > BandsPeriod-1) i=Bars-counted_bars-1;
while (i >= 0)
{
sum=0.0;
k=i+BandsPeriod-1;
oldval=MovingBuffer[i];
while (k >= i)
{
newres=Close[k]-oldval;
sum+=newres*newres;
k--;
}
deviation=BandsDeviations*MathSqrt(sum/BandsPeriod);
UpperBuffer[i]=oldval+deviation;
LowerBuffer[i]=oldval-deviation;
i--;
}
//----
return(0);
}

//+------------------------------------------------------------------+

いかがでしょうか?


NotePad++には、ショートカット機能もありますので、メニューの[設定]から[ショートカット管理]を
選択して [Plugin commands] の該当箇所を設定(下図参照)すれば任意のキー設定で整形できます。

Shortcut mapper


ソースコード整形時にテキストがクリアされてしまう場合は、NotePad++起動時に右クリックで
管理者として実行するか、OSのユーザーアカウント制御(UAC)の設定を無効にしてください。

まだまだMT4 EA開発用に使いやすく機能拡張することができますので、また次回ご紹介します。

MT4 EA開発・運用ブログ:関連記事ピックアップ

EAつくーる
自動売買システム作成ソフト「EAつくーる
MT4 EA開発ブログの人気記事「RSI」「ボリンジャーバンド
を使用したEAが、数値入力とクリックで簡単に作成できます。
mq4プログラムが出力されるため、MQL4言語を効率よく
習得したいEA開発初心者にもオススメのEA開発ツールです。
お試しで利用したい方は「EAつくーる【1ヶ月版】」をどうぞ。

MT4 EA開発・運用ブログ:カテゴリー

MT4 EA開発・運用ブログ:人気記事ランキング(直近1ヶ月)

MT4 EA開発・運用ブログ:最新記事一覧

もっと見る...