JFX Currency Index Master v6.6 Final

「今、一番買われている通貨はどれか?一番売られている通貨はどれか?」 裁量トレードにおいて、個別通貨ペア(USD/JPYなど)のチャートだけを見てエントリーするのは、森を見ずに木を見ているのと同じです。真のエッジ(優位性)は、市場全体の資金フロー(通貨の強弱)を把握した先に存在します。 この JFX Currency Index Master v6.6 Final は、私が日々のトレードで実際に使用している、主要8通貨(USD, JPY, EUR, GBP, AUD, NZD, CHF, CAD)の強弱を可視化する完全オリジナルのインジケーターです。 インジケーターの特徴 JFXの高品質データに特化 JFXが配信する全28通貨ペアのデータをフルに活用し、幾何平均を用いて各通貨の「真のインデックス(相対強度)」を正確に算出します。 プロ仕様のリセットロジック(Rolling & 毎日朝6時) 通貨強弱は「いつを起点(ゼロ)とするか」が命です。このスクリプトは、単なる固定時間枠ではなく「現在時刻(timenow)から指定時間(4時間〜3ヶ月)を遡った時点」を動的に起点とするローリング機能や、東京市場の開始前(朝6時)を起点とするリセット機能を搭載しています。 洗練されたUI リアルタイムで8通貨のラインとラベルが描画され、一目で「最強通貨」と「最弱通貨」のペアを見つけ出すことができます。 TradingViewへの追加方法 以下のPine Scriptコードをコピーし、TradingViewの画面下部にある「Pineエディタ」に貼り付けて「チャートに追加」をクリックしてください。 // This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © momonge //@version=6 indicator("JFX Currency Index Master v6.6 Final", overlay=false, precision=2) // --- パラメーター --- mode = input.string("24時間(rolling)", "リセット基準", options=["毎日朝6時", "4時間(rolling)", "8時間(rolling)", "24時間(rolling)", "1週間(rolling)", "1ヶ月(rolling)", "3ヶ月(rolling)"]) // --- データ取得関数 --- get_val(t) => request.security("JFX:" + t, timeframe.period, close) // --- 各通貨指数の算出(JFXの全28ペアをフル活用) --- u_id = math.pow((get_val("USDJPY") * get_val("USDCHF") * get_val("USDCAD")) / (get_val("EURUSD") * get_val("GBPUSD") * get_val("AUDUSD") * get_val("NZDUSD")), 1/7) j_id = 1 / math.pow(get_val("USDJPY") * get_val("EURJPY") * get_val("GBPJPY") * get_val("AUDJPY") * get_val("NZDJPY") * get_val("CHFJPY") * get_val("CADJPY"), 1/7) e_id = math.pow(get_val("EURUSD") * get_val("EURJPY") * get_val("EURGBP") * get_val("EURAUD") * get_val("EURNZD") * get_val("EURCHF") * get_val("EURCAD"), 1/7) g_id = math.pow(get_val("GBPUSD") * get_val("GBPJPY") * get_val("GBPAUD") * get_val("GBPNZD") * get_val("GBPCHF") * get_val("GBPCAD") / get_val("EURGBP"), 1/7) a_id = math.pow(get_val("AUDUSD") * get_val("AUDJPY") * get_val("AUDNZD") * get_val("AUDCHF") * get_val("AUDCAD") / (get_val("EURAUD") * get_val("GBPAUD")), 1/7) n_id = math.pow(get_val("NZDUSD") * get_val("NZDJPY") * get_val("NZDCHF") * get_val("NZDCAD") / (get_val("EURNZD") * get_val("GBPNZD") * get_val("AUDNZD")), 1/7) s_id = math.pow(get_val("CHFJPY") / (get_val("USDCHF") * get_val("EURCHF") * get_val("GBPCHF") * get_val("AUDCHF") * get_val("NZDCHF") * get_val("CADCHF")), 1/7) c_id = math.pow((get_val("CADJPY") * get_val("CADCHF")) / (get_val("USDCAD") * get_val("EURCAD") * get_val("GBPCAD") * get_val("AUDCAD") * get_val("NZDCAD")), 1/7) // --- 起点価格の保持変数 --- var float u_b = na, var float j_b = na, var float e_b = na, var float g_b = na var float a_b = na, var float n_b = na, var float s_b = na, var float c_b = na // ========================================================= // 真のゼロリセット判定ロジック(timenowを活用したプロ仕様) // ========================================================= if mode == "毎日朝6時" // 朝6時モードは、毎日6時に何度でも0リセットを繰り返す t_tokyo = time(timeframe.period, "0600-0605", "Asia/Tokyo") is_6am = not na(t_tokyo) and na(t_tokyo[1]) if is_6am or barstate.isfirst u_b := u_id, j_b := j_id, e_b := e_id, g_b := g_id a_b := a_id, n_b := n_id, s_b := s_id, c_b := c_id else // ローリングモード:「現在のリアルタイム時刻(timenow)」から指定時間を逆算 float lookback_ms = switch mode "4時間(rolling)" => 4 * 60 * 60 * 1000 "8時間(rolling)" => 8 * 60 * 60 * 1000 "24時間(rolling)" => 24 * 60 * 60 * 1000 "1週間(rolling)" => 7 * 24 * 60 * 60 * 1000 "1ヶ月(rolling)" => 30 * 24 * 60 * 60 * 1000 "3ヶ月(rolling)" => 90 * 24 * 60 * 60 * 1000 => 0 // 今の時間から遡った「絶対的な起点時刻」 target_time = timenow - lookback_ms // 過去のチャートの中から、起点時刻を「初めて」迎えたローソク足を検知して一度だけ0にロックする if time >= target_time and na(u_b) u_b := u_id, j_b := j_id, e_b := e_id, g_b := g_id a_b := a_id, n_b := n_id, s_b := s_id, c_b := c_id // --- 強弱計算 (変化率 %) --- // 基準値(base_val)がまだ無い(起点より前の時間)場合は na を返し、チャートに描画させない calc_pct(val, base_val) => na(base_val) ? na : (val - base_val) / base_val * 100 U = calc_pct(u_id, u_b), J = calc_pct(j_id, j_b), E = calc_pct(e_id, e_b), G = calc_pct(g_id, g_b) A = calc_pct(a_id, a_b), N = calc_pct(n_id, n_b), S = calc_pct(s_id, s_b), C = calc_pct(c_id, c_b) // --- 描画 --- plot(U, title="USD", color=color.white, linewidth=2) plot(J, title="JPY", color=color.red, linewidth=2) plot(E, title="EUR", color=color.blue, linewidth=2) plot(G, title="GBP", color=color.orange, linewidth=2) plot(A, title="AUD", color=color.green, linewidth=2) plot(N, title="NZD", color=color.lime, linewidth=2) plot(S, title="CHF", color=color.purple, linewidth=2) plot(C, title="CAD", color=color.maroon, linewidth=2) hline(0, "基準線", color=color.new(color.gray, 50), linestyle=hline.style_dotted, linewidth=2) // --- ラベル描画 --- if barstate.islast var label lb_u = label.new(na, na, "USD", color=#ffffff00, textcolor=color.white, style=label.style_label_left, size=size.small) var label lb_j = label.new(na, na, "JPY", color=#ffffff00, textcolor=color.red, style=label.style_label_left, size=size.small) var label lb_e = label.new(na, na, "EUR", color=#ffffff00, textcolor=color.blue, style=label.style_label_left, size=size.small) var label lb_g = label.new(na, na, "GBP", color=#ffffff00, textcolor=color.orange, style=label.style_label_left, size=size.small) var label lb_a = label.new(na, na, "AUD", color=#ffffff00, textcolor=color.green, style=label.style_label_left, size=size.small) var label lb_n = label.new(na, na, "NZD", color=#ffffff00, textcolor=color.lime, style=label.style_label_left, size=size.small) var label lb_s = label.new(na, na, "CHF", color=#ffffff00, textcolor=color.purple, style=label.style_label_left, size=size.small) var label lb_c = label.new(na, na, "CAD", color=#ffffff00, textcolor=color.maroon, style=label.style_label_left, size=size.small) label.set_xy(lb_u, bar_index, U), label.set_xy(lb_j, bar_index, J), label.set_xy(lb_e, bar_index, E), label.set_xy(lb_g, bar_index, G) label.set_xy(lb_a, bar_index, A), label.set_xy(lb_n, bar_index, N), label.set_xy(lb_s, bar_index, S), label.set_xy(lb_c, bar_index, C) ▼ このオリジナル・インジケーターはTradingView専用です ▼ ...

2026年7月4日 · 4 min · AutoTrader