![見出し画像](https://assets.st-note.com/production/uploads/images/66792493/rectangle_large_type_2_2678ed984a19d8af11d79d129cfe2f25.png?width=1200)
Block EA 今日のワンポイント:ブロックのコメント
ブロックでEAプログラミング、Block EA今日のワンポイントです。
「Block EA リリースしました」で紹介した通り、Block EAは基本的にGoogle Blockly を使って実装しています。
今回は、Blocklyの標準機能であるブロックのコメントと、MQLコード変換時にカスタマイズした部分についてメモしておきます。
まず、以下のようなブロックがあるとします。
これをMQLコードに変換すると、
void Tick()
{
double sma1 = (iMA(_Symbol, (0), 10, 0, MODE_SMA, PRICE_CLOSE, 1));
}
と、コードだけが表示されます。
変換したコードがそのまま実行できるのであれば、内容がわからなくても問題ありません。しかし、Block EAでは文法チェックまで行うわけではないので、変換したコードがそのまま動く保証はありません。
なので、後からコードを確認するためにも、コードにコメントが追加されると便利です。
Blocklyでは、各ブロックにコメントを付加することができます。ブロックで右クリックするとメニューが表示されるので、「コメントを追加」を選びます。
すると、ブロックの左上に「?」というアイコンが表示されます。それをクリックすると、コメントを入力することができます。
コメント入力後、「?」をクリックするとコメント画面は閉じます。
コメントを出したままブロックでプログラミングしてもいいですが、邪魔であれば閉じておいて、必要なときだけ確認してもいいでしょう。
このようにブロックにコメントをつけると、コードは以下のように変換されます。
// ティック時実行関数
void Tick()
{
double sma1 = (iMA(_Symbol, (0), 10, 0, MODE_SMA, PRICE_CLOSE, 1));
}
ブロックに対応する最初の行の上に//としてコメントが表示されます。
次に、変数宣言ブロックにテクニカル指標値を代入している複合ブロックのコメントです。これはコードにすると1行になってしまうので、どちらのブロックにコメントを付加しても、上の行にコメント表示されます。
例えば、変数宣言ブロックにコメントを追加します。
コードはこのようになります。
// ティック時実行関数
void Tick()
{
// 1本前の単純移動平均
double sma1 = (iMA(_Symbol, (0), 10, 0, MODE_SMA, PRICE_CLOSE, 1));
}
なお、コード変換エンジンはBlockly標準のJavaScript用を流用しているので、コメントの変換部分は基本的には手を加えていません。
ただ、一つだけカスタマイズしたのが、EA実行時に変更可能なパラメータの宣言ブロックです。
以下のように「外部パラメータの宣言」ブロックにコメントを付加したとします。
この場合、コードに変換するとこのようになります。
input int MAPeriod = 20; // 単純移動平均の期間
コメントは上の行ではなく、同じ行に表示されます。
MT4/MT5では、inputを付けて宣言した外部変数は、パラメータの入力画面で値を変更できます。
同じ行にコメントがない場合は、変数名がそのまま表示されますが、同じ行にコメントがある場合、そのコメントが変数のところに表示されるようになっています。
以下の画面がそれぞれMT4、MT5のパラメータ入力画面です。
このMT4、MT5の仕様を利用するために、外部パラメータ宣言のブロックだけ、コメントを同じ行に表示させるようにしたのです。
Block EAだけでは完全なEAが作成できないケースもあるかと思います。でも、ブロックにコメントを付けておけば、コードに変換した後でも内容が理解しやすくなり、デバッグの助けになるでしょう。
ではまた。