免責事項:以下は純粋に娯楽 + 教育目的です!これはFINANCIAL ADVICE(金融助言)やCODING(AIであれその他であれ)に関する助言ではありません。これはDEMONSTRATIONのためだけです!

SMAクラウドのプロンプト

TradingView Pine Script v5 のシニア開発者として振る舞ってください。

次の名前のオーバーレイ・インジケーターを作成:

“Technical Indicator Coding 4.0 — SMA クラウド設定”

目的

トレンド文脈を提供し、潜在的なシグナルを適格化する、リペイントしないマルチタイムフレームのインジケーターを作成してください。取引を実行したり、金融アドバイスを提示したりしてはいけません。

フレームワーク

このインジケーターは3つの分析レイヤーを使います:

1. 8時間の構造

   - 8Hタイムフレームで、より広い市場の構造を判断する。

   - それを強気、弱気、または中立として分類する。

   - 小さなダッシュボードで現在の分類を表示する。

2. 1時間 SMA クラウド

   - 1Hタイムフレームで、速いSMAと遅いSMAを計算します。

   - 両方のSMA長を設定可能にする。

   - デフォルト値:[INSERT FAST SMA] と [INSERT SLOW SMA]。

   - 平均値の間を塗りつぶす:

     • 速いSMAが遅いSMAより上なら緑。

     • 速いSMAが遅いSMAより下なら赤。

     • 関係が不明なときは中立のグレー。

   - 1Hのクラウドは、主要なトレンド方向フィルターです。

3. 15分トリガーとIMACD確認

   - 15Mタイムフレームでエントリー・トリガーを計算する。

   - IMACDモメンタムがプラスのときだけ強気トリガーを確定する。

   - IMACDモメンタムがマイナスのときだけ弱気トリガーを確定する。

   - 次のIMACD仕様を使う:[INSERT EXACT IMACD FORMULA AND SETTINGS]。

   - 確定した強気トリガーに対して、緑の上向き三角形をプロットします。

   - 確定した弱気トリガーに対して、赤の下向き三角形をプロットします。

シグナル階層(ヒエラルキー)

強気の適格条件(クオリファイ)には次が必要:

- 許容されるのは、強気または中立の8H構造。

- 強気 1H SMA クラウド。

- 強気15Mトリガー。

- ポジティブなIMACD確認。

弱気の適格条件は、完全に逆の条件になります。

TECHNICAL REQUIREMENTS

- request.security() を barmerge.lookahead_off とともに使用します。

- 確定したクローズ済み足でのみシグナルを評価する。

// 過去のシグナルをリペイントしない。

- 将来データを使わない。

- 3つのタイムフレームと、すべての計算長を入力で変更できるようにする。

- クラウド、構造ラベル、トリガーマーカー、ダッシュボードを表示/非表示にするスイッチを含める。

- 確定した強気・弱気の適格条件に対する alertcondition() ルールを追加する。

- チャートを見た目にきれいに保つ。

- 自動注文、パフォーマンス主張、P&L、投資推奨を含めない。

- コードを明確にコメントし、各タイムフレームが結果にどう寄与するか説明する。

コードを書き始める前に、欠けている計算ルールやパラメータを特定してください。独自の(プロプライエタリな)設定は作らないでください。まず、欠けている値を私に質問してください。

これらの値を受け取った後、次を提供してください:

1. 完全なPine Script v5コード。

2. ロジックの簡潔な説明。

3. インジケーターがリペイントしないことを検証するためのチェックリスト。

CODE(コピー&ペースト)

//@version=6

indicator("John Wick v 4.0", overlay=true)

//==================================================

// MACD 入力

//==================================================

fastLength   = input.int(12, "MACD ファスト長")

slowLength   = input.int(26, "MACD スロー長")

signalLength = input.int(9, "MACD シグナル長")

atrLength = input.int(14, "ATR 長")

showExits   = input.bool(true)

showCrosses = input.bool(true)

minProfitATR = input.float(0.30)

//==================================================

// MACD コア

//==================================================

fastMA   = ta.ema(close, fastLength)

slowMA   = ta.ema(close, slowLength)

macdLine   = fastMA - slowMA

signalLine = ta.ema(macdLine, signalLength)

hist = macdLine - signalLine

//==================================================

// クロスイベント

//==================================================

bullCross = ta.crossover(macdLine, signalLine)

bearCross = ta.crossunder(macdLine, signalLine)

//==================================================

// マーカー間隔

//==================================================

atrValue = ta.atr(atrLength)

dotOffset = atrValue * 0.28

triOffset = atrValue * 0.70

longExitY  = high + dotOffset

shortExitY = low - dotOffset

triBullY = low - triOffset

triBearY = high + triOffset

//==================================================

// トレード状態エンジン

//==================================================

var int   activeDir    = 0

var float entryPrice   = na

var float bestHist     = na

var bool  partialTaken = false

if bullCross

   activeDir    := 1

   entryPrice   := close

   bestHist     := hist

   partialTaken := false

if bearCross

   activeDir    := -1

 entryPrice   := close

   bestHist     := hist

   partialTaken := false

if activeDir == 1

   bestHist := na(bestHist) ? hist : math.max(bestHist, hist)

if activeDir == -1

   bestHist := na(bestHist) ? hist : math.min(bestHist, hist)

//==================================================

// 出口ロジック

//==================================================

longInProfit =

    activeDir == 1

and not na(entryPrice)

and high >= entryPrice + atrValue * minProfitATR

shortInProfit =

    activeDir == -1

and not na(entryPrice)

and low <= entryPrice - atrValue * minProfitATR

longMomentumFade =

    activeDir == 1

and bestHist > 0

and hist < hist[1]

shortMomentumFade =

    activeDir == -1

and bestHist < 0

and hist > hist[1]

yellowLongExit =

    showExits

and activeDir == 1

and not partialTaken

and longInProfit

and longMomentumFade

yellowShortExit =

    showExits

and activeDir == -1

and not partialTaken

and shortInProfit

and shortMomentumFade

if yellowLongExit or yellowShortExit

   partialTaken := true

redLongExit =

    showExits

and activeDir == 1

and partialTaken

and bearCross

redShortExit =

    showExits

and activeDir == -1

and partialTaken

and bullCross

if redLongExit or redShortExit

   activeDir    := 0

   entryPrice   := na

   bestHist     := na

   partialTaken := false

//==================================================

// EMA スタック(5レイヤークラウド)

//==================================================

ema5  = ta.ema(close, 5)

ema9  = ta.ema(close, 9)

ema12 = ta.ema(close, 12)

ema26 = ta.ema(close, 26)

ema50 = ta.ema(close, 50)

//==================================================

// EMAs をプロット(薄い/抑えた色)

//==================================================

p5  = plot(ema5, color=color.new(color.aqua, 20), linewidth=1)

p9  = plot(ema9, color=color.new(color.blue, 20), linewidth=1)

p12 = plot(ema12, color=color.new(color.gray, 20),  linewidth=1)

p26 = plot(ema26, color=color.new(color.orange,20), linewidth=1)

p50 = plot(ema50, color=color.new(color.red, 20), linewidth=1)

//==================================================

// クラウド

//==================================================

// 5–9 速いリアクション

fill(p5, p9, color=color.new(color.aqua, 80))

// 9–12 モメンタム

fill(p9, p12, color=color.new(color.blue, 82))

// 12–26 構造

fill(p12, p26, color=color.new(color.gray, 84))

// 26–50 トレンド

fill(p26, p50, color=color.new(color.orange, 86))

//==================================================

// 出口ドット

//==================================================

plotshape(

    yellowLongExit ? longExitY : na,

    style=shape.circle,

    location=location.absolute,

    color=color.new(color.yellow, 20),

    size=size.tiny

)

plotshape(

    yellowShortExit ? shortExitY : na,

    style=shape.circle,

    location=location.absolute,

    color=color.new(color.yellow, 20),

    size=size.tiny

)

plotshape(

    redLongExit ? longExitY : na,

    style=shape.circle,

    location=location.absolute,

    color=color.red,

    size=size.tiny

)

plotshape(

    redShortExit ? shortExitY : na,

    style=shape.circle,

    location=location.absolute,

    color=color.red,

    size=size.tiny

)

//==================================================

// エントリー三角形

//==================================================

plotshape(

    showCrosses and bullCross ? triBullY : na,

    style=shape.triangleup,

    location=location.absolute,

    color=color.lime,

    size=size.small

)

plotshape(

    showCrosses and bearCross ? triBearY : na,

    style=shape.triangledown,

    location=location.absolute,

    color=color.red,

    size=size.small

)

ATR のプロンプトとコード

プロンプト

TradingView Pine Script v5 のシニア開発者として振る舞ってください。

次の名前のオーバーレイ・インジケーターを作成:

“Technical Indicator Coding 5.2 — 平均トゥルーレンジ(ATR)”

目的

ラチェット式の平均トゥルーレンジ(ATR)トレーリング・レベルを用いた、ボラティリティ適応型のトレンド方向インジケーターを構築してください。このインジケーターは教育目的の分析用であり、取引を実行したり、成績(パフォーマンス)を主張したりしてはいけません。

コア設定

- ATR期間:10

- ATR マルチプライヤー:1.9

- 計算ソース:close

- ATR期間、マルチプライヤー、ソースを設定可能にする。

CALCULATION

1. 10期間にわたって平均トゥルーレンジ(ATR)を計算する。

2. 追跡距離(トレーリング距離)を計算する:

   trailingDistance = 1.9 × ATR(10)

3. 価格に応じてラチェットする再帰的なトレーリング・レベルを作成する:

- 価格が前回のトレーリング・レベルより上に留まっている間、レベルは上に動く可能性はありますが、下には動きません。

   - 価格が前回のトレーリング・レベルより下に留まっている間、そのレベルは下に動く可能性はありますが、上には動きません。

   - 価格がトレーリング・レベルをクロスしたら、コーディングされた方向を変更する。

方向ロジック

- トレーリング・レベルを上抜けたとき、強気に方向転換する。

- 終値がトレーリング・レベルを下にクロスしたとき、弱気に方向を変える。

- 方向が変わるときだけシグナルを生成する。

- すべての足で同じシグナルが繰り返し生成されないようにする。

VISUAL OUTPUT

- ATRのトレーリング・レベルをプロットする。

- コードされた方向が強気の場合は緑を使用する。

- コードされた方向が弱気の場合は赤を使用する。

- 強気の方向転換で、緑色の上向き三角形をプロットします。

- 弱気の方向転換で、赤い下向き三角形をプロットします。

- 現在の方向に応じてローソク足を色付けする(任意)。

EMA クラウド

- 12期間と26期間の指数移動平均(EMA)クラウドを追加する。

- EMA 12 が EMA 26 より上にあるとき、クラウドを緑で塗りつぶす。

- EMA 12 が EMA 26 より下にある場合、赤く塗りつぶす。

- EMAクラウドをモメンタムの文脈として扱う;ATRの方向転換計算を変えてはいけない。

- EMAクラウドを非表示にする入力を含める。

TECHNICAL REQUIREMENTS

- 確定した足の終値を使用する。

- リペイントしない。

- 将来の情報や先読みは使わない。

- 再帰変数ロジックでトレーリング・レベルを維持する。

- 強気・弱気の方向転換に対する alertcondition() ルールを追加する。

- マーカー、ローソク足の色、トレーリング・レベル、EMAクラウドの切り替えを含める。

- 戦略注文を作らない。結果テーブル、P&L計算、または金融上の推奨もしない。

- コードを整理し、分かりやすくコメントする。

提供して:

1. Pine Script v5 の完全なコードを作成する。

2. ATR と、ラチェット(巻き上げ)機構の平易な説明。

3. 各マーカーを生成する条件の説明。

4. リペイントしないことの短い検証チェックリスト。


CODE

//@version=6

indicator("JW V5.2", overlay=true)

// ── 入力 ──────────────────────────────────────────

atrPeriod     = input.int(10, "ATR 期間")

keyValue      = input.float(1.9, "キー値 / ATR マルチプライヤー", step=0.1)

warnZoneATR   = input.float(0.25, "警告ゾーン(x ATR)", step=0.05)

cloudSmooth   = input.int(3, "クラウドの滑らかさ", minval=1, tooltip="プロットされる帯だけを滑らかにします—シグナルのタイミングには影響しません")

src           = close

// ── ATR トレーリング・ストップのコア — 生値で、すべてを駆動する ──

xATR  = ta.atr(atrPeriod)

nLoss = keyValue * xATR

var float trailStop = 0.0

trailStop := src > nz(trailStop[1], 0) and src[1] > nz(trailStop[1], 0) ? math.max(nz(trailStop[1]), src - nLoss) :

            src < nz(trailStop[1], 0) and src[1] < nz(trailStop[1], 0) ? math.min(nz(trailStop[1]), src + nLoss) :

            src > nz(trailStop[1], 0) ? src - nLoss : src + nLoss

var int pos = 0

pos := src[1] < nz(trailStop[1], 0) and src > nz(trailStop[1], 0) ? 1 :

      src[1] > nz(trailStop[1], 0) and src < nz(trailStop[1], 0) ? -1 : nz(pos[1], 0)

trendColor = pos == 1 ? color.new(color.green, 0) : pos == -1 ? color.new(color.red, 0) : color.gray

// ── クラウド — スムーズに見せるため(見た目のみ、シグナルには関係しない) ──

plotSrc  = ta.ema(src, cloudSmooth)

plotStop = ta.ema(trailStop, cloudSmooth)

pricePlot = plot(plotSrc, title="価格(平滑化)",     color=trendColor, linewidth=1)

stopPlot  = plot(plotStop, title="トレイルストップ(平滑化)", color=trendColor, linewidth=1)

fill(pricePlot, stopPlot, color=color.new(trendColor, 75), title="トレンドクラウド")

// ── シグナル — 生の値に基づく(平滑化の影響を受けない) ──

buySignal  = pos == 1  and pos[1] == -1

sellSignal = pos == -1 and pos[1] == 1

plotshape(buySignal, title="Buy", text="buy", style=shape.triangleup, location=location.belowbar, color=color.green, textcolor=color.white, size=size.small)

plotshape(sellSignal, title="Sell", text="sell", style=shape.triangledown, location=location.abovebar, color=color.red, textcolor=color.white, size=size.small)

alertcondition(buySignal, "Buy Signal", "ATR Trail flipped bullish")

alertcondition(sellSignal, "Sell Signal", "ATR Trail flipped bearish")

// ── フリップの近接判定(生ギャップ、同じシグナル計算) ──

gapATR    = pos == 1 ? (src - trailStop) / xATR : (trailStop - src) / xATR

pctToFlip = math.max(0, math.min(100, 100 * (1 - gapATR / keyValue)))

dirText   = pos == 1 ? "ロング" : pos == -1 ? "ショート" : "フラット"

nearFlip  = gapATR <= warnZoneATR

labelColor = nearFlip ? color.new(color.orange, 0) : trendColor

labelText  = dirText + " — " + str.tostring(gapATR, "#.##") + " ATR でフリップ (" + str.tostring(pctToFlip, "#") + "%)"

var label proximityLabel = na

if barstate.islast

   label.delete(proximityLabel)

   proximityLabel := label.new(bar_index + 2, src, labelText, style=label.style_label_left, color=labelColor, textcolor=color.white, size=size.normal)