OPEN-SOURCE SCRIPT
Aktualisiert

选股器:智能货币突破通道 [AlgoAlpha]

232
Stock Picker: Smart Money Breakout Channel [AlgoAlpha]


Stock Picker: Smart Money Breakout Channel [AlgoAlpha]
Stock Picker: Smart Money Breakout Channel [AlgoAlpha]
Stock Picker: Smart Money Breakout Channel [AlgoAlpha]
Stock Picker: Smart Money Breakout Channel [AlgoAlpha]Stock Picker: Smart Money Breakout Channel [AlgoAlpha]
Stock Picker: Smart Money Breakout Channel [AlgoAlpha]Stock Picker: Smart Money Breakout Channel [AlgoAlpha]
Stock Picker: Smart Money Breakout Channel [AlgoAlpha]Stock Picker: Smart Money Breakout Channel [AlgoAlpha]Stock Picker: Smart Money Breakout Channel [AlgoAlpha]
Versionshinweise
//version=5
// © BigBeluga
// This work is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International
// creativecommons.org/licenses/by-nc-sa/4.0/
// Modified into a screener-friendly indicator.

indicator("Logarithmic Regression Screener Indicator [BigBeluga Mod]", "LogReg Screener Ind [BigBeluga Mod]", overlay=false)

// INPUTS ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{
int length = input.int(100, "Lookback Period", group = "Parameters")
string screener_type = input.string("Log Regression Channel", "Screener Type", options = ["Log Regression Channel", "Logarithmic Regression"], group = "Screener Settings")
// }


// CALCULATIONS――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{
// Function to compute logarithmic regression
f_log_regression(src, length) =>
float sumX = 0.0
float sumY = 0.0
float sumXSqr = 0.0
float sumXY = 0.0

for i = 0 to length - 1
val = math.log(src)
per = i + 1.0
sumX += per
sumY += val
sumXSqr += per * per
sumXY += val * per

slope = (length * sumXY - sumX * sumY) / (length * sumXSqr - sumX * sumX)
average = sumY / length
intercept = average - slope * sumX / length + slope

[slope, intercept]

// Calculate slope and intercept
[slope, intercept] = f_log_regression(close, length)

float start = math.exp(intercept + slope * length)
float end = math.exp(intercept)
// }


// SCREENING LOGIC ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{
// --- Define conditions ---
bool logChannelUp = end > start
bool logChannelDown = end < start
bool logTrendUp = end > end[3]
bool logTrendDown = end < end[3]

// --- Determine the final signal based on user input ---
int screener_signal = 0 // Default to 0 (Neutral)

if screener_type == "Log Regression Channel"
if logChannelUp
screener_signal := 1
else if logChannelDown
screener_signal := -1
else if screener_type == "Logarithmic Regression"
if logTrendUp
screener_signal := 1
else if logTrendDown
screener_signal := -1

// }


// OUTPUT & VISUALS ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{

// Plot the signal for the screener to read. display.none hides it from the chart pane.
plot(screener_signal, "Screener Signal", display = display.none)

// --- Visual Confirmation on Chart ---
// Use background color to show the current state on the chart.
bgcolor(screener_signal == 1 ? color.new(color.green, 80) : screener_signal == -1 ? color.new(color.red, 80) : na, title="Signal Background")

// Plot a simplified visual representation in its own pane
plot(screener_signal, "Signal", style=plot.style_columns, color=(screener_signal == 1 ? color.green : screener_signal == -1 ? color.red : color.gray))

// --- Alerts ---
alertcondition(screener_signal == 1, title="Signal UP", message="{{ticker}}: {{screener_type}} signal is UP")
alertcondition(screener_signal == -1, title="Signal DOWN", message="{{ticker}}: {{screener_type}} signal is DOWN")
// }

Haftungsausschluss

Die Informationen und Veröffentlichungen sind nicht als Finanz-, Anlage-, Handels- oder andere Arten von Ratschlägen oder Empfehlungen gedacht, die von TradingView bereitgestellt oder gebilligt werden, und stellen diese nicht dar. Lesen Sie mehr in den Nutzungsbedingungen.