AF_StochZ_Overlay
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «af_stochz_overlay.pine» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
AF_StochZ_Overlay — индикатор для TradingView, отображаемый поверх цены (overlay). Он рассчитывает адаптивный стохастический индикатор с использованием коэффициента эффективности для динамической настройки периода, применяет к нему преобразование Фишера и нормализацию по Z-Score. Индикатор определяет развороты на основе совпадения пивотов стохастика и цены, а также обнаруживает регулярные и скрытые дивергенции.
Индикатор поддерживает дополнительные фильтры: фильтр тренда на основе EMA и подтверждение сигналов с помощью линий %K и %D. Все параметры настраиваются пользователем, включая длины, уровни, цвета сигналов и дивергенций.
Для оповещений реализованы шесть условий: бычий и медвежий сигналы, а также регулярная и скрытая бычья и медвежья дивергенция. Результаты отображаются в виде меток на графике с возможностью отрисовки линий дивергенций.
Настройки программы
| Настройка | Описание |
|---|---|
| minLen | Минимальная длина адаптивного периода стохастика. |
| maxLen | Максимальная длина адаптивного периода стохастика. Если задана меньше минимальной, автоматически ограничивается до минимальной длины. |
| erLen | Период расчёта коэффициента эффективности, используемого для адаптивной настройки длины стохастика. |
| smoothK | Период сглаживания линии %K стохастика. |
| smoothD | Период сглаживания сигнальной линии %D стохастика. |
| useKDFilter | При активации сигнал BUY требует пересечение %K сверху %D, а сигнал SELL — пересечение %K снизу %D. |
| zLen | Период расчёта среднего и стандартного отклонения для нормализации стохастика по Z-Score. |
| oscPivotBars | Количество баров слева и справа для определения пивотов осциллятора. Чем больше значение, тем меньше, но более надёжных сигналов генерируется. |
| osLevel | Порог перепроданности Z-Score для определения разворотных точек осциллятора. |
| obLevel | Порог перекупленности Z-Score для определения разворотных точек осциллятора. |
| pricePivotL | Количество баров слева для определения пивотов цены при подтверждении сигналов. |
| pricePivotR | Количество баров справа для определения пивотов при подтверждении сигналов. |
| maxPriceLag | Максимальное допустимое количество баров задержки между пивотом осциллятора и пивотом цены для подтверждения сигнала. |
| colLeadBull | Цвет метки для бычьего сигнала (BUY) на графике. |
| colLeadBear | Цвет метки для медвежьего сигнала (SELL) на графике. |
| useTrendFilter | При активации бычьи сигналы генерируются только при цене выше EMA, а медвежьи — только при цене ниже EMA. |
| trendEmaLen | Период экспоненциальной скользящей средней, используемой в фильтре тренда. |
| showRegularDiv | Включает поиск и отображение регулярных дивергенций на графике. |
| showHiddenDiv | Включает поиск и отображение скрытых дивергенций на графике. |
| showDivLines | Включает отображение линий, соединяющих точки дивергенций на графике. |
| divLookbackMin | Минимальное количество баров назад для поиска дивергенций. |
| divLookbackMax | Максимальное количество баров назад для поиска дивергенций. |
| colRegBullDiv | Цвет отображения регулярной бычьей дивергенции на графике. |
| colRegBearDiv | Цвет отображения регулярной медвежьей дивергенции на графике. |
| colHidBullDiv | Цвет отображения скрытой бычьей дивергенции на графике. |
| colHidBearDiv | Цвет отображения скрытой медвежьей дивергенции на графике. |
Поиск по коду файла
indicator("AF_StochZ_Overlay", shorttitle="AF_StochZ_Overlay", overlay=true, max_labels_count=500)
int minLen = input.int(8, "Min Length", minval=1, group="Adaptive Parameters")
int maxLen = input.int(34, "Max Length", minval=1, group="Adaptive Parameters", tooltip="Max Length, Min Length'ten kucuk girilirse otomatik olarak Min Length'e clamp edilir.")
int erLen = input.int(10, "ER Length", minval=1, group="Adaptive Parameters")
int smoothK = input.int(3, "%K Smoothing", minval=1, group="Signal Settings")
int smoothD = input.int(3, "%D Signal", minval=1, group="Signal Settings")
bool useKDFilter = input.bool(false, "Require %K/%D Confirmation", group="Signal Settings", tooltip="Aktifse: BUY sinyali icin %K > %D, SELL sinyali icin %K < %D sarti da aranir.")
int zLen = input.int(20, "Z-Score Length", minval=2, group="Statistical Settings")
int oscPivotBars = input.int(1, "Oscillator Pivot Bars (L=R)", minval=1, maxval=5, group="Statistical Settings", tooltip="Number of left/right bars for oscillator pivot detection. As the value increases, it produces fewer but more reliable signals.")
float osLevel = input.float(-1.0, "Oversold Level (Z-Score)", group="Level Thresholds")
float obLevel = input.float(1.0, "Overbought Level (Z-Score)", group="Level Thresholds")
int pricePivotL = input.int(3, "Price Pivot Left Bars", minval=1, group="Price Pivot Filter")
int pricePivotR = input.int(2, "Price Pivot Right Bars", minval=1, group="Price Pivot Filter")
int maxPriceLag = input.int(5, "Max Lag After Osc Pivot (Bars)", minval=1, maxval=10, group="Price Pivot Filter")
color colLeadBull = input.color(color.green, "Buy Signal Color", group="Color Settings")
color colLeadBear = input.color(color.red, "Sell Signal Color", group="Color Settings")
bool useTrendFilter = input.bool(false, "Use Trend Filter (EMA)", group="Trend Filter", tooltip="If active: BUY signals are generated only when price is above the EMA, SELL signals only when price is below the EMA. Default off (backward compatibility).")
int trendEmaLen = input.int(200, "Trend EMA Length", minval=1, group="Trend Filter")
bool showRegularDiv = input.bool(true, "Show Regular Divergence", group="Divergence Settings")
bool showHiddenDiv = input.bool(true, "Show Hidden Divergence", group="Divergence Settings")
bool showDivLines = input.bool(false, "Show Divergence Lines", group="Divergence Settings")
int divLookbackMin = input.int(5, "Divergence Min Lookback (Bars)", minval=1, group="Divergence Settings")
int divLookbackMax = input.int(60, "Divergence Max Lookback (Bars)", minval=1, group="Divergence Settings")
color colRegBullDiv = input.color(color.green, "Reg. Bullish Div Color", group="Divergence Colors")
color colRegBearDiv = input.color(color.red, "Reg. Bearish Div Color", group="Divergence Colors")
color colHidBullDiv = input.color(color.teal, "Hid. Bullish Div Color", group="Divergence Colors")
color colHidBearDiv = input.color(color.orange, "Hid. Bearish Div Color", group="Divergence Colors")
int safeMaxLen = math.max(maxLen, minLen) // FIX: Min Length > Max Length durumunda cakismayi onler
float change = math.abs(close - close[erLen])
float volatility = ta.sma(math.abs(close - close[1]), erLen) * erLen
float er = volatility != 0 ? change / volatility : 0.0
int adaptiveLen = math.max(minLen, math.min(safeMaxLen, int(math.round(safeMaxLen - er * (safeMaxLen - minLen)))))
float highestHigh = ta.highest(high, adaptiveLen)
float lowestLow = ta.lowest(low, adaptiveLen)
float stochRng = highestHigh - lowestLow
float rawStoch = stochRng != 0 ? ((close - lowestLow) / stochRng) * 100 : 50.0
float stochK = ta.sma(rawStoch, smoothK)
float stochD = ta.sma(stochK, smoothD) // FIX: input previously calculated but never used is now actually used
float stochScaled = math.max(math.min((stochK - 50) / 50, 0.998), -0.998)
float fisherStoch = 0.5 * math.log((1 + stochScaled) / (1 - stochScaled))
float meanZ = ta.sma(fisherStoch, zLen)
float stdDevZ = ta.stdev(fisherStoch, zLen)
float zStochK = stdDevZ != 0 ? (fisherStoch - meanZ) / stdDevZ : 0.0
float trendEma = ta.ema(close, trendEmaLen)
bool bullTrendOK = not useTrendFilter or close > trendEma
bool bearTrendOK = not useTrendFilter or close < trendEma
bool kdBullOK = stochK > stochD
bool kdBearOK = stochK < stochD
float oscPl = ta.pivotlow(zStochK, oscPivotBars, oscPivotBars)
float oscPh = ta.pivothigh(zStochK, oscPivotBars, oscPivotBars)
var int lastValidOscLowBar = na
var int lastValidOscHighBar = na
if not na(oscPl) and oscPl < osLevel and barstate.isconfirmed
lastValidOscLowBar := bar_index - oscPivotBars
if not na(oscPh) and oscPh > obLevel and barstate.isconfirmed
lastValidOscHighBar := bar_index - oscPivotBars
float pricePl = ta.pivotlow(low, pricePivotL, pricePivotR)
float pricePh = ta.pivothigh(high, pricePivotL, pricePivotR)
var int lastFiredBullBar = na
var int lastFiredBearBar = na
bool leadBullSignal = false
bool leadBearSignal = false
int priceLowBar = bar_index - pricePivotR
int priceHighBar = bar_index - pricePivotR
if not na(pricePl) and not na(lastValidOscLowBar) and barstate.isconfirmed and buПоказано первые 50% кода (символов: 8474)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.