免責事項:以下は純粋に娯楽 + 教育目的です!これは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)

