<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>任せる アーカイブ - PineScript Pro</title>
	<atom:link href="https://pinescript-pro.com/category/%E4%BB%BB%E3%81%9B%E3%82%8B/feed/" rel="self" type="application/rss+xml" />
	<link>https://pinescript-pro.com/category/任せる/</link>
	<description>専業トレーダーによるTradingViewインジケーター作成代行</description>
	<lastBuildDate>Sat, 21 Feb 2026 00:17:25 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://pinescript-pro.com/wp-content/uploads/2026/02/favicon-512-150x150.png</url>
	<title>任せる アーカイブ - PineScript Pro</title>
	<link>https://pinescript-pro.com/category/任せる/</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://websubhub.com/hub"/>
<atom:link rel="self" href="https://pinescript-pro.com/category/%E4%BB%BB%E3%81%9B%E3%82%8B/feed/"/>
	<item>
		<title>Pineスクリプトで勝てるストラテジーを作る方法｜検証の実際</title>
		<link>https://pinescript-pro.com/pine-script-strategy/</link>
		
		<dc:creator><![CDATA[松風]]></dc:creator>
		<pubDate>Fri, 20 Feb 2026 23:30:43 +0000</pubDate>
				<category><![CDATA[任せる]]></category>
		<guid isPermaLink="false">https://pinescript-pro.com/?p=1341</guid>

					<description><![CDATA[<p>「バックテストで勝率70%」。この数字だけを見て安心していないだろうか。 Pineスクリプトのストラテジー機能を使えば、自分のトレード手法を過去データで検証できる。strategy()で宣言し、strategy.entr...</p>
<p>投稿 <a rel="nofollow" href="https://pinescript-pro.com/pine-script-strategy/">Pineスクリプトで勝てるストラテジーを作る方法｜検証の実際</a> は <a rel="nofollow" href="https://pinescript-pro.com">PineScript Pro</a> に最初に表示されました。</p>
<p>投稿 <a href="https://pinescript-pro.com/pine-script-strategy/">Pineスクリプトで勝てるストラテジーを作る方法｜検証の実際</a> は <a href="https://pinescript-pro.com">PineScript Pro</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「バックテストで勝率70%」。この数字だけを見て安心していないだろうか。</p>



<p class="wp-block-paragraph">Pineスクリプトのストラテジー機能を使えば、自分のトレード手法を過去データで検証できる。strategy()で宣言し、strategy.entry()でエントリーし、ストラテジーテスターで成績を確認する。手順自体は難しくない。</p>



<p class="wp-block-paragraph">問題は「その数字が信頼できるかどうか」だ。</p>



<p class="wp-block-paragraph">バックテストの勝率70%は、パラメータを過去データに合わせて調整した結果かもしれない。スプレッドやスリッページを考慮していないかもしれない。特定の相場環境でたまたまハマっただけかもしれない。こうした落とし穴を知らずにリアル運用に移ると、「バックテストでは勝てたのに実際は負ける」という典型的な失敗パターンにはまる。</p>



<p class="wp-block-paragraph">この記事では、Pineスクリプトでストラテジーを作成する方法を、「コードの書き方」だけでなく「検証結果の読み方」「数字の信頼性の判断方法」まで含めて解説する。コピペで動くサンプルコードを複数掲載しているので、実際にTradingViewで動かしながら読んでほしい。</p>



<p class="wp-block-paragraph">→ <a href="https://pinescript-pro.com/">Pineスクリプトの実践テクニックを見る</a></p>



<h2 class="wp-block-heading">ストラテジーの基本構造</h2>



<p class="wp-block-paragraph">Pineスクリプトのストラテジーは、<code>indicator()</code>の代わりに<code>strategy()</code>で宣言する。これだけで、TradingViewのストラテジーテスターが有効になり、バックテスト結果を確認できるようになる。</p>



<p class="wp-block-paragraph">最小構成のストラテジーはこうなる。</p>



<pre class="pine-code">
//@version=6
strategy("最小ストラテジー", overlay=true)

// エントリー条件
if ta.crossover(ta.ema(close, 12), ta.ema(close, 26))
    strategy.entry("Long", strategy.long)

// エグジット条件
if ta.crossunder(ta.ema(close, 12), ta.ema(close, 26))
    strategy.close("Long")
</pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">たった8行。12EMAが26EMAを上抜けたらロング、下抜けたらクローズ。これをチャートに追加すると、過去データ全体で売買シミュレーションが実行され、ストラテジーテスターに成績が表示される。</p>



<p class="wp-block-paragraph">ストラテジーのコードは、大きく4つのパートで構成される。</p>



<p class="wp-block-paragraph"><strong>①宣言部:</strong> <code>strategy()</code>で名前、初期資金、ポジションサイズ、手数料などを設定する。</p>



<p class="wp-block-paragraph"><strong>②計算部:</strong> テクニカル指標の計算、条件判定、フィルターの適用を行う。</p>



<p class="wp-block-paragraph"><strong>③注文部:</strong> <code>strategy.entry()</code>でエントリー、<code>strategy.close()</code>でクローズ、<code>strategy.exit()</code>でTP/SLを設定する。</p>



<p class="wp-block-paragraph"><strong>④描画部:</strong> <code>plot()</code>や<code>plotshape()</code>でインジケーターやシグナルを可視化する。</p>



<h2 class="wp-block-heading">strategy()の設定 — ここで結果が大きく変わる</h2>



<p class="wp-block-paragraph"><code>strategy()</code>の引数は、バックテスト結果に直接影響する。適当に設定すると、結果の信頼性が大きく下がる。</p>



<pre class="pine-code">
//@version=6
strategy("EMAクロス", 
  overlay=true,
  initial_capital=1000000,       // 初期資金100万円
  default_qty_type=strategy.percent_of_equity,
  default_qty_value=10,          // 資金の10%でエントリー
  commission_type=strategy.commission.percent,
  commission_value=0.1,          // 往復0.1%の手数料
  slippage=2,                    // 2ティックのスリッページ
  process_orders_on_close=false, // バーの終値で注文を処理しない
  calc_on_every_tick=false)      // ティックごとの計算を無効化
</pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">特に重要な設定を説明する。</p>



<p class="wp-block-paragraph"><strong>initial_capital（初期資金）。</strong> デフォルトは$1,000,000だが、自分の実際のトレード資金に近い値を設定する。資金量によってポジションサイズが変わり、成績も変わる。</p>



<p class="wp-block-paragraph"><strong>commission_value（手数料）。</strong> デフォルトは0（手数料なし）。手数料なしのバックテストは現実離れしている。FXなら0.01〜0.05%、暗号資産なら0.05〜0.1%が目安。スプレッドを含めたい場合は、手数料をやや大きめに設定するか、slippageで調整する。</p>



<p class="wp-block-paragraph"><strong>slippage（スリッページ）。</strong> 実際の約定では、指定価格と約定価格にずれが生じる。1〜3ティックを設定しておくと現実に近い結果が得られる。</p>



<p class="wp-block-paragraph"><strong>process_orders_on_close。</strong> <code>true</code>にすると、バーの終値確定時点で注文が処理される。<code>false</code>（デフォルト）だと次のバーの始値で約定する。<code>true</code>は「未来の情報を使っている」ことになりやすいので、基本は<code>false</code>のままにする。</p>



<h2 class="wp-block-heading">エントリーとエグジットの書き方</h2>



<p class="wp-block-paragraph">ストラテジーの注文関数は3つある。</p>



<p class="wp-block-paragraph"><strong>strategy.entry()</strong> — 新規エントリー。同じIDで複数回呼ぶと、最新の注文で上書きされる。</p>



<p class="wp-block-paragraph"><strong>strategy.close()</strong> — 指定IDのポジションを成行でクローズ。</p>



<p class="wp-block-paragraph"><strong>strategy.exit()</strong> — TP（利確）/SL（損切）/トレーリングストップを設定。エントリー後に自動で機能する。</p>



<p class="wp-block-paragraph">この3つの使い分けを、実践的なストラテジーで見てみよう。</p>



<h2 class="wp-block-heading">サンプル①: EMAクロス＋RSIフィルター＋固定TP/SL</h2>



<p class="wp-block-paragraph">最も基本的で応用しやすい構成。トレンドフォロー系のストラテジーだ。</p>



<pre class="pine-code">
//@version=6
strategy("EMAクロス+RSI", overlay=true,
  initial_capital=1000000,
  default_qty_type=strategy.percent_of_equity,
  default_qty_value=10,
  commission_value=0.05,
  slippage=2)

// === パラメータ ===
emaFast   = input.int(12, "短期EMA", minval=1, group="EMA設定")
emaSlow   = input.int(26, "長期EMA", minval=1, group="EMA設定")
rsiLen    = input.int(14, "RSI期間", minval=1, group="フィルター")
rsiUpper  = input.int(70, "RSI上限", group="フィルター")
rsiLower  = input.int(30, "RSI下限", group="フィルター")
tpPips    = input.float(100, "利確(pips)", group="決済")
slPips    = input.float(50, "損切(pips)", group="決済")

// === 計算 ===
fast = ta.ema(close, emaFast)
slow = ta.ema(close, emaSlow)
rsi  = ta.rsi(close, rsiLen)

// === pips → 価格変換 ===
pipValue = syminfo.mintick * 10
tp = tpPips * pipValue
sl = slPips * pipValue

// === エントリー条件 ===
longCond  = ta.crossover(fast, slow) and rsi < rsiUpper
shortCond = ta.crossunder(fast, slow) and rsi > rsiLower

// === 注文 ===
if longCond
    strategy.entry("Long", strategy.long)
    strategy.exit("Long TP/SL", "Long", profit=tp/syminfo.mintick, loss=sl/syminfo.mintick)

if shortCond
    strategy.entry("Short", strategy.short)
    strategy.exit("Short TP/SL", "Short", profit=tp/syminfo.mintick, loss=sl/syminfo.mintick)

// === 描画 ===
plot(fast, "短期EMA", color.blue)
plot(slow, "長期EMA", color.red)
</pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">このストラテジーのポイントを解説する。</p>



<p class="wp-block-paragraph"><strong>RSIフィルター。</strong> EMAクロスだけでは、レンジ相場でダマシのシグナルが乱発する。RSIが買われすぎ圏（70超）でのロングを除外し、売られすぎ圏（30未満）でのショートを除外することで、無駄なエントリーを減らす。</p>



<p class="wp-block-paragraph"><strong>strategy.exit()のprofit/loss。</strong> <code>profit</code>と<code>loss</code>は「ティック数」で指定する。pips単位で入力したい場合は、上記のようにpipValueで変換する必要がある。FXの場合、1pip = 10 mintick（5桁ブローカー）が一般的。</p>



<p class="wp-block-paragraph"><strong>ロングとショートの両方向。</strong> トレンドフォロー系は、売りと買いの両方向をテストすることで、ストラテジーの堅牢性を確認できる。片方向だけの検証は、相場の方向性にバイアスがかかる。</p>



<h2 class="wp-block-heading">サンプル②: ブレイクアウト＋ATRベースTP/SL</h2>



<p class="wp-block-paragraph">固定pipsのTP/SLは、ボラティリティが変動する相場では機能しにくい。ATR（Average True Range）でTP/SLを動的に調整するストラテジーを紹介する。</p>



<pre class="pine-code">
//@version=6
strategy("ATRブレイクアウト", overlay=true,
  initial_capital=1000000,
  default_qty_type=strategy.percent_of_equity,
  default_qty_value=10,
  commission_value=0.05,
  slippage=2)

// === パラメータ ===
lookback  = input.int(20, "ブレイクアウト期間", minval=5, group="エントリー")
atrLen    = input.int(14, "ATR期間", minval=1, group="ATR")
atrTPmul  = input.float(2.0, "ATR × TP倍率", step=0.1, group="決済")
atrSLmul  = input.float(1.0, "ATR × SL倍率", step=0.1, group="決済")

// === 計算 ===
highestHigh = ta.highest(high, lookback)
lowestLow   = ta.lowest(low, lookback)
atr         = ta.atr(atrLen)

// === エントリー条件 ===
longBreak  = close > highestHigh[1]
shortBreak = close < lowestLow[1]

// === 注文 ===
if longBreak
    strategy.entry("Long", strategy.long)
    strategy.exit("Long Exit", "Long",
      profit=atr * atrTPmul / syminfo.mintick,
      loss=atr * atrSLmul / syminfo.mintick)

if shortBreak
    strategy.entry("Short", strategy.short)
    strategy.exit("Short Exit", "Short",
      profit=atr * atrTPmul / syminfo.mintick,
      loss=atr * atrSLmul / syminfo.mintick)

// === 描画 ===
plot(highestHigh, "高値ライン", color.green, style=plot.style_stepline)
plot(lowestLow, "安値ライン", color.red, style=plot.style_stepline)
</pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"><strong>ATRベースの利点。</strong> ボラティリティが高い相場ではTP/SLが広がり、低い相場では狭まる。相場環境に自動適応するため、固定pipsよりも堅牢性が高い。</p>



<p class="wp-block-paragraph"><strong>ATR倍率の目安。</strong> TP=ATR×2倍、SL=ATR×1倍が一般的な起点。リスクリワード比2:1になる。ここからパラメータを調整していく。</p>



<h2 class="wp-block-heading">サンプル③: 時間帯フィルター付きストラテジー</h2>



<p class="wp-block-paragraph">FXやゴールドは、東京・ロンドン・ニューヨークの各セッションで値動きの性質が異なる。時間帯フィルターを入れることで、有効な時間帯だけにエントリーを限定できる。</p>



<pre class="pine-code">
//@version=6
strategy("セッション限定EMAクロス", overlay=true,
  initial_capital=1000000,
  default_qty_type=strategy.percent_of_equity,
  default_qty_value=10,
  commission_value=0.05,
  slippage=2)

// === パラメータ ===
emaFast   = input.int(12, "短期EMA", group="EMA設定")
emaSlow   = input.int(26, "長期EMA", group="EMA設定")
useSession = input.bool(true, "セッション限定", group="時間帯")
sessionStr = input.session("0800-1600", "許可時間帯(UTC)", group="時間帯")

// === 計算 ===
fast = ta.ema(close, emaFast)
slow = ta.ema(close, emaSlow)

// === 時間帯フィルター ===
inSession = useSession ? not na(time(timeframe.period, sessionStr)) : true

// === エントリー条件 ===
longCond  = ta.crossover(fast, slow) and inSession
shortCond = ta.crossunder(fast, slow) and inSession

// === 注文 ===
if longCond
    strategy.entry("Long", strategy.long)
if shortCond
    strategy.entry("Short", strategy.short)

// セッション外で全ポジションクローズ
if useSession and not inSession
    strategy.close_all("セッション終了")

// === 描画 ===
plot(fast, "短期EMA", color.blue)
plot(slow, "長期EMA", color.red)
bgcolor(inSession ? color.new(color.blue, 95) : na)
</pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"><strong>input.session()。</strong> 時間帯を「HHMM-HHMM」形式で設定パネルから指定できる。UTC基準なので、東京時間（JST）の場合は-9時間で計算する。ロンドン時間08:00-16:00（UTC）が「0800-1600」。</p>



<p class="wp-block-paragraph"><strong>strategy.close_all()。</strong> セッション外に入ったタイミングで全ポジションをクローズする。ポジションを持ち越さないデイトレードスタイルのテストに使う。</p>



<p class="wp-block-paragraph"><strong>bgcolor()で時間帯を可視化。</strong> 許可されている時間帯の背景色を薄く塗ることで、エントリーが制限されている時間帯を目視で確認できる。</p>



<h2 class="wp-block-heading">ストラテジーテスターの読み方</h2>



<p class="wp-block-paragraph">ストラテジーをチャートに追加すると、画面下部の「ストラテジーテスター」タブに結果が表示される。数字の意味を正しく理解しないと、判断を誤る。</p>



<p class="wp-block-paragraph"><strong>純利益（Net Profit）。</strong> 全トレードの損益合計。プラスならトータルで勝ち、マイナスなら負け。ただし、この数字だけでは判断できない。初期資金に対する割合（%）で見ることが重要。</p>



<p class="wp-block-paragraph"><strong>勝率（Percent Profitable）。</strong> 勝ちトレード数 ÷ 全トレード数。勝率50%でもプロフィットファクターが高ければ収益性はある。勝率だけに注目しないこと。</p>



<p class="wp-block-paragraph"><strong>プロフィットファクター（Profit Factor）。</strong> 総利益 ÷ 総損失。1.0なら損益トントン、1.5以上なら優秀、2.0以上はかなり良い。ただし、トレード数が少ないと偶然で2.0以上になることもある。</p>



<p class="wp-block-paragraph"><strong>最大ドローダウン（Max Drawdown）。</strong> 資産がピークからどれだけ落ち込んだかの最大値。これが許容範囲を超えるストラテジーは、リアル運用で精神的に耐えられない。一般的に資金の20%以内が目安。</p>



<p class="wp-block-paragraph"><strong>トレード数（Total Trades）。</strong> バックテストの信頼性を左右する。30回未満のトレードでは統計的に有意ではない。最低100回以上のトレード数を目指す。</p>



<p class="wp-block-paragraph"><strong>平均トレード（Avg Trade）。</strong> 1回のトレードあたりの平均損益。これが手数料＋スリッページより大きくなければ、実運用では負ける。</p>



<p class="wp-block-paragraph">Pineスクリプトの基礎をもっと詳しく知りたい方はこちら。</p>



<p class="wp-block-paragraph">→ <a href="https://pinescript-pro.com/pine-script-guide/">Pineスクリプト（Pine Script）とは？できること・始め方を完全解説</a></p>


<div class="related_article typesimple"><a class="related_article__link no-icon" href="https://pinescript-pro.com/pine-script-guide/"><figure class="eyecatch of-cover thum"><img fetchpriority="high" decoding="async" width="485" height="255" src="https://pinescript-pro.com/wp-content/uploads/2026/02/1-2-485x255.png" class="archives-eyecatch-image attachment-oc-post-thum wp-post-image" alt="" srcset="https://pinescript-pro.com/wp-content/uploads/2026/02/1-2-485x255.png 485w, https://pinescript-pro.com/wp-content/uploads/2026/02/1-2-300x158.png 300w, https://pinescript-pro.com/wp-content/uploads/2026/02/1-2-1024x538.png 1024w, https://pinescript-pro.com/wp-content/uploads/2026/02/1-2-768x403.png 768w, https://pinescript-pro.com/wp-content/uploads/2026/02/1-2.png 1200w" sizes="(max-width: 485px) 45vw, 485px" /></figure><div class="related_article__meta archives_post__meta inbox"><div class="related_article__ttl ttl"><span class="labeltext">関連記事</span>Pineスクリプト（Pine Script）とは？できること・始め方を完全解説</div><time class="time__date gf">2026.02.21</time></div></a></div>


<p class="wp-block-paragraph">→ <a href="https://pinescript-pro.com/">Pineスクリプトの実践テクニックを見る</a></p>



<h2 class="wp-block-heading">バックテストの落とし穴 — 数字を鵜呑みにしない</h2>



<p class="wp-block-paragraph">バックテストの数字が良くても、リアル運用で勝てるとは限らない。よくある落とし穴を知っておこう。</p>



<p class="wp-block-paragraph"><strong>カーブフィッティング（過剰最適化）。</strong> パラメータを微調整して、過去データに完璧にフィットさせること。EMA期間を12→13に変えたら利益が20%増えた。さらに14にしたら25%。こうやって過去データに最適化したパラメータは、将来の相場では機能しない。</p>



<p class="wp-block-paragraph">対策は「パラメータの安定領域を探す」こと。EMA期間10〜16のどれでもプロフィットファクターが1.3以上あるなら、そのストラテジーは堅牢だ。特定の1つの値でだけ良い結果が出るなら、それはカーブフィッティングの可能性が高い。</p>



<p class="wp-block-paragraph"><strong>手数料・スリッページの無視。</strong> デフォルト設定（手数料0、スリッページ0）でバックテストすると、現実よりもかなり良い数字が出る。特にスキャルピング系のストラテジーは、手数料を入れた途端に収益がマイナスに転じることがある。</p>



<p class="wp-block-paragraph"><strong>バーの終値ベースの約定。</strong> TradingViewのストラテジーテスターは、基本的にバーの終値（または次のバーの始値）で約定を計算する。バー内の値動き（ヒゲ部分）は考慮されない。リアルタイムでは、バーの途中で条件が成立してエントリーするため、バックテスト通りの価格で約定しないことがある。</p>



<p class="wp-block-paragraph"><strong>生存者バイアス。</strong> 上場廃止になった銘柄はTradingViewのチャートから消えている。生き残った銘柄だけでバックテストすると、結果が良く見える傾向がある。</p>



<h2 class="wp-block-heading">堅牢性を確かめる方法</h2>



<p class="wp-block-paragraph">カーブフィッティングを避け、リアル運用でも通用するストラテジーかどうかを確認する方法。</p>



<p class="wp-block-paragraph"><strong>複数銘柄テスト。</strong> USDJPY、EURUSD、GBPUSD、XAUUSD（ゴールド）など、複数の銘柄で同じストラテジーを走らせる。1つの銘柄でしか機能しないストラテジーは汎用性が低い。</p>



<p class="wp-block-paragraph"><strong>複数時間足テスト。</strong> 15分足、1時間足、4時間足、日足で同じストラテジーをテストする。特定の時間足でだけ良い結果が出る場合は、その時間足のデータ特性に依存している可能性がある。</p>



<p class="wp-block-paragraph"><strong>分割テスト（イン/アウトサンプル）。</strong> 過去データを前半と後半に分ける。前半でパラメータを決め、後半でそのパラメータのまま検証する。前半は良いが後半は悪い、というパターンならカーブフィッティングの兆候だ。</p>



<p class="wp-block-paragraph">Pineスクリプトでは、<code>time</code>関数を使ってテスト期間を分割できる。</p>



<pre class="pine-code">
//@version=6
strategy("分割テスト", overlay=true)

// テスト期間の分割
cutoff = timestamp(2024, 1, 1)
isInSample  = time < cutoff   // 2024年以前 = パラメータ調整用
isOutSample = time >= cutoff   // 2024年以降 = 検証用

// 背景色でイン/アウトサンプルを可視化
bgcolor(isInSample ? color.new(color.blue, 95) : color.new(color.green, 95))
</pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"><strong>パラメータ感度分析。</strong> EMA期間を10→12→14→16と変えたとき、プロフィットファクターが1.5→1.8→0.5→1.6と不安定に変動するなら、そのストラテジーはパラメータに敏感すぎる。1.3→1.4→1.5→1.4のように安定的に推移するなら、堅牢性が高い。</p>



<h2 class="wp-block-heading">strategy.exit()の応用 — 決済ロジックを磨く</h2>



<p class="wp-block-paragraph">多くの初心者は、エントリーロジックに時間をかけすぎて、決済ロジックを軽視する。実際には、「いつ出るか」の方が収益に大きく影響する。</p>



<p class="wp-block-paragraph"><strong>トレーリングストップ。</strong> 利益が伸びたら損切りラインを切り上げる。</p>



<pre class="pine-code">
strategy.exit("Trail", "Long",
  trail_points=50,      // 50ティック利益が出たらトレーリング開始
  trail_offset=20)      // 高値から20ティック逆行で決済
</pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"><strong>TP/SLとトレーリングの併用。</strong> 利確ラインに達する前にトレーリングで利益を確保する。</p>



<pre class="pine-code">
strategy.exit("複合決済", "Long",
  profit=200,           // 200ティックで利確
  loss=100,             // 100ティックで損切
  trail_points=80,      // 80ティック利益でトレーリング開始
  trail_offset=30)      // 高値から30ティック逆行で決済
</pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"><strong>時間ベースの決済。</strong> 一定時間（バー数）が経過してもTP/SLに到達しない場合、ポジションを閉じる。含み損が膨らむ前に撤退するロジック。</p>



<pre class="pine-code">
//@version=6
strategy("時間決済", overlay=true)

var int entryBar = 0

if ta.crossover(ta.ema(close, 12), ta.ema(close, 26))
    strategy.entry("Long", strategy.long)
    entryBar := bar_index

// エントリーから10バー経過で強制クローズ
if strategy.position_size > 0 and bar_index - entryBar >= 10
    strategy.close("Long", comment="時間切れ")
</pre>



<h2 class="wp-block-heading">ストラテジーからインジケーターへの変換</h2>



<p class="wp-block-paragraph">バックテストで有効性を確認したストラテジーは、実際のトレードではインジケーターとして使う。<code>strategy()</code>を<code>indicator()</code>に変え、<code>strategy.entry()</code>を<code>plotshape()</code>に、<code>strategy.exit()</code>を<code>alertcondition()</code>に置き換える。</p>



<pre class="pine-code">
//@version=6
// strategy("EMAクロス", overlay=true)  // ← コメントアウト
indicator("EMAクロス シグナル", overlay=true)

fast = ta.ema(close, 12)
slow = ta.ema(close, 26)

longCond  = ta.crossover(fast, slow)
shortCond = ta.crossunder(fast, slow)

// strategy.entry() の代わりにシグナル表示
plotshape(longCond, "ロング", shape.triangleup, location.belowbar, color.green, size=size.small)
plotshape(shortCond, "ショート", shape.triangledown, location.abovebar, color.red, size=size.small)

// アラート条件（スマホ通知用）
alertcondition(longCond, "ロングシグナル", "EMAゴールデンクロス")
alertcondition(shortCond, "ショートシグナル", "EMAデッドクロス")

plot(fast, "短期EMA", color.blue)
plot(slow, "長期EMA", color.red)
</pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">ストラテジーは「過去データでの検証」、インジケーターは「リアルタイムでのシグナル表示とアラート」。この2つをセットで作ることで、検証済みの手法をリアルトレードに活かせる。</p>



<h2 class="wp-block-heading">よくある質問</h2>



<p class="wp-block-paragraph"><strong>Q: ストラテジーとインジケーターの違いは？</strong></p>



<p class="wp-block-paragraph">ストラテジーは<code>strategy()</code>で宣言し、仮想の売買を実行してバックテスト結果を表示する。インジケーターは<code>indicator()</code>で宣言し、チャート上に描画する。ストラテジーは検証用、インジケーターはリアルトレード用。</p>



<p class="wp-block-paragraph"><strong>Q: ストラテジーで自動売買はできる？</strong></p>



<p class="wp-block-paragraph">Pineスクリプト単体では取引所に注文を送れない。ただし、<code>alertcondition()</code>やアラートのWebhook機能を使えば、外部の自動売買システムと連携できる。</p>



<p class="wp-block-paragraph"><strong>Q: バックテスト期間はどのくらい必要？</strong></p>



<p class="wp-block-paragraph">最低でも100トレード以上が出る期間。日足なら2〜5年、1時間足なら半年〜1年、15分足なら3〜6ヶ月が目安。短すぎると統計的に信頼できない。</p>



<p class="wp-block-paragraph"><strong>Q: 勝率とプロフィットファクター、どちらが重要？</strong></p>



<p class="wp-block-paragraph">プロフィットファクター。勝率40%でもプロフィットファクター2.0なら十分に利益が出る（損小利大型）。逆に勝率80%でもプロフィットファクターが1.0以下なら長期的に負ける（コツコツドカン型）。</p>



<p class="wp-block-paragraph"><strong>Q: process_orders_on_closeはtrueにすべき？</strong></p>



<p class="wp-block-paragraph">基本はfalse（デフォルト）のままにする。trueにすると「バーの終値を見てからそのバーの終値で約定する」という、リアルでは不可能な動作になり、バックテスト結果が過大評価される。</p>



<h2 class="wp-block-heading">まとめ</h2>



<p class="wp-block-paragraph">Pineスクリプトのストラテジーは「コードを書いてバックテストする」までは簡単だ。難しいのは「その結果が信頼できるかを判断する」こと。</p>



<p class="wp-block-paragraph">手数料とスリッページは必ず設定する。カーブフィッティングを避けるため、パラメータの安定領域を探す。複数銘柄・時間足でテストして堅牢性を確認する。分割テストでイン/アウトサンプルの成績を比較する。</p>



<p class="wp-block-paragraph">バックテストの数字が良いことと、リアルで勝てることは別の話だ。この記事で紹介した検証手法を使って、「本当に使えるストラテジー」を見極めてほしい。</p>



<p class="wp-block-paragraph">→ <a href="https://pinescript-pro.com/">Pineスクリプトの実践ノウハウをもっと見る</a></p>



<p class="wp-block-paragraph"></p>
<p>投稿 <a rel="nofollow" href="https://pinescript-pro.com/pine-script-strategy/">Pineスクリプトで勝てるストラテジーを作る方法｜検証の実際</a> は <a rel="nofollow" href="https://pinescript-pro.com">PineScript Pro</a> に最初に表示されました。</p>
<p>投稿 <a href="https://pinescript-pro.com/pine-script-strategy/">Pineスクリプトで勝てるストラテジーを作る方法｜検証の実際</a> は <a href="https://pinescript-pro.com">PineScript Pro</a> に最初に表示されました。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
