2026/04/20

1-6. NK-Fixed MACD

This is a MACD equipped with a feature that allows you to adjust when to start real-time drawing, anywhere from 0 seconds to 5 minutes before the candle closes. It also includes other useful features.


[MACD]

The MACD (Moving Average Convergence Divergence) is an indicator that calculates the "divergence (difference)" between two EMAs of different periods, simultaneously visualizing the direction and momentum of a trend. It simultaneously expresses the "trend direction (positive or negative)" based on the zero line, and the "changes in trend momentum" through line crossovers and the expansion or contraction of the histogram, all within a single window.


Example of MACD displayed on TradingView
Source: TradingView

[NOTICE & LICENSE]
・For educational and informational purposes only; does not constitute investment advice. We assume no liability for any economic loss arising from the use of this tool.
・Tested on Pine Script v6. Provided "As-Is" with no guarantee of updates in response to future TradingView specification changes. We do not provide individual installation support or accept modification requests.
・Governed by the MIT License.
// SPDX-FileCopyrightText: 2026 NK-report https://www.nk-report.com/
// SPDX-License-Identifier: MIT
//
// Disclaimer: This script is for educational purposes only and does not constitute investment advice.

//@version=6
indicator("NK-Fixed MACD", shorttitle="NK-Fixed MACD", overlay=false)

// ==============================================================================
// 【01】 免責・ライセンス
// ==============================================================================
//
// Indicator is published for free: https://www.nk-report.com/p/tradingview-code.html
//
// Disclaimer: This script is for educational and informational purposes only and does not constitute investment advice.
//
// 1. This code has been tested with Pine Script v6 as of 2026.
//    We do not provide individual support or modifications for any issues caused by future specification changes.
// 2. This script was independently created using an LLM, based on general calculation logic.
//    It is distributed under the MIT License.
// ------------------------------------------------------------------------------
// MIT License 
//
// Copyright 2026 NK-report https://www.nk-report.com/
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
// of the Software, and to permit persons to whom the Software is furnished to do
// so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.

// ==============================================================================
// 【02】 UI設定と言語
// ==============================================================================
// 1. 言語辞書の定義(テキストの定数化)

const string GRP_FIXED   = "Fixed Settings"
const string LBL_SEC     = "Real-time Draw Start (X seconds before bar closes)"
const string TT_SEC      = "Adjust between 0 and 300 seconds (5 mins). Hides drawings on the current bar until the specified time (e.g., 10 secs before close) is reached.\nEntering 0 disables this feature and draws in real-time constantly."

const string GRP_MACD    = "MACD Settings"
const string LBL_FAST    = "Fast Length"
const string LBL_SLOW    = "Slow Length"
const string LBL_SIG     = "Signal Length"
const string LBL_SRC     = "Source"

// 2. UI(ユーザー入力画面)の構築 & 3. トップダウン処理への適合

i_sec    = input.int(0, title=LBL_SEC, minval=0, maxval=300, group=GRP_FIXED, tooltip=TT_SEC)

i_fast   = input.int(12, title=LBL_FAST, minval=1, group=GRP_MACD, inline="MACD1")
i_slow   = input.int(26, title=LBL_SLOW, minval=1, group=GRP_MACD, inline="MACD1")
i_sig    = input.int(9, title=LBL_SIG, minval=1, group=GRP_MACD, inline="MACD2")
i_src    = input.source(close, title=LBL_SRC, group=GRP_MACD, inline="MACD2")

i_col_macd = input.color(#2962FF, title="MACD Line", group=GRP_MACD, inline="MACD3")
i_col_sig  = input.color(#FF6D00, title="Signal Line", group=GRP_MACD, inline="MACD3")
i_col_h_up = input.color(#26A69A, title="Hist Up", group=GRP_MACD, inline="MACD4")
i_col_h_dn = input.color(#EF5350, title="Hist Down", group=GRP_MACD, inline="MACD4")


// ==============================================================================
// 【03】 全コード共通仕様(タイムゾーン・時間インフラ処理)
// ==============================================================================
// 1. 基本時間単位のシステム定義(定数化)
const int MS_PER_SEC  = 1000

// ==============================================================================
// 【04】 各カテゴリ共通仕様 (NK-Fixed Core Logic)
// ==============================================================================
// 1. カテゴリ固有のインフラ構築(コア機能の定義)
bool is_draw_ready = true

// リアルタイム足であり、かつユーザーが0秒より大きい数値を設定している場合のみ処理
if barstate.isrealtime and i_sec > 0
    if not na(time_close)
        int time_left_ms = time_close - timenow
        int threshold_ms = i_sec * MS_PER_SEC
        
        if time_left_ms > threshold_ms
            is_draw_ready := false


// ==============================================================================
// 【05】 このコード固有の計算仕様 (Specific Indicator Logic)
// ==============================================================================
// 1. インジケーター固有の純粋な数学的処理
[macdLine, signalLine, histLine] = ta.macd(i_src, i_fast, i_slow, i_sig)

// 2. ロジックの完全な隔離と差し替えの容易性

// 3. 視覚的装飾の排除とデータの引き渡し
float final_macd = is_draw_ready ? macdLine : na
float final_sig  = is_draw_ready ? signalLine : na
float final_hist = is_draw_ready ? histLine : na


// ==============================================================================
// 【06】 描画と出力 (Rendering & Outputs)
// ==============================================================================
// 1. チャートへの視覚的出力(プロットと装飾)
// ヒストグラムの増減に応じた色分け(透明度で強弱を表現)
color hist_color = final_hist >= 0 ? (final_hist > final_hist[1] ? i_col_h_up : color.new(i_col_h_up, 50)) : (final_hist < final_hist[1] ? i_col_h_dn : color.new(i_col_h_dn, 50))

plot(final_hist, title="Histogram", style=plot.style_columns, color=hist_color)
plot(final_macd, title="MACD Line", color=i_col_macd, linewidth=2)
plot(final_sig, title="Signal Line", color=i_col_sig, linewidth=2)
hline(0, title="Zero Line", color=color.new(color.gray, 50), linestyle=hline.style_dashed)

// 2. ロジックとデザインの完全分離

// 3. アラート(通知)条件の統合
// ※投資助言を回避するため、方向性を指示する言葉(Buy/Sell等)は使わず、純粋な事実・状態のみを通知します
bool cross_over_sig  = ta.crossover(macdLine, signalLine) and is_draw_ready
bool cross_under_sig = ta.crossunder(macdLine, signalLine) and is_draw_ready
bool cross_over_zero = ta.crossover(macdLine, 0) and is_draw_ready
bool cross_under_zero= ta.crossunder(macdLine, 0) and is_draw_ready

alertcondition(cross_over_sig,  title="MACD Cross Over Signal",  message="MACD line crossed over Signal line")
alertcondition(cross_under_sig, title="MACD Cross Under Signal", message="MACD line crossed under Signal line")
alertcondition(cross_over_zero, title="MACD Cross Over Zero",    message="MACD line crossed over Zero line")
alertcondition(cross_under_zero,title="MACD Cross Under Zero",   message="MACD line crossed under Zero line")

* After setting your preferred colors, please click "Save as default" in the settings tab.
* The indicator may not display correctly unless you follow the steps: Create New -> Indicator -> Paste.