2017年5月18日木曜日

[Trading View]Pine スクリプト・・・・MQLとは言語思想が違います。

トレーディングビューのプロフィールページです。GMMA IndexとTEMA累積インジを公開しています。この記事で作ったStochastic Momentum Indexはすでに公開されているスクリプトがあるため、あえて公開はしていません。
https://jp.tradingview.com/u/daisuke_gewinn/

Trading Viewではカスタムインジを作成できます。

昨日作ったStochastic Momentum IndexをTrading View向けに作ってみました。

ちなみにTrading Viewには公開されているスクリプトとしてStochastic Momentum Indexはすでに存在しています。

答えがあるということと、作ったばかりでアルゴリズムがあたまに入っているということで練習課題として作ってみました。

まずTrading Viewでチャートを開いて、チャート下にあるPineエディタを開きます。

■Pineエディタ

最初全く気が付てなくて、Pineエディタどこから開くの?って探し回ってました^^;;;

がりがりとコードを書いた後は、チャートへの追加でインジケータが追加されます。

■Trading  View EURUSD H1 SMI

■MT4 EURUSD H1 SMI

■Pineスクリプトのインプレッション
・変数宣言は代入式を書いた時点で都度弱い型付けにて定義
使用された変数はすべて配列になる。
・浮動小数点で宣言された変数は配列になる。exp=0では配列にならない。
・型が違うと未宣言エラーになる。型宣言省略した意味ないじゃん・・・。
exp = 0.0
exp1 = exp[1]

//※exp1には、ひとつ前の足のexpが入る

・ブロックは4スペース
if a < b
    処理1
    処理2
else
    else処理1
    else処理2

if文終了後の処理

・わからなかった事
 サブウィンドウ型チャートのスケールの固定方法
(たぶん、hLineに上限値下限値を入れておけば、とりあえず全部表示される形になる。)

一瞬、関数型言語??と思いましたが、そーいうわけではなく、ブロック構造とかが4スペースで宣言するという一風変わった言語のようです。

構造体とかクラスとかはなさそうです。JavaScriptsっぽくプロトタイプとかも作れなさそうです・・・。MQLを単純に移植すればOKというわけにはいかなさそうです。

ソースコードはこんな感じです。
MQLとのコードと見比べると、言語設計思想がかなり異なることがわかりますね。
明らかにCを起源とするMQLと比較すると、Pineはよりスクリプトっぽい感じです。

http://mt4program.blogspot.jp/2017/05/mt4stochastic-momentum-index.html

//@version=3
study("Stochastic Momentum Index", overlay=false)

//入力
HLPeriod = input(13, "高値安値割り出し期間")
MPeriod = input(20, "EMA期間1")
NPeriod = input(30, "EMA期間2")
SignalPeriod = input(6, "シグナル期間")

//期間高値安値を検出
lowestLow =  lowest (low, HLPeriod)
highestHigh = highest(high, HLPeriod)

//分子側
chlEma = ema(ema((close - (highestHigh + lowestLow) / 2), MPeriod), NPeriod)

//分母側
hlEma = ema(ema(((highestHigh - lowestLow) / 2), MPeriod), NPeriod)

//smi計算
smi = if hlEma != 0 
    chlEma * 100 / hlEma
else
    0

signal = ema(smi, SignalPeriod)

//描画
plot(smi, color= red, title="smi")
plot(signal,color= aqua, title="signal")

//レベルの描画
hline(40, color = green, title = "UpperLevel")
hline(-40, color = green, title = "UnderLevel")
hline(0, color = blue, title = "Zero")
hline(100, color = green, title = "UpperLevel")
hline(-100, color = green, title = "UnderLevel")


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

Twitterもよろしくお願いします。
https://twitter.com/mt4program

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

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