2017年5月31日水曜日

[報告]明日6/1よりしばらく反応が鈍くなります。

Twitterでも告知中の通り、6/1より客先で缶詰作業となるためしばらく反応が鈍くなります。

FX-ONメッセージ等の反応が週末になるかもしれません。
ご迷惑をおかけいたしますがご了承ください。


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

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

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

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

2017年5月30日火曜日

[MT4インジケータ]最小二乗法移動平均(LSMA) バンド&アラート付き販売開始

アルゴリズムは公開しているLSMAですが、バンドとアラートを付けて500円にて販売を開始しました。


基本的なLSMAと比較して次の機能を実装しています。

・傾きを利用した背景色変更
・LSMAに対する分散バンド描画
・LSMA及びバンドを価格がまたいだ場合のアラート送信

トレンドフォローを基本とする方にはLSMAかなり有効に思われます。
ちょっと使い勝手を調整して、かなりお安い値段で販売をすることにしてみました。

EURUSDのみ利用可能な試用版も用意しています。


設定可能なパラメータは次のとおりです。

デフォルト値では、LSMAの対象価格を始値として中央値に関しては再描画がかからないようになっています。
バンドについては終値をベースにしていますので、最新のバーのみ再描画がかかっています。バンドについても再描画がかからないようにするには、バンド対象価格をOpen Priceに変更してください。


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

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

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

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

2017年5月29日月曜日

[Trading View]Pineスクリプト 入門5 関数宣言

トレーディングビュー Pineスクリプト 入門です。

もう少し本格的なプログラムをするには関数宣言が重要になってきますね。

まず英語ですが、リファレンスページにリンクをしておきたいと思います。
https://www.tradingview.com/wiki/Declaring_Functions

宣言の形式としては次の形です。
関数名(引数リスト)=>計算式

関数名(引数リスト)=>
    処理
    処理
    計算式

です。
=>が関数宣言式になります。
関数ですので、最後は何かの数値を返す必要があります。

Pineスクリプトでの関数宣言の勘所です。

1.使用の前に宣言する必要があります。
 .NetやJavaをやっている方だと、少し戸惑うかもしれませんが、宣言は使用の前に行う必要があります。

・NG例
plot(funcTest(close))

funcTest(a)=>a*a

・OK例
funcTest(a)=>a*a

plot(funcTest(close))

2.関数内でチャートの操作は行えません
plotやbgclor、barcolorなどのチャートに対する操作が発生する関数群は、使用できません。
関数はあくまで計算だけに限定されているようです。

こんな感じで怒られます。

ちなみに、これはif文なども同様です。
指定の条件の時だけ、バックグラウンドを描画するってどうやってやればいいの・・・?
Version3での話ですので、以後のバージョンで緩和されるかもしれません。

3.ローカルスコープが存在します。
関数の中で宣言された変数は、関数の外では利用できません。

・下のplot(b)はコンパイルエラーになります。
funcTest(a)=>
    b=a*a
    b[1]
    
plot(b)

4.再帰は行えません。
 ・・・波形の解析が行えない・・・悲しい
 Version3時点です。将来のバージョンでは緩和されるかもしれません。

5.関数名から=>までは改行できません。

・NG例
funcTest(
a    //テストのパラメータ
)=>
    b=a*a
    b[1]

なお、ビルドイン関数で、Pineスクリプトが得意とする形(最新バーのみ更新される形)のインジケータ作成に必要な関数はほとんど宣言済みです。
計算系に必要な関数は作る前に探してみてた方が良いです。

参考に一個作ってみたいと思います。
ビルドイン関数では、現在のバーから指定個数の高値安値を調査する関数がありますが、必ず現在バーからとなってしまいます。
そこで、オフセットも併せて指定できる関数を作ってみました。

■指定期間の高値安値を表示する。


//@version=3
study("high and low", overlay=true)

//-------------------------------------------------------
//入力
_offset = input(5, "Offset", type=integer)
_count = input(16, "Count", type=integer)

//-------------------------------------------------------
//指定オフセットから、指定数期間の最高値を取得する
// start 開始インデックス
// count 探査数
// return 最高値
HighestHigh(start, count)=>
    highest = 0.0
    for i = start to start + count - 1
        if nz(high[i]) > highest 
            highest := high[i]
    highest


//-------------------------------------------------------
//指定オフセットから、指定数期間の最安値を取得する
// start 開始インデックス
// count 探査数
// return 最安値
LowestLow(start, count)=>
    lowest = 999999999999999.0
    for i = start to start + count - 1
        if nz(low[i]) < lowest 
            lowest := low[i]
    lowest

//-------------------------------------------------------
//描画本体
plot(HighestHigh(_offset, _count), color=blue)
plot(LowestLow(_offset, _count), color=red)


※余談ですが、別に関数つくらなくても、ビルドイン関数+変数で同様のことは可能です。たぶん、本来はこのようにしなさいという事なのかと思います。

■書き換え例1 plotのオフセットを利用する
//@version=3
study("high and low", overlay=true)

//-------------------------------------------------------
//入力
_offset = input(5, "Offset", type=integer)
_count = input(16, "Count", type=integer)

highestHigh = highest(_count)
lowestLow = lowest(_count)

//-------------------------------------------------------
//描画本体
plot(highestHigh, color=blue, offset=_offset)
plot(lowestLow, color=red, offset=_offset)

■書き換え例2 オフセットした配列を用意する
//@version=3
study("high and low", overlay=true)

//-------------------------------------------------------
//入力
_offset = input(5, "Offset", type=integer)
_count = input(16, "Count", type=integer)

highestHigh = highest(_count)
lowestLow = lowest(_count)

offsetHigh = highestHigh[_offset]
offsetLow = lowestLow[_offset]

//-------------------------------------------------------
//描画本体
plot(offsetHigh, color=blue)
plot(offsetLow, color=red)


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

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

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

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