NinjaScriptは強力なMicrosoft C#言語の拡張である。次の構文ガイドはC#言語の機能の一部である。C#言語のチュートリアルとオンライン・リファレンスについては概説ページを参照すること。
C#の命令文は英語の完全な文に類似している。
例:
I like trading.
これは理解するのが容易で且つ(意味が)明確である。もしあなたが次のように書いたら:
I like.
これを読んだ誰もが、あなたが何を好きなのか分からない。これは完全な文ではない。同じ論理はC#の命令文にも当てはまり、それはコンパイラによって翻訳可能な完全な命令を形作る。
sum = 10 + 10;
上記の命令文は、変数sumは10足す10と等しい、と言っているので完全である。命令文がピリオドではなくセミコロン";"で終わっていることに注意すること。英語の文はピリオドで終わり、C#の命令文はセミコロンで終わる。
ブロックは英語の段落に類似していて、複数の命令文をグループ化する。プログラミングの世界ではこれを"コードのブロック(Block of code)"と呼ぶ。ブロックは次に挙げる例のように波括弧"{}"で区切られる:
if (x == 5)
{
Print("NinjaTrader");
Print("NinjaScript");
}
上記のコード・ブロックは波括弧の中に2つの命令文を内包している。
あなたはあなたのコード中にあなた自身ののコメントを加える事ができる。単一行のコメントを構成するには"//"文字列を使用する。#br()
例:
// 次のコードは波括弧内に2つの命令文を内包している
if (x == 5)
{
Print("NinjaTrader");
Print("NinjaScript");
}
複数行に渡るコメントを構成するには、"/*"文字列でコメント・ブロックを開始し"*/"文字列で終端すれば良い。
例:
/* これはNinjaScript中での複数行に渡るコメント・ブロックを
説明するためのコメントである */
C#は大文字と小文字を区別する(case-sensitiveな)言語である。 頭文字が大文字の"N"である"NinjaTrader"は、小文字の"n"の"ninjaTrader"とは区別される。
変数はコンピュータのメモリーに情報を格納する、入れ物である。変数はあなたのメールアドレスと同じように、固有のものである。変数はデータを格納したり、引き出したりするために使用する。C#言語では多くの変数型がある。次に挙げるのは基本的な型の幾つかである:
C#で変数を宣言するには、まずそのデータ型を宣言し、その後に固有の名前を与えなければならない。また、必要に応じて値を割り当てることもできる。
// string型の変数を宣言
string myString = "NinjaTrader";
// double型の変数を宣言
double myDouble = 2.5;
// integer型の変数を宣言
int myInteger = 1;
// bool型の変数を宣言
bool learningIsFun = true;
// Simple Moving Averageインジケーターを使用するためのobject型の変数を宣言
SMA mySMA = new SMA(Close, 20);
上記の例において、等号文字"="は、宣言された変数に値を割り当てるために使用されていることに注意すること。
C#は多くの演算子を提供していて、そしてそれは命令文の中で実施する操作を指定するシンボルである。次に挙げるのは共通演算子の一部である。
算術演算子
+ 加算
- 減算
* 乗算
/ 除算
// 算術演算子の使用例
int myInteger = 0;
myInteger = 5 + (3 * 4);
Print(myInteger.ToString());
上記の例は、NinjaTraderのOutputウインドウに数値17を出力する。
System.Mathクラスは追加の算術機能を提供する。
例:
// System.MathクラスのABSメソッドの使用例
double myDouble = Math.Abs(5 - 6);
Print(myDouble.ToString());
この例はNinjaTraderのOutputウインドウに数値1を出力する。System.Mathのメソッドの完全なリストを参照せよ。
論理演算子
&& 論理積
|| 論理和
// 論理演算子の使用例
int myInteger = 3;
string myString = "NinjaTrader";
if (myInteger == 3 && myString == "NinjaTrader")
{
Print("true");
}
上記の例は、変数myIntegerが3に等しく且つ(&&演算子が使用されているので)変数myStringが"NinjaTrader"に等しい場合、NinjaScriptのOutputウインドウにtrueを出力する。
関係演算子
== 等しい
!= 等しくない
< より小さい
> より大きい
<= 以下
>= 以上
// 関係演算子の使用例
string myString = "NinjaTrader";
if (myString != "trading")
{
Print("Variable myString does not equal trading");
}
// 関係演算子の使用例その2 論理演算子で連結
double myDouble = 1000.25;
if (myDouble < 1000 || myDouble > 1001)
{
// 変数myDoubleはif文の条件を満たさないので、この出力は実行されないことに注意すること
Print("Variable myDouble is between 1000 and 1001");
}
代入演算子
= 代入
+= x += y は x = x + y と等価
-= x -= y は x = x - y と等価
*= x *= y は x = x * y と等価
/= x /= y は x = x / y と等価
条件演算子
?: 三項演算子
// 条件演算子の例
int myInteger = (10 > 12 ? 3 : 4);
Print(myInteger.ToString());
上記の条件演算子の例は、数値10が数値12より大きい場合に変数myIntegerに数値3を割り当て、そうでない場合に数値4を割り当てる。数値10は数値12より大きくないので、この例はNinjaTraderのOutputウインドウに数値4を出力する。
ある文字列に別の文字列を付け加えるには、"+"文字を使用する。
// 文字列の結合の例
string wordOne = "Ninja";
string wordTwo = "Trader";
Print(wordOne.ToString() + wordTwo.ToString());
上記の例は、NinjaTraderのOutputウインドウにNinjaTrader(という文字列)を出力する。