さて、今回はpineスクリプトを使って、自身の考えたトレード手法を検証する「strategy」について見ていきましょう!
Strategy
Strategyは戦略等と訳される英単語です。したがって、pineスクリプトでは、Strategyは売買戦略について確かめることになります。
では、実際にやっていきましょう
空のStrategyを出す
まずは、前回同様pineエディタをクリックします。
さらに、「開く」をクリックして、新規の空のストラテジーを選択します。
そうすると
/ This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © FP嶋
//@version=5
strategy("マイストラテジー", overlay=true, margin_long=100, margin_short=100)
longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28))
if (longCondition)
strategy.entry("My Long Entry Id", strategy.long)
shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))
if (shortCondition)
strategy.entry("My Short Entry Id", strategy.short)
このようなコードが書かれたものが出てきます。さらに前回同様チャートに追加すると…
今度はこんな画面に
何もしなくてもこの画面になると思いますが、もしならなかったら「ストラテジーテスター」のタブをクリックしましょう。
このストラテジーでやったらお金がものすごく減っていくのがわかります。良くあるゴールデンクロスで買い、デッドクロスで売りですけどね。
まぁ、通貨ペア(今回はビットコイン/円)や、足によって結果が変わるので、一概には言えませんが、日足でビットコイン円だとボロ負けしますよという話です。
この画面でわかることは
- 純利益 : スタート時点から現在まで、Strategy通りにトレードを行った場合の損益。+なら利益、ーなら損失
- 終了したトレードの合計 : トレードの合計数 買いも売りも数えられている
- 勝率 : トレード数のうち利益の出たトレードの割合。20%は5回のトレードで1回しか利益が出ていない
- プロフィットファクター : 総利益と総損失の割合。1を超えていると利益があるという事を示す。EAとしては2あると優秀と言われる。
- 最大ドローダウン : 含み損の大きさ。 上が絶対値、下が相対値(%)リスクの大きさとして考えられている。
- 平均トレード : 全トレードの損益の平均値。ーの場合はやればやるほど損する。要は期待値
- トレードでの平均バー数 : エントリーからイグジットまでのバーの本数。
さらに、パフォーマンスサマリーではより細かに結果がわかり、トレード一覧を選択すると1つ1つのトレードが確認できます。
ちょっと変えて利益が出るのか見てみよう!
日足では厳しかったので、1時間足にしてみましょう.
データなしになってしまいました。これは恐らく破産してしまうので、データが出ていません。追加したマイスクリプトの設定を開いて初期費用を増やしてみます。
値が出るようになりました。途中までは良い感じに増えていますね。プロフィットファクター(PF)は0.973とそこそこの結果です。
設定を変えられるようにしてみる
プログラミングしてみましょう!
今回はチャートのインジケーター設定から、smaの期間を変更できるようにします!
strategy("マイストラテジー", overlay=true, margin_long=100, margin_short=100)
kikan1 = input.int(14,"kikan1")
kikan2 = input.int(28,"kikan2")
longCondition = ta.crossover(ta.sma(close, kikan1), ta.sma(close, kikan2))
if (longCondition)
strategy.entry("My Long Entry Id", strategy.long)
shortCondition = ta.crossunder(ta.sma(close, kikan1), ta.sma(close, kikan2))
if (shortCondition)
strategy.entry("My Short Entry Id", strategy.short)
新たにkikan1とkikan2を設定しました。
=を使って値を定義することを、宣言などとも呼んだりします。ここでは、
kikan1という値は(=)、設定できるようにする(input)、それも整数で(.int)、初期値は「14」、名称は”kikan1”とする。という感じです。
同様に、kikan2という値も宣言しました。
さて、ここで宣言した値を、以下のコードに組み込みます
//longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28)) 元の値 14をkikan1に 28をkikan2に変更
longCondition = ta.crossover(ta.sma(close, kikan1), ta.sma(close, kikan2))
if (longCondition)
strategy.entry("My Long Entry Id", strategy.long)
//shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28)) 変更前
shortCondition = ta.crossunder(ta.sma(close, kikan1), ta.sma(close, kikan2))
if (shortCondition)
strategy.entry("My Short Entry Id", strategy.short)
この変更で設定画面で値を変更することが出来るようになります。
保存をすると、チャートに組み込まれた設定済みのインジケーターが更新されますので、保存ボタンを押しましょう。
インジケーターの設定ボタンを押すとパラメーターという項目が出来ます
設定できるようになりました
期間をかえると、クロスするタイミングを変えられるので、勝てる設定を探ることが出来ます
今回は私が普段設定している移動平均の設定のうち、kikan1を25にkikan2を75にしてみます
すると…
PFが1.14に改善されました!まぁ、過去のデータにフィッティングさせただけなので、この後も勝てるかどうかはわかりません。特に、後半のデータで負け始めているのがわかります。というのも、ビットコインは値が大きく変わってきているので、移動平均自体の価値も変わってしまいますし、取引量の増加は、値の動き方も大きく変えます。
したがって、その時その時にぴったりくる移動平均の期間というのは変わってくることが想像できますね。
こんな感じで、自分の考えた戦略(strategy)が通用するかどうかを過去のデータを使って検証することが出来ます!トレーディングビューはそういったことが簡単にpineスクリプトでできる点が優れています!
今回はこのへんで!
おすすめFXアイテム
過去検証や分析はMT4かFT4、Trading viewがおすすめです。
無料が良い人はMT4で、MT4を使わせてくれる口座を使用すると良いです。おすすめはFXTF
チャート分析に毎月課金してもいいよって人はTrading viewがおすすめです。無料もあります