FOREX TESTER
Pineスクリプト

Pine Script(Pineスクリプト)入門解説(14)ストラテジー・サンプル「EMAクロス+固定TP/SL」

はじめに

今回はPineScript入門ガイドの14回目です。前回は、TradingViewのストラテジーとバックテストの概要をご紹介しました。今回は具体的なストラテジーのサンプルの第1回目として、最も基本的で、かつ応用しやすいサンプルとして、「EMAクロスでエントリー、固定pipsの利確とストップロス」のストラテジーをご紹介したいと思います。(なお次回は続編として、このストラテジーの「最適化」に関する記事を書く予定です。)

「EMAクロスでエントリー、固定pipsの利確とストップ」のサンプル・ストラテジー

このサンプル・ストラテジーのロジック、およびバックテストの前提は、以下の通りです。

  • 短期EMA(25期間)と長期EMA(75期間)のゴールデン・クロスで買いエントリー
  • 短期EMA(25期間)と長期EMA(75期間)のデッド・クロスで売りエントリー
  • 利確は、70pips固定
  • ロスカット(損切り)は、50pis固定
  • 短期EMAおよび長期EMAの期間、利確pips、ロスカットpips、およびバックテストの開始日・終了日は、入力項目として後で変更可能とします
  • バックテストの前提:
    • 対象通貨ペア・時間足:ユーロドル・1時間足
    • 対象期間: 2019年1月1日~2019年12月31日までの1年間
    • 基準通貨:円
    • 初期資金:100,000円
    • オーダーサイズ:1,000通貨
    • 手数料:1,000通貨のオーダーの1往復(エントリー・決済)で60円
    • ピラミッディング:無し
    • スリッページ:無し

このサンプル・ストラテジーを、上記の条件を前提としてバックテストをした結果は、以下の通りです。

このサンプル・ストラテジーのスクリプトは、以下の通りです。

//@version=4
strategy("EMA cross & fixed TP/SL", overlay=true)

startyear = input(2019) //-----(A)
startmonth = input(1)
endyear = input(2020)
endmonth = input(1)

backtestStart = timestamp(startyear, startmonth, 1, 00, 00) //-----(B)
backtestEnd   = timestamp(endyear, endmonth, 1, 00, 00)
isBacktest = backtestStart <= time and  time <= backtestEnd //-----(C)

fastEMAperiod = input(25)
slowEMAperiod = input(75)
takeProfit = input(700)
stopLoss = input(500)

fastEMA = ema(close, fastEMAperiod)
slowEMA = ema(close, slowEMAperiod)
p1 = plot(fastEMA,color=color.red)
p2 = plot(slowEMA,color=color.blue)

longCondition = crossover(fastEMA, slowEMA) //-----(D)
if (isBacktest) 
    if (longCondition)
        strategy.entry("My Long Entry Id", strategy.long) //-----(E)
        strategy.exit("ExitLong", "My Long Entry Id", profit = takeProfit, loss = stopLoss) //-----(F)

shortCondition = crossunder(fastEMA, slowEMA)
if (isBacktest)
    if (shortCondition)
        strategy.entry("My Short Entry Id", strategy.short)
        strategy.exit("ExitShort", "My Short Entry Id", profit = takeProfit, loss = stopLoss)

(A) startyear = input(2019)
バックテストの対象期間の開始年をインプット項目として設定します。以下、開始月、終了年、終了月も同様です。

(B) backtestStart = timestamp(startyear, startmonth, 1, 00, 00)
バックテストの対象期間の開始年月日を、2019年1月1日0時0分で設定します。以下、終了年月日も同様です。

(C) isBacktest = backtestStart <= time and time <= backtestEnd
シミュレーションが、上記で設定したバックテストの対象期間か否かを、ブーリアン型(True/False)の変数で返します。

(D) longCondition = crossover(fastEMA, slowEMA)
ロング(買い)の条件を、ブーリアン型(True/False)の変数で返します。ショート(売り)の条件設定も同様です。

(E) strategy.entry(“My Long Entry Id”, strategy.long)
strategy.entryは、ポジションの保有を指示する関数です。
引数は、以下の通りです。
strategy.entry(id, long, qty, limit, stop, oca_name, oca_type, comment, when, alert_message)

  • id (string) :省略不可能で、注文の識別子です。識別子を指定する事で注文の変更やキャンセルが可能となります。
  • long (bool) :省略不可能で、市場ポジションの方向: ‘true’ または ‘strategy.long’ はロングです。’false’ または ‘strategy.short’ はショートです。
  • qty (float) :省略可能で、トレードのロット数です。デフォルト値は ‘NaN’ です。
  • limit (float) :省略可能で、注文の指値価格です。指定した場合、注文の種類は ‘imit’ または ‘stop-limit’ です。
  • stop (float) :省略可能で、注文の逆指値価格です。指定した場合、注文の種類は ‘stop’ または ‘stop-limit’ です。

(F) strategy.exit(“ExitLong”, “My Long Entry Id”, profit = takeProfit, loss = stopLoss) //—–(F)
strategy.exitは、特定のエントリーまたはすべてのポジションの決済を指示する関数です。
引数は、以下の通りです。
strategy.exit(id, from_entry, qty, qty_percent, profit, limit, loss, stop, trail_price, trail_points, trail_offset, oca_name, comment, when, alert_message)

  • id (string) :省略不可能で、注文の識別子です。識別子を指定する事で注文の変更やキャンセルが可能となります。
  • from_entry (string) :省略可能。エグジットする特定のエントリー注文のIDを指定します。
  • qty (float) :省略可能。トレードを終了するロット数です。デフォルト値は ‘NaN’ です。
  • profit (float) :省略可能。利益目標 をティックで指定します。デフォルト値は ‘NaN’ です。
  • limit (float) :省略可能。利益目標を特定の価格で指定します。デフォルト値は’NaN’です。
  • loss (float) :省略可能。損切幅をティックで指定します。デフォルト値は ‘NaN’ です。
  • stop (float) :省略可能。損切価格を指定します。デフォルト値は ‘NaN’ です。

次回は、今回のバックテストの結果の分析と、変数の値を変えて「最適化」をすることについて、MetaTrader(MT4, MT5)の機能と比較してまとめたいと思います。

 

スポンサーリンク
海外のFX会社おすすめ・ベスト3
XM

運営歴10年、口座数3.5百万、196か国対応、Tier1ライセンス所有
最大レバレッジ888倍、最小入金5ドル、追証なし、口座開設ボーナス3,000円、入金ボーナスも多彩
多彩な教育・リサーチコンテンツ
ボーナスで有名な大手ブローカーですが、最大の強みは約定力、信頼度もトップクラスです。

>> XMのウェブサイトはこちら

HotForex

2010年から運営、Tier1ライセンス所有のグローバル大手ブローカーが日本人向けサービスを拡大中
口座数2百万、27か国言語、業界表彰歴35件
最小入金5ドル、レバレッジ1000倍、追証なし
多彩なボーナス、多彩なコンテスト
FXだけなく、仮想通貨、米国株・アジア株・欧州株、ETF、各国の株式指数、VIX指数、原油、商品などの投資もあわせて研究したければ、HotForexがイチオシの品ぞろえです。

>> HotForexのウェブサイトはこちら

Exness

運営歴12年、HotForex・XMに劣らないグローバル大手、Tier1ライセンス・ブローカーが日本向けサービスにも注力展開中。
最小入金1ドルで、レバレッジは無限大(条件あり)、追証なし、通貨ペアの数は、驚異の107ペア!
月次の口座数、取引高、デロイトの監査もすべて開示。レアルマドリッドのスポンサー
老舗巨大ブローカー、ユニークさは抜群です。

>> Exnessのウェブサイトはこちら

FOREX Caffe
タイトルとURLをコピーしました