2017年5月19日金曜日

[Trading View]Pine スクリプト 入門1 基礎構文

Trading Viewの Pine scriptは日本語の資料があまりないため、自分向けにメモ代わりに記事を残しておきたいと思います。長くなるのでいくつかに分けます。
まずは基礎構文編で、つまづきやすいところを中心に文句つけながら・・。

自分向けメモですので、プログラムは少しかじったことのある人向け対象です。

■変数の宣言と代入
Pine Scpritで、まずつまづくのは、変数の宣言と代入で、代入式が異なるという事です。
というより、代入式が演算子として認識されていません。プログラムに詳しい方向けとなりますが、複合代入式とか、インクリメント演算子とか代入と同時に演算を行うようなものは(Version3)の時点では存在しないようです。

細かい話はさておき、宣言と代入が異なるという事は、どーいうことかというと、こーいうことです。

//宣言式 =
exp1 = 0.0
//下の式はコンパイルエラー
exp1 = 1.0
//代入式 :=
exp1 := 1.0

=は宣言式で、=で宣言された際、左辺にある変数が生成されます。
その際、右辺の型で宣言されます。そのため違う型の値を入れようとするとコンパイルエラーとなります。

//宣言式 =
exp1 = 0.0
//下の式はコンパイルエラー、0.0は浮動小数点、0は整数扱い
exp1 := 0

ひとつ前の記事で、弱い型付けと書きましたが、実際は、定数宣言式である=時点で型が決定しているようです。インジケータで数字を扱う場合、通常は浮動小数点ですので、初期化する際には0.0と書くように注意しましょう。
正直、変数型が制御されるのであれば、型宣言付き変数宣言式を作成した方が良いのではなかったのでしょうか?
おかげで、宣言式=とは、別に代入式:=を用意するという、とっつき時点で変態仕様な言語になっています・・・(文句たらたらですw)

■型の種類
ということで、型の種類を意識する必要があります。
次の5つがあります。チュートリアルには精度は乗っていませんでした。多分32bitだと思いますが、でかい数字を扱いたくなった際に調査したいとおもいます。
・整数
 .を付けずに宣言すると整数扱いです。
 exp=0

・浮動小数点(exp=0.0)
 こちらは、.付きです。対数表現もできるようです。
 exp=0.0
 exp=1e-10

・論理値(exp=true)
 論理式の戻り値や、true/falseで宣言された場合です。
 exp=true
 exp=1 < 2

・文字列(exp="abcd")
 文字列は、ダブルコート/シングルコートどちらでも文字列扱いです。
 exp="abc"
 exp='abc'
 Pineエディタで日本語を入れようとすると、時々バグりますが一応入る様子。

・色(exp=red)
 色定数もしくは#RGB、#RGBAで宣言できます。(Aは透明度)
 exp=red
 exp=#FF0000   //=red
   exp=#FF000080  //半透明赤

■ブロック構造
 4空白をブロック区切りにするという仕様です。
 これは、Pineエディタを見てもらった方がわかりやすいかもしれません。
If文の下に細い縦線が描画されているのがわかるかと思います。
この縦線の間が1ブロックという事になります。
最初見た時に、この言語もしかしてブロック構文ないの?(Cでいうところの{})と思いましたがそんなことはないようです。ブロック構文禁止の言語というのも、それはそれで面白いと思いましたが・・・w

■コメント
コメント構文は、行コメントの//のみです。ブロックコメントの/* */は無いようです。

■演算式
宣言/代入を除く演算式は、普通のものなので、細かい説明は除きます。
論理演算子が、!/&&/||ではなく、not/and/orです。
英語のページですが、どんな種類があるかは大体わかるかと思います。
https://www.tradingview.com/wiki/Operators

あと、ビット演算子はありません。ですので、C系言語でいうところの、>> << & |などの演算子は無いようです。

「MT4でFXを勝ち抜く研究をするブログ」で公開している無料インジケータは、こちらの一覧から。
インジケータ一覧

Twitterもよろしくお願いします。
https://twitter.com/mt4program
Trading View プロフィール

ブログランキングにご協力よろしくお願いします。m(._.)m
にほんブログ村 為替ブログ FX テクニカルトレード派へ
にほんブログ村

お約束ですが、本ブログは、投資に対する利益を約束する物ではありません。最終的には自己責任によるご判断よろしくお願いいたします。