Smart Money Concepts - CZ INDICATORSThe "Smart Money Concepts by CZ INDICATORS ✅" indicator is designed to offer traders a comprehensive tool that integrates multiple advanced features to aid in market analysis. By combining order blocks, liquidity levels, fair value gaps, trendlines, and market structure analysis, the indicator provides a holistic approach to understanding market dynamics and making informed trading decisions.
Components and Their Integration:
Order Blocks and Breaker Blocks Detection
Functionality: Order blocks represent areas where significant buying or selling occurred, creating potential support or resistance zones. Breaker blocks signal potential reversals.
Integration: By detecting and visualizing these blocks, the indicator helps traders identify key levels where price might react, aiding in entry and exit decisions. The customizable settings allow traders to adjust the visibility and parameters to suit their specific trading strategy.
Liquidity Levels Analysis
Functionality: Liquidity levels indicate zones where significant price movements can occur due to the presence of large orders. These are areas where smart money might be executing trades.
Integration: By tracking these high-probability liquidity areas, traders can anticipate potential price movements. Customizable display limits and mitigation strategies ensure that the information is tailored to the trader’s needs, providing precise and actionable insights.
Fair Value Gaps (FVG)
Functionality: Fair value gaps highlight areas where there is an imbalance between buyers and sellers. These gaps often represent potential trading opportunities.
Integration: The ability to identify and analyze FVGs helps traders spot potential entries based on market inefficiencies. The touch and break detection functionalities provide further refinement, enhancing the precision of trading signals.
Trendlines
Functionality: Trendlines help in identifying the direction of the market and potential reversal points. The additional trendline adds a layer of confirmation for breaks or retests.
Integration: Automatically drawn trendlines assist traders in visualizing market trends and making decisions about potential entries and exits. The additional trendline for stronger confirmation reduces the risk of false signals, providing more reliable trading opportunities.
Market Structure Analysis
Functionality: Understanding market structure is crucial for identifying key support and resistance levels and overall market dynamics. This component displays internal, external, and composite market structures.
Integration: By automatically highlighting shifts in market structure, the indicator helps traders recognize important levels and potential changes in market direction. This analysis is critical for strategic planning and execution in trading.
Customizable Alerts
Functionality: Alerts ensure that traders do not miss significant market events, such as the formation or breach of order blocks, liquidity levels, and trendline interactions.
Integration: Customizable alerts enhance the user experience by providing timely notifications of key events. This feature ensures that traders can act quickly and efficiently, leveraging the insights provided by the indicator.
Interactive Visualization
Functionality: Customizable visual aspects of the indicator allow traders to tailor the display to their preferences and trading style.
Integration: This feature enhances user engagement and usability, making it easier for traders to interpret the data and make informed decisions. Personalization options like colors, styles, and display formats improve the overall effectiveness of the indicator.
Индикатор «Smart Money Concepts by CZ INDICATORS ✅» разработан для того, чтобы предложить трейдерам комплексный инструмент, объединяющий множество передовых функций для помощи в анализе рынка. Объединяя блоки ордеров, уровни ликвидности, разрывы справедливой стоимости, линии тренда и анализ структуры рынка, индикатор обеспечивает целостный подход к пониманию динамики рынка и принятию обоснованных торговых решений.
Компоненты и их интеграция:
Блоки ордеров и обнаружение блоков брейкеров
Функциональные возможности: Блоки ордеров представляют собой области, где происходили значительные покупки или продажи, создавая потенциальные зоны поддержки или сопротивления. Блоки разрыва сигнализируют о потенциальных разворотах.
Интеграция: Обнаруживая и визуализируя эти блоки, индикатор помогает трейдерам определить ключевые уровни, на которых цена может отреагировать, помогая принимать решения о входе и выходе. Настраиваемые параметры позволяют трейдерам регулировать видимость и параметры в соответствии с их конкретной торговой стратегией.
Анализ уровней ликвидности
Функциональные возможности: Уровни ликвидности указывают на зоны, где могут происходить значительные движения цены из-за наличия крупных ордеров. Это зоны, где «умные деньги» могут совершать сделки.
Интеграция: Отслеживая эти высоковероятные зоны ликвидности, трейдеры могут предвидеть потенциальные движения цен. Настраиваемые лимиты отображения и стратегии смягчения последствий обеспечивают адаптацию информации к потребностям трейдера, предоставляя точные и действенные сведения.
Пробелы в справедливой стоимости (FVG)
Функциональные возможности: Разрывы справедливой стоимости выявляют области, где существует дисбаланс между покупателями и продавцами. Эти разрывы часто представляют собой потенциальные торговые возможности.
Интеграция: Возможность выявления и анализа FVG помогает трейдерам обнаружить потенциальные входы на основе рыночной неэффективности. Функции обнаружения касаний и прорывов обеспечивают дальнейшее совершенствование, повышая точность торговых сигналов.
Линии тренда
Функциональные возможности: Линии тренда помогают определить направление движения рынка и потенциальные точки разворота. Дополнительная линия тренда добавляет уровень подтверждения для прорывов или ретестов.
Интеграция: Автоматически нарисованные линии тренда помогают трейдерам визуализировать рыночные тенденции и принимать решения о потенциальных входах и выходах. Дополнительная линия тренда для более сильного подтверждения снижает риск ложных сигналов, предоставляя более надежные торговые возможности.
Анализ структуры рынка
Функциональность: Понимание структуры рынка имеет решающее значение для определения ключевых уровней поддержки и сопротивления и общей динамики рынка. Этот компонент отображает внутреннюю, внешнюю и составную структуру рынка.
Интеграция: Автоматически выделяя сдвиги в структуре рынка, индикатор помогает трейдерам распознать важные уровни и потенциальные изменения в направлении рынка. Этот анализ крайне важен для стратегического планирования и исполнения в торговле.
Настраиваемые оповещения
Функциональные возможности: Оповещения позволяют трейдерам не пропустить значимые события на рынке, такие как формирование или разрушение блоков ордеров, уровень ликвидности и взаимодействие линий тренда.
Интеграция: Настраиваемые оповещения повышают удобство работы, обеспечивая своевременное уведомление о ключевых событиях. Благодаря этой функции трейдеры могут действовать быстро и эффективно, используя информацию, предоставляемую индикатором.
Интерактивная визуализация
Функциональность: Настраиваемые визуальные аспекты индикатора позволяют трейдерам адаптировать отображение в соответствии со своими предпочтениями и стилем торговли.
Интеграция: Эта функция повышает вовлеченность пользователей и удобство использования, облегчая трейдерам интерпретацию данных и принятие обоснованных решений. Такие возможности персонализации, как цвета, стили и форматы отображения, повышают общую эффективность индикатора.
التحليل الأساسي
SuperTrend Machine - CZ INDICATORS🤖 SuperTrend Machine CZ INDICATORS - Take Your Trading to the Next Level! ✨
Introducing the SuperTrend Machine, an advanced trading indicator designed to adapt to market volatility dynamically using machine learning techniques. This indicator employs k-means clustering to categorize market volatility into high, medium, and low levels, enhancing the traditional SuperTrend strategy. Perfect for traders who want an edge in identifying trend shifts and market conditions.
What is K-Means Clustering and How It Works
K-means clustering is a machine learning algorithm that partitions data into distinct groups based on similarity. In this indicator, the algorithm analyzes ATR (Average True Range) values to classify volatility into three clusters: high, medium, and low. The algorithm iterates to optimize the centroids of these clusters, ensuring accurate volatility classification.
Key Features
🎨 Customizable Appearance: Adjust colors for bullish and bearish trends.
🔧 Flexible Settings: Configure ATR length, SuperTrend factor, and initial volatility guesses.
📊 Volatility Classification: Uses k-means clustering to adapt to market conditions.
📈 Dynamic SuperTrend Calculation: Applies the classified volatility level to the SuperTrend calculation.
🔔 Alerts: Set alerts for trend shifts and volatility changes.
📋 Data Table Display: View cluster details and current volatility on the chart.How It Works
How It Works
The indicator begins by calculating the ATR values over a specified training period to assess market volatility. Initial guesses for high, medium, and low volatility percentiles are inputted. The k-means clustering algorithm then iterates to classify the ATR values into three clusters. This classification helps in determining the appropriate volatility level to apply to the SuperTrend calculation. As the market evolves, the indicator dynamically adjusts, providing real-time trend and volatility insights. The indicator also incorporates a data table displaying cluster centroids, sizes, and the current volatility level, aiding traders in making informed decisions.
🤖 SuperTrend Machine CZ INDICATORS - выведите свою торговлю на новый уровень! ✨
Представляем SuperTrend Machine, продвинутый торговый индикатор, разработанный для динамической адаптации к волатильности рынка с помощью методов машинного обучения. Этот индикатор использует кластеризацию k-means для классификации волатильности рынка на высокий, средний и низкий уровни, усиливая традиционную стратегию SuperTrend. Идеально подходит для трейдеров, которые хотят получить преимущество в определении смены тренда и рыночных условий.
Что такое кластеризация K-Means и как она работает
Кластеризация K-Means - это алгоритм машинного обучения, который разделяет данные на отдельные группы на основе сходства. В данном индикаторе алгоритм анализирует значения ATR (Average True Range), чтобы разделить волатильность на три кластера: высокая, средняя и низкая. Алгоритм проводит итерации для оптимизации центроидов этих кластеров, обеспечивая точную классификацию волатильности.
Ключевые особенности
🎨 Настраиваемый внешний вид: Настройте цвета для бычьих и медвежьих трендов.
🔧 Гибкие настройки: Настройте длину ATR, фактор SuperTrend и начальные предположения о волатильности.
📊 Классификация волатильности: Использует кластеризацию k-means для адаптации к рыночным условиям.
📈 Расчет динамического супертренда: Применяет классифицированный уровень волатильности для расчета Супертренда.
🔔 Оповещения: Установка предупреждений о смене тренда и изменении волатильности.
📋 Отображение таблицы данных: Просмотр подробной информации о кластере и текущей волатильности на графике.Как это работает
Как это работает
Индикатор начинает работу с расчета значений ATR за определенный период обучения для оценки волатильности рынка. Вводятся начальные предположения о перцентилях высокой, средней и низкой волатильности. Затем алгоритм кластеризации k-means проводит итерации для классификации значений ATR по трем кластерам. Эта классификация помогает определить подходящий уровень волатильности для расчета SuperTrend. По мере развития рынка индикатор динамически подстраивается, предоставляя в реальном времени информацию о тренде и волатильности. Индикатор также включает в себя таблицу данных, в которой отображаются центроиды кластеров, их размеры и текущий уровень волатильности, что помогает трейдерам принимать обоснованные решения.
Premium structure - Higher High / Lower low - CZ INDICATORSThe best indicator on the Higher High - Lower low system.
This script identifies Orderblocks, Breakerblocks and Range using higher order pivots and priceaction logic.
I tried to reduce the number of blocks to make the chart cleaner, for this purpose I use only second order pivots for both MSB lines and supply/demand boxes, I also tried to filter out shifts in MS and false breakouts.
Green arrows show our lows, red arrows show our highs. This is done in order to clearly and clearly understand the current trend.
Also added order block, and breaker block.
Any box has GRAY color until it gets tested.
After successful test box gets colors:
RED for Supply
GREEN for Demand
BLUE for any Breakerblocks
For cleaner chart and script speed all broken boxes deletes from chart.
It gives comparatively clean chart on any TF, even on extra small (5m, 3m, 1m).
Лучший индикатор по системе Higher High - Lower Low.
Этот скрипт определяет ордерные блоки, брейкерные блоки и диапазоны, используя развороты высшего порядка и логику ценовых действий.
Я попытался уменьшить количество блоков, чтобы сделать график чище, для этого я использую только развороты второго порядка для линий MSB и блоков спроса/предложения, я также попытался отфильтровать сдвиги в MS и ложные прорывы.
Зеленые стрелки показывают наши минимумы, красные - максимумы. Это сделано для того, чтобы четко и ясно понимать текущий тренд.
Также добавлен блок ордеров и блок пробоев.
Любой блок имеет серый цвет до тех пор, пока он не будет протестирован.
После успешного тестирования блок приобретает цвет:
КРАСНЫЙ для предложения
ЗЕЛЕНЫЙ для спроса
СИНИЙ для любых блоков прерывателей.
Для более чистого графика и скорости работы скрипта все сломанные блоки удаляются с графика.
Это дает сравнительно чистый график на любом ТФ, даже на сверхмалых (5м, 3м, 1м).
SUPER EMA 10/25/75/200/300 - CZ INDICATORSSUPER EMA
5 ema on one chart, with possible customization.
5 ema на одном графике, с возможностью настройки.
Taka Swing Didi Index// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
// © Ltardi
//@version=6
// Didi Index script may be freely distributed under the MIT license.
indicator('Taka Swing Didi Index')
curtaLength = input(title = 'Curta (Short) Length', defval = 3)
mediaLength = input(title = 'Media (Medium) Length', defval = 8)
longaLength = input(title = 'Longa (Long) Length', defval = 50)
src = input(title = 'Source', defval = close)
applyFilling = input(title = 'Apply Ribbon Filling ?', defval = true)
highlightCrossovers = input(title = 'Highlight Crossovers ?', defval = true)
media = ta.sma(src, mediaLength)
curta = ta.sma(src, curtaLength) / media
longa = ta.sma(src, longaLength) / media
curtaPlot = plot(curta, title = 'Curta', color = color.rgb(9, 192, 233))
plot(1, title = 'Media', color = color.rgb(230, 124, 11))
longaPlot = plot(longa, title = 'Longa', color = color.rgb(14, 8, 8))
color_1 = color.new(color.white, 100)
fillColor = applyFilling ? curta > longa ? #30e5ef : color.rgb(0, 0, 0) : color_1
fill(curtaPlot, longaPlot, color = fillColor)
avg_1 = math.avg(longa, longa )
plotshape(ta.crossover(curta, longa) and highlightCrossovers ? avg_1 : na, title = 'Crossover', location = location.absolute, style = shape.circle, size = size.tiny, color = color.rgb(81, 195, 79))
avg_2 = math.avg(longa, longa )
plotshape(ta.crossunder(curta, longa) and highlightCrossovers ? avg_2 : na, title = 'Crossunder', location = location.absolute, style = shape.circle, size = size.tiny, color = color.rgb(255, 76, 76))
Bollinger Bands Buy/SellBollinger Bands Overview
Definition:
Bollinger Bands are a technical analysis tool that consists of a middle band and two outer bands.
The middle band is typically a simple moving average (SMA), while the outer bands are placed two standard deviations away from the SMA.
Components
Middle Band:
Usually a 20-period SMA.
Upper Band:
Middle band + (2 x standard deviation).
Lower Band:
Middle band - (2 x standard deviation).
Buy Signals
Price Touches Lower Band:
When the price touches or dips below the lower band, it may indicate that the asset is oversold and can signal a potential buy opportunity.
Bullish Divergence:
If the price makes a lower low while the indicator (like RSI or MACD) makes a higher low. This can signal a future price increase.
Sell Signals
Price Touches Upper Band:
When the price touches or exceeds the upper band, it could suggest that the asset is overbought, signaling a potential sell opportunity.
Bearish Divergence:
When the price makes a higher high while the indicator makes a lower high. This might indicate a price drop in the near future.
Trading Strategy Tips
Avoid Trading in Ranges:
In sideways markets, Bollinger Bands are often unreliable. Consider waiting for a breakout.
Confirmation:
Always look for additional confirmation through other indicators before making a trade decision.
Jacob's Basic strategyExecuting trade ideas using standard OHLC
This is a baseline script
I will be building off of this to get more technical analysis and entry points
noodle Vol CompositionVolume composition of lower timeframes.
Divergences between active volume and regular volume shows undecided participants.
Being able to see the composition of the lower timeframes volume profile helps to see when price is likely to make a strong move in either direction.
Moving Average Crossover SignalThe Moving Average Crossover Signal is a popular technical analysis strategy used in trading to identify potential buy and sell opportunities. It is based on the interaction of two different moving averages—a short-term moving average (fast MA) and a long-term moving average (slow MA).
How It Works:
Bullish Signal (Golden Cross):
Occurs when the short-term moving average crosses above the long-term moving average.
This indicates a potential uptrend, signaling a buy opportunity.
Bearish Signal (Death Cross):
Occurs when the short-term moving average crosses below the long-term moving average.
This suggests a potential downtrend, signaling a sell opportunity.
Common Moving Averages Used:
Short-Term: 9-day, 10-day, or 50-day moving average
Long-Term: 50-day, 100-day, or 200-day moving average
Advantages:
✅ Helps traders identify trends early
✅ Reduces market noise compared to single moving averages
✅ Works well in trending markets
Limitations:
⚠️ May generate false signals in sideways or choppy markets
⚠️ Lagging indicator—signals may come after the price move has already begun
This strategy is widely used in stocks, forex, and crypto trading to enhance decision-making and confirm trend reversals.
EMA + MACD Entry SignalsEMA + MACD Entry Signals Indicator
This indicator combines Exponential Moving Averages (EMAs) and the Moving Average Convergence Divergence (MACD) to identify potential trading entry points for both long and short positions.
Key Features
Displays three EMA lines (9, 20, and 200 periods) for trend identification
Generates entry signals based on EMA alignment and MACD confirmation
Shows alternating signals (long/short) to prevent signal clustering
Provides clear visual cues with green up-arrows for long entries and red down-arrows for short entries
Signal Conditions
Long Entry (Green Arrow)
A green up-arrow appears when all these conditions are met:
9 EMA > 20 EMA and 9 EMA > 200 EMA
MACD histogram > 0
MACD line > Signal line and MACD line > 0
No previous long signal is active (signals alternate)
Short Entry (Red Arrow)
A red down-arrow appears when all these conditions are met:
20 EMA > 9 EMA and 20 EMA > 200 EMA
MACD histogram < 0
Signal line > MACD line and MACD line < 0
No previous short signal is active (signals alternate)
Trading Application
This indicator is designed to help traders identify potential trend-following entry points with multiple confirmations, reducing false signals through both EMA and MACD alignment requirements.
Commitment of Traders: Dual Currency with Change SummaryCommitment of Traders: Dual Currency with Change Summary
Übersicht
Der Commitment of Traders: Dual Currency with Change Summary ist ein leistungsstarker Indikator, der die Commitment of Traders (COT)-Daten für zwei Währungen (Base und Quote) in Echtzeit analysiert und visualisiert. Er bietet eine detaillierte Zusammenfassung der Positionen großer Händler, kleiner Händler und kommerzieller Hedger sowie deren prozentuale Veränderungen im Vergleich zum Vorwochenwert. Mit diesem Indikator können Trader fundierte Entscheidungen auf der Grundlage von COT-Daten treffen und Markttrends besser verstehen.
Hauptfunktionen
Dual Currency Analysis:
Zeigt COT-Daten für Base Currency und Quote Currency an.
Unterstützt verschiedene Währungsmodi (Auto, Root, Base Currency, Currency).
Change Summary Table:
Zeigt die aktuellen und vorherigen Werte für große Händler, kleine Händler und kommerzielle Hedger.
Berechnet die prozentuale Veränderung und die absolute Differenz im Vergleich zum Vorwochenwert.
Flexible Anzeigeoptionen:
Wähle zwischen Long, Short, Long + Short, Long - Short und Long %.
Entscheide, ob Futures, Optionen oder beides angezeigt werden sollen.
Farbliche Hervorhebungen:
Base Currency-Zeilen werden in Grün hinterlegt.
Quote Currency-Zeilen werden in Rot hinterlegt.
Positive prozentuale Veränderungen werden in Grün hervorgehoben, negative in Rot.
Benutzerfreundliche Steuerung:
Einfache Aktivierung/Deaktivierung von Metriken über Checkboxen.
Möglichkeit, den CFTC-Code manuell zu überschreiben.
Anwendungsfälle
Trendbestätigung: Nutze die COT-Daten, um langfristige Markttrends zu bestätigen oder zu widerlegen.
Sentiment-Analyse: Analysiere das Marktsentiment großer Händler und kommerzieller Hedger.
Handelsentscheidungen: Treffe fundierte Entscheidungen basierend auf den Positionen und Veränderungen der Marktteilnehmer.
Vergleiche: Vergleiche die COT-Daten zweier Währungen, um relative Stärken und Schwächen zu identifizieren.
Warum dieser Indikator?
Echtzeit-Daten: Zugriff auf aktuelle COT-Daten direkt in TradingView.
Benutzerfreundlich: Einfache Konfiguration und intuitive Bedienung.
Visuell ansprechend: Klare farbliche Hervorhebungen für schnelle Interpretation.
Flexibel: Anpassbar an verschiedene Handelsstile und Strategien.
Einstellungen
Base Currency Mode: Wähle den Modus für die Base Currency (Auto, Root, Base Currency, Currency).
Quote Currency Mode: Wähle den Modus für die Quote Currency (Auto, Root, Base Currency, Currency).
Futures/Options: Entscheide, ob Futures, Optionen oder beide angezeigt werden sollen.
Display: Wähle die Anzeigeoption (Long, Short, Long + Short, Long - Short, Long %).
CFTC Code: Überschreibe den automatisch ermittelten CFTC-Code manuell.
Show Change Summary Table: Aktiviere oder deaktiviere die Zusammenfassungstabelle.
Beispiel
Base Currency: EUR (Euro)
Quote Currency: USD (US-Dollar)
Change Summary:
Base Large Traders: Vorheriger Wert = -56, Aktueller Wert = -46, Veränderung = +17.86% (Grün)
Quote Commercial Hedgers: Vorheriger Wert = 120, Aktueller Wert = 110, Veränderung = -8.33% (Rot)
Hinweise
Die COT-Daten werden wöchentlich von der CFTC veröffentlicht und sind mit einer Verzögerung von einigen Tagen verfügbar.
Der Indikator ist ideal für langfristige Trader und Investoren, die fundierte Entscheidungen auf der Grundlage von Marktsentiment-Daten treffen möchten.
Viel Spaß beim Trading!
Nutze den Commitment of Traders: Dual Currency with Change Summary, um deine Trading-Strategien zu verbessern und fundierte Entscheidungen auf der Grundlage von COT-Daten zu treffen. Bei Fragen oder Feedback kannst du mich gerne kontaktieren!
AI-Enhanced NKD CME Trading StrategyFor day trader who interested in trading Nikkei225 NKD in CME future market
สรุปผลการดำเนินงานของพอร์ตการลงทุนสคริปต์นี้ได้มาจากการนำโค้ด code ของ QuantNomad มาปรับแต่งดัดให้เหมาะกับผู้ใช้ชาวไทย เครดิตทั้งหมดขอมอบให้ QuantNomad
วัตถุประสงค์การใช้งาน
เพื่อจำลองพอร์ตการลงทุน โดยสคริปต์นี้จะใช้การลงทุนแบบครั้งเดียว (Lump Sum) ผู้ใช้งานสามารถเลือกวันเริ่มต้นและวันสิ้นสุดการลงทุน รวมถึงสามารถนำเงินปันผลที่ได้รับมาร่วมคำนวณผลตอบแทนได้ โดยเปรียบเทียบกับดัชนีชี้วัด (Benchmark) ที่ต้องการ
วิธีการใช้งาน
* ตั้งค่าตาราง: เลือกตารางที่จะแสดงผล กำหนดตำแหน่ง และสีได้ตามความเหมาะสม
* ตั้งค่ากราฟ: เลือกตำแหน่ง สีพื้นหลัง รูปแบบแท่งกราฟ และเลือกช่วงเวลาที่ต้องการแสดงผลตอบแทน ค่าเริ่มต้นคือ "รายไตรมาส"
* กำหนดเงินลงทุนเริ่มต้น วันเริ่มต้น และวันสิ้นสุด
* เลือกสินทรัพย์หรือดัชนีที่จะใช้เป็นดัชนีชี้วัด (Benchmark)
* กำหนดการปรับสมดุลพอร์ต (Rebalance)
* กำหนดผลตอบแทนที่ปราศจากความเสี่ยง (Risk Free) ค่าเริ่มต้นคือ พันธบัตรรัฐบาลไทยอายุ 10 ปี (TH10Y)
* เลือกสินทรัพย์ที่จะลงทุนและกำหนดสัดส่วนของแต่ละสินทรัพย์ในพอร์ต
คำเตือน
* ผลการดำเนินงานในอดีตไม่ได้รับประกันผลลัพธ์ในอนาคต การลงทุนที่เคยได้กำไรไม่ได้หมายความว่าครั้งต่อไปจะได้กำไรเหมือนเดิม
* ตลาดมีการเปลี่ยนแปลงอยู่เสมอ กลยุทธ์ที่ได้ผลในอดีตอาจไม่ได้ผลในปัจจุบัน เนื่องจากมีปัจจัยหลายอย่างที่เปลี่ยนแปลงไป เช่น เศรษฐกิจ ข่าวสาร หรือความรู้สึกของนักลงทุน
* ข้อมูลนี้เป็นเพียงข้อมูลทั่วไป ไม่ใช่คำแนะนำในการซื้อหรือขาย ผู้ใช้งานต้องตัดสินใจด้วยตนเองและควรศึกษาข้อมูลให้ดีก่อนตัดสินใจลงทุน
หวังว่าสคริปต์นี้จะช่วยนักลงทุนได้บ้าง หากมีข้อเสนอแนะอะไร สามารถโพสต์ทิ้งไว้ได้เลยครับ โค้ดนี้เป็น Open Source (เปิดเผยซอร์สโค้ดให้ผู้อื่นสามารถนำไปศึกษา แก้ไข และพัฒนาต่อได้) ซึ่งปรับปรุงมาจาก code ของ QuantNomad
FAQ:
Q: ใช้สินทรัพย์อื่นที่ไม่อยู่ในตลาดไทยได้ไหม? A: ได้ ท่านสามารถใช้ได้ทุกสินทรัพย์ที่มีอยู่ใน Tradingview เช่น BTC, GOOGL
Q: Benchmarks (ดัชนีชี้วัด) และ Risk Free (ผลตอบแทนที่ปราศจากความเสี่ยง เช่น พันธบัตร) สามารถเปลี่ยนได้ไหม? A: ได้ สามารถเปลี่ยนในการตั้งค่าเริ่มต้น
RSI Long/Short Signals// Estratégia de Sinais Long e Short baseada apenas no RSI
//@version=6
indicator('RSI Long/Short Signals', overlay = true)
// Definição do RSI
rsi = ta.rsi(close, 14)
// Condições para LONG
long_condition = rsi < 25
// Condições para SHORT
short_condition = rsi > 75
// Plotando Sinais
plotshape(long_condition, location = location.belowbar, color = color.green, style = shape.labelup, title = 'LONG Signal')
plotshape(short_condition, location = location.abovebar, color = color.red, style = shape.labeldown, title = 'SHORT Signal')
// Alertas
if long_condition
alert('Sinal de LONG: RSI < 30 (Sobrevendido)', alert.freq_once_per_bar_close)
if short_condition
alert('Sinal de SHORT: RSI > 70 (Sobrecomprado)', alert.freq_once_per_bar_close)
Time Zone & SessionsThis Pine Script indicator highlights major trading sessions (New York, London, Tokyo, Sydney) with customizable time zones. It supports two custom sessions and dynamically blends colors when sessions overlap (e.g., London & New York). The script also includes alerts for session openings.
VWAP + Momentum ReversalJust a work in progress to see what works, have generated some code with VWAP, RSI, MACD in order to get the most accurate representation
FinFluential Global M2 Money Supply // Days Offset =The "Global M2 Money Supply" indicator calculates and visualizes the combined M2 money supply from multiple countries and regions worldwide, expressed in trillions of USD.
M2 is a measure of the money supply that includes cash, checking deposits, and easily convertible near-money assets. This indicator aggregates daily M2 data from various economies, converts them into a common USD base using forex exchange rates, and plots the total as a single line on the chart.
It is designed as an overlay indicator aligned to the right scale, making it ideal for comparing global money supply trends with price action or other market data.
Key Features
Customizable Time Offset: Users can adjust the number of days to shift the M2 data forward or backward (from -1000 to +1000 days) via the indicator settings. This allows for alignment with historical events or forward-looking analysis.
Global Coverage Includes:
Eurozone: Eurozone M2 (converted via EUR/USD)
North America: United States, Canada
Non-EU Europe: Switzerland, United Kingdom, Finland, Russia
Pacific: New Zealand
Asia: China, Taiwan, Hong Kong, India, Japan, Philippines, Singapore
Latin America: Brazil, Colombia, Mexico
Middle East: United Arab Emirates, Turkey
Africa: South Africa
RSI, CCI & ADX CompositeThe RSI and CCI signals are simplified—if the RSI is above 50 it’s counted as bullish, if below it’s bearish; similarly, if the CCI is above 0 it’s bullish, below 0 it’s bearish. • The ADX is calculated manually and used as a filter. When ADX isn’t strong (below a user‑defined threshold) the composite signal simply reads “No Clear Trend.” A composite signal is then built from the two signals (RSI + CCI) and interpreted as “Strong Bullish,” “Bullish,” “Neutral,” “Bearish,” or “Strong Bearish.” In addition to simple plots of the individual indicators, a table is displayed in the top‑right corner showing numeric values (RSI, CCI, and ADX) as well as the composite signal text.
Spekulator Maliyet Analizi Pro V4//@version=6
indicator('Spekulator Maliyet Analizi Pro V4', overlay = true, max_labels_count = 500, max_lines_count = 500)
// =================== GLOBAL DEĞİŞKENLER ===================
// Trend değişkenleri
var bool uptrend = false
var float last_swing_low = na
var float last_swing_high = na
var int last_swing_low_index = na
var int last_swing_high_index = na
// Maliyet değişkenleri
var float alis_maliyeti = na
var float satis_maliyeti = na
var float alis_maliyeti_alt = na
var float alis_maliyeti_ust = na
var float satis_maliyeti_alt = na
var float satis_maliyeti_ust = na
// Pozisyon değişkenleri
var bool pozisyonda = false
var bool son_islem_alis = false
var float giris_fiyati = na
var float cikis_fiyati = na
var int son_giris_cikis_zamani = 0
var float max_kar = 0.0
var float max_zarar = 0.0
var float curr_kar = 0.0
var bool olasi_alis = false
var bool olasi_satis = false
var bool alis_sinyal = false
var bool satis_sinyal = false
var float trailing_stop_seviyesi = na
var float trailing_stop_max = na
var float trailing_stop_min = na
var bool alis_yapildi = false
var bool satis_yapildi = false
// Sinyal kosullari
var bool alis_kosul_1 = false
var bool satis_kosul_1 = false
var bool alis_filtre = false
var bool satis_filtre = false
var bool alis_ek_kosul = false
var bool satis_ek_kosul = false
var bool alis_pozisyon_kosul = false
var bool satis_pozisyon_kosul = false
var bool pozisyon_kisitlama_alis = false
var bool pozisyon_kisitlama_satis = false
var bool alis_crossover = false
var bool satis_crossunder = false
var float olasi_alis_seviyesi = na
var float olasi_satis_seviyesi = na
// Crossover/Crossunder değişkenleri
var bool alis_tp_crossover = false
var bool satis_tp_crossunder = false
var bool alis_sl_crossunder = false
var bool satis_sl_crossover = false
var bool trailing_stop_crossunder = false
// Pre-calculated check variables
var bool alis_tp_crossover_check = false
var bool alis_sl_crossunder_check = false
var bool satis_tp_crossunder_check = false
var bool satis_sl_crossover_check = false
var bool trailing_stop_crossunder_check = false
// POC değişkenleri (Point of Control)
var float poc_fiyat = na
var float poc_hacim = 0.0
var float poc_yuzde = 0.0
var float rsi = na
var float rsi_deger = na
var bool rsi_alis_kosul = true
var bool rsi_satis_kosul = true
var float alis_sl = na
var float alis_tp = na
var float satis_sl = na
var float satis_tp = na
var color poc_renk = color.white
var string poc_metin = ""
// Volatilite değişkenleri
var float volatilite = na
var float volatilite_ort = na
var float fiyat_degisim_yuzde = 0.0
var bool siradisi_fiyat = false
var bool siradisi_hacim = false
var bool siradisi_volatilite = false
var bool siradisi_hareket = false
var bool siradisi_alis = false
var bool siradisi_satis = false
var bool yukselen_mumlar = false
var bool dusen_mumlar = false
var float swing_yuksek = na
var float swing_dusuk = na
var float hacim_orani = 0.0
var float vol_sma = 0.0
var bool yuksek_hacim = false
var table table_obj = na
// VPVR Değişkenleri
var float vpvr_poc_fiyat = na
var bool vpvr_ustunde = false
var color vpvr_poc_renk = color.gray
var string vpvr_poc_metin = ""
var float vpvr_poc_hacim = 0.0
var float vpvr_poc_yuzde = 0.0
// Histogram veri dizileri
var float vpvr_histogram_alt_liste = array.new_float()
var float vpvr_histogram_ust_liste = array.new_float()
var float vpvr_histogram_fiyat_liste = array.new_float()
var float vpvr_histogram_alim_hacmi_liste = array.new_float()
var float vpvr_histogram_satim_hacmi_liste = array.new_float()
var float vpvr_histogram_hacim_yuzde_liste = array.new_float()
// Görsel objeler için diziler
var box vpvr_alim_kutulari = array.new_box()
var box vpvr_satim_kutulari = array.new_box()
var line vpvr_cizgiler = array.new_line()
// =================== GORSEL AYARLAR ===================
g_grup1 = "Gorsel Ayarlar - Renkler"
i_alis_renk = input.color(color.green, "Alis Bölgesi Rengi", group=g_grup1)
i_satis_renk = input.color(color.red, "Satis Bölgesi Rengi", group=g_grup1)
i_ok_renk_alis = input.color(color.green, "Alis Ok Rengi", group=g_grup1)
i_ok_renk_satis = input.color(color.red, "Satis Ok Rengi", group=g_grup1)
i_olasi_alis_renk = input.color(color.new(color.green, 50), "Olası Alış Rengi", group=g_grup1)
i_olasi_satis_renk = input.color(color.new(color.red, 50), "Olası Satış Rengi", group=g_grup1)
i_sl_renk = input.color(color.red, "Stop Loss Rengi", group=g_grup1)
i_tp_renk = input.color(color.green, "Take Profit Rengi", group=g_grup1)
i_panel_yazi_renk = input.color(color.white, "Panel Yazı Rengi", group=g_grup1)
i_panel_baslik_renk = input.color(color.yellow, "Panel Başlık Rengi", group=g_grup1)
i_panel_renk = input.color(color.new(color.black, 90), "Panel Arka Plan Rengi", group=g_grup1)
g_grup2 = "Gorsel Ayarlar - Stil"
i_cizgi_kalinlik = input.int(2, "Ana Çizgi Kalınlığı", minval=1, maxval=4, group=g_grup2)
i_sl_tp_kalinlik = input.int(1, "SL/TP Çizgi Kalınlığı", minval=1, maxval=4, group=g_grup2)
i_panel_konum = input.string("Sag Üst", "Panel Konumu", options= , group=g_grup2)
i_panel_saydamlik = input.int(50, "Panel Saydamlığı", minval=0, maxval=100, group=g_grup2)
g_grup3 = "Hesaplama - Swing Ayarları"
i_swing_periyot = input.int(10, "Swing Periyodu", minval=5, maxval=50, group=g_grup3, tooltip="Swing noktalarını belirlemek için kullanılacak periyot")
i_swing_yuzde = input.float(1.5, "Min. Swing (%)", minval=0.5, step=0.1, group=g_grup3, tooltip="Minimum swing hareketi yüzdesi")
i_swing_onay = input.int(3, "Swing Onay Mumu", minval=1, maxval=5, group=g_grup3, tooltip="Swing noktasının onaylanması için gereken mum sayısı")
i_pivot_lookback = input.int(10, "Pivot Lookback", minval=5, maxval=50, group=g_grup3, tooltip="Pivot noktalarını belirlemek için kullanılacak periyot")
g_grup4 = "Hesaplama - Fibonacci Ayarları"
i_fib_seviye = input.float(0.618, "Ana Fibonacci Seviyesi", minval=0.1, maxval=1.0, step=0.001, group=g_grup4)
i_fib_alt = input.float(0.5, "Alt Fibonacci Seviyesi", minval=0.1, maxval=1.0, step=0.001, group=g_grup4)
i_fib_ust = input.float(0.786, "Üst Fibonacci Seviyesi", minval=0.1, maxval=1.0, step=0.001, group=g_grup4)
g_grup5 = "Risk Yönetimi"
i_sl_yuzde = input.float(1.5, "Stop Loss (%)", minval=0.5, step=0.1, group=g_grup5)
i_tp_yuzde = input.float(3.0, "Take Profit (%)", minval=1.0, step=0.1, group=g_grup5)
i_trailing_stop = input.bool(false, "Trailing Stop Kullan", group=g_grup5)
i_trailing_yuzde = input.float(1.0, "Trailing Stop (%)", minval=0.5, step=0.1, group=g_grup5)
g_grup6 = "Filtreler"
i_rsi_aktif = input.bool(false, "RSI Filtresini Kullan", group=g_grup6)
i_rsi_period = input.int(14, "RSI Periyodu", minval=1, group=g_grup6)
i_rsi_ust = input.int(70, "RSI Üst Sınır", minval=50, maxval=100, group=g_grup6)
i_rsi_alt = input.int(30, "RSI Alt Sınır", minval=0, maxval=50, group=g_grup6)
i_hacim_aktif = input.bool(false, "Hacim Filtresini Kullan", group=g_grup6)
i_hacim_period = input.int(20, "Hacim Ortalama Periyodu", minval=1, group=g_grup6)
i_hacim_carpan = input.float(1.5, "Hacim Çarpanı", minval=1.0, step=0.1, group=g_grup6)
g_grup7 = "Sinyal Ayarları"
i_alis_sinyal_seviyesi = input.float(0.0, "Alış Sinyal Seviyesi (%)", minval=-100, maxval=100, step=0.1, group=g_grup7)
i_satis_sinyal_seviyesi = input.float(0.0, "Satış Sinyal Seviyesi (%)", minval=-100, maxval=100, step=0.1, group=g_grup7)
i_sinyal_tetik_yuzde = input.float(2.0, "Sinyal Mesafesi (%)", minval=0.1, maxval=10.0, step=0.1, group=g_grup7, tooltip="Maliyet seviyesine göre sinyal mesafesi")
i_sinyal_ters_yon = input.bool(true, "Sadece Ters Yön Sinyalleri", group=g_grup7, tooltip="Aktif olduğunda, sadece önceki sinyalin tersi yönünde sinyal üretir")
i_sinyal_pozisyon_kontrol = input.bool(true, "Pozisyon Kontrolü", group=g_grup7, tooltip="Aktif olduğunda, pozisyondayken aynı yönde sinyal üretmez")
g_grup8 = "Olası Sinyal Ayarları"
i_olasi_sinyal_hassasiyeti = input.float(0.5, "Olası Sinyal Hassasiyeti (%)", minval=0.1, maxval=5.0, step=0.1, group=g_grup8)
// =================== YENİ EKLENTİ: SIRA DIŞI HAREKET ALGILAMA ===================
g_grup10 = "Sıra Dışı Hareket Algılama"
i_siradisi_fiyat_yuzde = input.float(3.0, "Ani Fiyat Değişimi (%)", minval=0.5, step=0.1, group=g_grup10, tooltip="Bu yüzdenin üzerindeki ani fiyat değişimleri anormal hareket olarak işaretlenir")
i_siradisi_hacim_carpan = input.float(2.5, "Hacim Artış Çarpanı", minval=1.5, step=0.1, group=g_grup10, tooltip="Normal hacimin bu katı üzerindeki hacimler anormal olarak kabul edilir")
i_siradisi_volatilite_carpan = input.float(2.0, "Volatilite Artış Çarpanı", minval=1.2, step=0.1, group=g_grup10, tooltip="Normal volatilitenin bu katı üzerindeki değerler anormal olarak kabul edilir")
// =================== VOLUME PROFILE VISIBLE RANGE AYARLAR ===================
g_grup_vpvr = "Volume Profile Ayarları"
i_vpvr_aktif = input.bool(false, "VPVR Göster", group=g_grup_vpvr, tooltip="Volume Profile Visible Range özelliğini etkinleştirir")
i_line_renk = input.color(color.new(color.gray, 25), "Üst/Alt Çizgi Rengi", group=g_grup_vpvr)
i_alis_bar_renk = input.color(color.new(color.green, 25), "Alış Bar Rengi", group=g_grup_vpvr)
i_satis_bar_renk = input.color(color.new(color.red, 25), "Satış Bar Rengi", group=g_grup_vpvr)
i_bar_sayisi = input.int(90, "Bar Sayısı", minval=14, maxval=365, group=g_grup_vpvr)
i_son_mumdan_mesafe = input.int(2, "Son Mumdan Mesafe", minval=2, maxval=20, group=g_grup_vpvr)
i_histogram_sayisi = input.int(50, "Histogram Sayısı", minval=10, maxval=200, group=g_grup_vpvr)
i_poc_genislik = input.int(50, "PoC Genişliği", minval=20, maxval=100, group=g_grup_vpvr)
// =================== FONKSİYONLAR ===================
isSwingHigh(index) =>
high > high and high > high and high > high and high > high
isSwingLow(index) =>
low < low and low < low and low < low and low < low
// Olası sinyal fonksiyonları
getOlasiAlisSinyali(curr_close, prev_close, maliyet) =>
result = false
if not na(maliyet)
fark_yuzde = math.abs((curr_close - maliyet) / maliyet * 100)
result := curr_close > prev_close and fark_yuzde <= i_olasi_sinyal_hassasiyeti
result
getOlasiSatisSinyali(curr_close, prev_close, maliyet) =>
result = false
if not na(maliyet)
fark_yuzde = math.abs((curr_close - maliyet) / maliyet * 100)
result := curr_close < prev_close and fark_yuzde <= i_olasi_sinyal_hassasiyeti
result
// Olası sinyal seviyelerini hesaplama fonksiyonları
getOlasiAlisSeviyesi(maliyet) =>
float sonuc = na
if not na(maliyet)
sonuc := maliyet * (1 - i_olasi_sinyal_hassasiyeti/100)
sonuc
getOlasiSatisSeviyesi(maliyet) =>
float sonuc = na
if not na(maliyet)
sonuc := maliyet * (1 + i_olasi_sinyal_hassasiyeti/100)
sonuc
// =================== TEKNİK GÖSTERGELER ===================
// RSI Hesaplama
rsi := ta.rsi(close, i_rsi_period)
rsi_deger := rsi
rsi_alis_kosul := i_rsi_aktif ? rsi < i_rsi_alt : true
rsi_satis_kosul := i_rsi_aktif ? rsi > i_rsi_ust : true
// Hacim Analizi
vol_sma := ta.sma(volume, i_hacim_period)
float yerel_hacim_orani = volume / vol_sma
hacim_orani := yerel_hacim_orani
yuksek_hacim := i_hacim_aktif ? yerel_hacim_orani > i_hacim_carpan : true
// Sıra dışı hareket hesaplamaları
volatilite := ta.atr(14)
volatilite_ort := ta.sma(volatilite, 20)
// Fiyat değişimi hesaplama
fiyat_degisim_yuzde := math.abs((close - close ) / close * 100)
// Sıra dışı hareket sinyalleri
siradisi_fiyat := fiyat_degisim_yuzde > i_siradisi_fiyat_yuzde
siradisi_hacim := hacim_orani > i_siradisi_hacim_carpan
siradisi_volatilite := volatilite > volatilite_ort * i_siradisi_volatilite_carpan
// Genel sıra dışı hareket tespiti (en az ikisi doğru olmalı)
siradisi_hareket := (siradisi_fiyat and siradisi_hacim) or (siradisi_fiyat and siradisi_volatilite) or (siradisi_hacim and siradisi_volatilite)
// Alış veya satış yönünü belirle
siradisi_alis := siradisi_hareket and close > open
siradisi_satis := siradisi_hareket and close < open
// =================== HESAPLAMALAR ===================
// Trend değişkenleri
yukselen_mumlar := close > open
dusen_mumlar := close < open
// =================== SWING HIGH/LOW HESABI ===================
// Swing High/Low hesaplama
swing_yuksek := ta.pivothigh(i_pivot_lookback, i_pivot_lookback)
swing_dusuk := ta.pivotlow(i_pivot_lookback, i_pivot_lookback)
// Son swing high/low güncelleme
if not na(swing_yuksek)
last_swing_high := swing_yuksek
if not na(swing_dusuk)
last_swing_low := swing_dusuk
// Trend belirleme
if not na(last_swing_high) and not na(last_swing_low)
if high > last_swing_high and not uptrend
uptrend := true
if low < last_swing_low and uptrend
uptrend := false
// =================== MALİYET HESABI ===================
// Maliyet değişkenleri daha önce tanımlandı
// Alış maliyeti hesaplama
if uptrend and not na(last_swing_low) and not na(last_swing_high)
fib_range = last_swing_high - last_swing_low
alis_maliyeti := last_swing_high - fib_range * i_fib_seviye
alis_maliyeti_alt := last_swing_high - fib_range * i_fib_alt
alis_maliyeti_ust := last_swing_high - fib_range * i_fib_ust
// Satış maliyeti hesaplama
if not uptrend and not na(last_swing_low) and not na(last_swing_high)
fib_range = last_swing_high - last_swing_low
satis_maliyeti := last_swing_low + fib_range * i_fib_seviye
satis_maliyeti_alt := last_swing_low + fib_range * i_fib_alt
satis_maliyeti_ust := last_swing_low + fib_range * i_fib_ust
// =================== POZİSYON YÖNETİMİ ===================
// Pozisyon değişkenleri zaten daha önce tanımlandı, tekrar etmiyoruz
// Stop ve hedef seviyeleri artık başlangıçta tanımlandığı için yeniden tanımlamıyoruz, sadece değer atıyoruz
alis_sl := na
alis_tp := na
satis_sl := na
satis_tp := na
if not na(alis_maliyeti)
alis_sl := alis_maliyeti * (1 - i_sl_yuzde/100)
alis_tp := alis_maliyeti * (1 + i_tp_yuzde/100)
if not na(satis_maliyeti)
satis_sl := satis_maliyeti * (1 + i_sl_yuzde/100)
satis_tp := satis_maliyeti * (1 - i_tp_yuzde/100)
// =================== SİNYAL HESAPLAMA ===================
var float last_signal_price = na
var int last_signal_type = 0 // 1 = alis, -1 = satis, 0 = sinyal yok
var string last_signal_time = na
var bool last_signal_success = false
var int win_count = 0
var int loss_count = 0
var int total_signals = 0
var string status_text = ""
var color status_color = color.gray
var float profit_pct = 0.0
var float loss_pct = 0.0
var float trail_level = na
// Alış ve satış sinyalleri
alis_crossover := ta.crossover(close, alis_maliyeti * (1 + i_alis_sinyal_seviyesi/100))
satis_crossunder := ta.crossunder(close, satis_maliyeti * (1 + i_satis_sinyal_seviyesi/100))
// Olası sinyal seviyeleri
olasi_alis_seviyesi := getOlasiAlisSeviyesi(alis_maliyeti)
olasi_satis_seviyesi := getOlasiSatisSeviyesi(satis_maliyeti)
// Sinyal koşulları
alis_kosul_1 := alis_crossover
satis_kosul_1 := satis_crossunder
// Sinyal filtreleme
alis_filtre := rsi_alis_kosul and yuksek_hacim
satis_filtre := rsi_satis_kosul and yuksek_hacim
// Ek sinyal kontrolü
alis_ek_kosul := i_sinyal_ters_yon ? last_signal_type <= 0 or not pozisyonda : true
satis_ek_kosul := i_sinyal_ters_yon ? last_signal_type >= 0 or not pozisyonda : true
alis_pozisyon_kosul := i_sinyal_pozisyon_kontrol ? not pozisyonda or not son_islem_alis : true
satis_pozisyon_kosul := i_sinyal_pozisyon_kontrol ? not pozisyonda or son_islem_alis : true
// Pozisyon-bazlı sinyal kısıtlaması (Bu kısıtlama her zaman aktif olacak)
pozisyon_kisitlama_alis := not (pozisyonda and son_islem_alis) // Zaten alis pozisyonundaysak yeni alis sinyali verme
pozisyon_kisitlama_satis := not (pozisyonda and not son_islem_alis) // Zaten satis pozisyonundaysak yeni satis sinyali verme
// Final sinyaller
alis_sinyal := alis_kosul_1 and alis_filtre and alis_ek_kosul and alis_pozisyon_kosul and pozisyon_kisitlama_alis
satis_sinyal := satis_kosul_1 and satis_filtre and satis_ek_kosul and satis_pozisyon_kosul and pozisyon_kisitlama_satis
// Olası sinyaller
olasi_alis := getOlasiAlisSinyali(close, close , alis_maliyeti) and not alis_yapildi and rsi_alis_kosul and not (pozisyonda and son_islem_alis)
olasi_satis := getOlasiSatisSinyali(close, close , satis_maliyeti) and not satis_yapildi and rsi_satis_kosul and not (pozisyonda and not son_islem_alis)
// Sinyal yönetimi
if alis_sinyal
total_signals := total_signals + 1
last_signal_type := 1
last_signal_price := close
last_signal_time := str.format("{0}", timeframe.period)
last_signal_success := false
pozisyonda := true
son_islem_alis := true
giris_fiyati := close
max_kar := 0.0
max_zarar := 0.0
trailing_stop_seviyesi := close * (1 - i_trailing_yuzde/100)
alis_yapildi := true
satis_yapildi := false
status_text := "Alış Sinyali - " + str.tostring(math.round(close, 2))
status_color := i_alis_renk
if satis_sinyal
total_signals := total_signals + 1
last_signal_type := -1
last_signal_price := close
last_signal_time := str.format("{0}", timeframe.period)
last_signal_success := false
pozisyonda := true
son_islem_alis := false
giris_fiyati := close
max_kar := 0.0
max_zarar := 0.0
trailing_stop_seviyesi := close * (1 + i_trailing_yuzde/100)
satis_yapildi := true
alis_yapildi := false
status_text := "Satış Sinyali - " + str.tostring(math.round(close, 2))
status_color := i_satis_renk
// Trailing Stop güncelleme
if i_trailing_stop and pozisyonda
if son_islem_alis
trail_level := close * (1 - i_trailing_yuzde/100)
trailing_stop_seviyesi := math.max(trailing_stop_seviyesi, trail_level)
else
trail_level := close * (1 + i_trailing_yuzde/100)
trailing_stop_seviyesi := math.min(trailing_stop_seviyesi, trail_level)
// TP/SL için crossover/crossunder hesaplamaları
// Calculate crossover/crossunder variables once per bar
alis_tp_crossover_check := ta.crossover(close, alis_tp)
alis_sl_crossunder_check := ta.crossunder(close, alis_sl)
satis_tp_crossunder_check := ta.crossunder(close, satis_tp)
satis_sl_crossover_check := ta.crossover(close, satis_sl)
trailing_stop_crossunder_check := i_trailing_stop and ta.crossunder(close, trailing_stop_seviyesi)
// Update global crossover/crossunder variables
alis_tp_crossover := alis_tp_crossover_check
satis_tp_crossunder := satis_tp_crossunder_check
alis_sl_crossunder := alis_sl_crossunder_check
satis_sl_crossover := satis_sl_crossover_check
trailing_stop_crossunder := trailing_stop_crossunder_check
// Pozisyon takibi
if pozisyonda
if son_islem_alis
curr_kar := (close - giris_fiyati) / giris_fiyati * 100
max_kar := math.max(max_kar, curr_kar)
max_zarar := math.min(max_zarar, curr_kar)
// TP veya SL - Use the check variables
if (alis_tp_crossover_check or (i_trailing_stop ? trailing_stop_crossunder_check : alis_sl_crossunder_check))
pozisyonda := false
alis_yapildi := false
last_signal_type := 0 // Pozisyondan çıkışta signal type'ı sıfırla
if close >= alis_tp
win_count := win_count + 1
last_signal_success := true
profit_pct := profit_pct + i_tp_yuzde
status_text := "Alış TP - Kar: " + str.tostring(math.round(i_tp_yuzde, 2)) + "%"
status_color := i_tp_renk
else
loss_count := loss_count + 1
last_signal_success := false
loss_pct := loss_pct + i_sl_yuzde
status_text := "Alış SL - Zarar: " + str.tostring(math.round(i_sl_yuzde, 2)) + "%"
status_color := i_sl_renk
else
curr_kar := (giris_fiyati - close) / giris_fiyati * 100
max_kar := math.max(max_kar, curr_kar)
max_zarar := math.min(max_zarar, curr_kar)
// TP veya SL
if (satis_tp_crossunder_check or (i_trailing_stop ? trailing_stop_crossunder_check : satis_sl_crossover_check))
pozisyonda := false
satis_yapildi := false
last_signal_type := 0 // Pozisyondan çıkışta signal type'ı sıfırla
if close <= satis_tp
win_count := win_count + 1
last_signal_success := true
profit_pct := profit_pct + i_tp_yuzde
status_text := "Satış TP - Kar: " + str.tostring(math.round(i_tp_yuzde, 2)) + "%"
status_color := i_tp_renk
else
loss_count := loss_count + 1
last_signal_success := false
loss_pct := loss_pct + i_sl_yuzde
status_text := "Satış SL - Zarar: " + str.tostring(math.round(i_sl_yuzde, 2)) + "%"
status_color := i_sl_renk
// =================== GÖRSEL ELEMANLARI ===================
// Maliyet çizgileri
plot(alis_maliyeti, "Alış Maliyeti", color=color.new(i_alis_renk, 0), linewidth=i_cizgi_kalinlik, style=plot.style_linebr)
plot(satis_maliyeti, "Satış Maliyeti", color=color.new(i_satis_renk, 0), linewidth=i_cizgi_kalinlik, style=plot.style_linebr)
// Alt ve üst maliyet seviyeleri
plot(alis_maliyeti_alt, "Alış Alt Seviye", color=color.new(i_alis_renk, 70), linewidth=1, style=plot.style_linebr)
plot(alis_maliyeti_ust, "Alış Üst Seviye", color=color.new(i_alis_renk, 70), linewidth=1, style=plot.style_linebr)
plot(satis_maliyeti_alt, "Satış Alt Seviye", color=color.new(i_satis_renk, 70), linewidth=1, style=plot.style_linebr)
plot(satis_maliyeti_ust, "Satış Üst Seviye", color=color.new(i_satis_renk, 70), linewidth=1, style=plot.style_linebr)
// Stop loss ve take profit çizgileri
plot(alis_sl, "Alış Stop Loss", color=color.new(i_sl_renk, 0), linewidth=i_sl_tp_kalinlik, style=plot.style_circles)
plot(alis_tp, "Alış Take Profit", color=color.new(i_tp_renk, 0), linewidth=i_sl_tp_kalinlik, style=plot.style_circles)
plot(satis_sl, "Satış Stop Loss", color=color.new(i_sl_renk, 0), linewidth=i_sl_tp_kalinlik, style=plot.style_circles)
plot(satis_tp, "Satış Take Profit", color=color.new(i_tp_renk, 0), linewidth=i_sl_tp_kalinlik, style=plot.style_circles)
// Trailing Stop çizgisi
plot(i_trailing_stop and pozisyonda ? trailing_stop_seviyesi : na, "Trailing Stop", color=color.new(i_sl_renk, 30), linewidth=1, style=plot.style_stepline)
// Ana sinyal okları
plotshape(alis_sinyal, "Alış Sinyali", style=shape.triangleup, location=location.belowbar, color=i_ok_renk_alis, size=size.normal)
plotshape(satis_sinyal, "Satış Sinyali", style=shape.triangledown, location=location.abovebar, color=i_ok_renk_satis, size=size.normal)
// Olası sinyal okları ve seviyeleri
plotshape(olasi_alis, "Olası Alış", style=shape.circle, location=location.belowbar, color=i_olasi_alis_renk, size=size.tiny)
plotshape(olasi_satis, "Olası Satış", style=shape.circle, location=location.abovebar, color=i_olasi_satis_renk, size=size.tiny)
// Sıra dışı hareket okları
plotshape(siradisi_alis, "Sıra Dışı Yükseliş", style=shape.diamond, location=location.belowbar, color=color.new(i_alis_renk, 0), size=size.large)
plotshape(siradisi_satis, "Sıra Dışı Düşüş", style=shape.diamond, location=location.abovebar, color=color.new(i_satis_renk, 0), size=size.large)
// =================== VOLUME PROFILE VISIBLE RANGE ===================
// VPVR Hesaplama ve Çizim
if barstate.islast
// Sadece son barda VPVR hesaplamaları yap
if i_vpvr_aktif
// VPVR aktif ise
// Değişkenleri tanımla
float aralik_ust = ta.highest(high, i_bar_sayisi)
float aralik_alt = ta.lowest(low, i_bar_sayisi)
float aralik_yukseklik = aralik_ust - aralik_alt
float poc_fiyat_temp = na
float histogram_yukseklik = aralik_yukseklik / i_histogram_sayisi
// Histogram dizilerini yeniden ayarla
array.clear(vpvr_histogram_alt_liste)
array.clear(vpvr_histogram_ust_liste)
array.clear(vpvr_histogram_fiyat_liste)
array.clear(vpvr_histogram_alim_hacmi_liste)
array.clear(vpvr_histogram_satim_hacmi_liste)
array.clear(vpvr_histogram_hacim_yuzde_liste)
// Histogram dizilerini doldur
for i = 0 to i_histogram_sayisi - 1
float histogram_alt = aralik_alt + histogram_yukseklik * i
float histogram_ust = aralik_alt + histogram_yukseklik * (i + 1)
array.push(vpvr_histogram_alt_liste, histogram_alt)
array.push(vpvr_histogram_ust_liste, histogram_ust)
array.push(vpvr_histogram_fiyat_liste, (histogram_alt + histogram_ust) / 2)
array.push(vpvr_histogram_alim_hacmi_liste, 0.0)
array.push(vpvr_histogram_satim_hacmi_liste, 0.0)
array.push(vpvr_histogram_hacim_yuzde_liste, 0.0)
// Bar'ların hacimlerini histogramlara ata
for i = 0 to i_bar_sayisi - 1
float mevcut_bar_yukseklik = high - low
if mevcut_bar_yukseklik > 0
float mevcut_alim_hacmi = volume * (close - low ) / mevcut_bar_yukseklik
float mevcut_satim_hacmi = volume * (high - close ) / mevcut_bar_yukseklik
// Mevcut hacim yüzdesini histogramlara dağıt
for j = 0 to i_histogram_sayisi - 1
if j < array.size(vpvr_histogram_alt_liste) and j < array.size(vpvr_histogram_ust_liste)
float h_alt = array.get(vpvr_histogram_alt_liste, j)
float h_ust = array.get(vpvr_histogram_ust_liste, j)
// Bar ve histogram arasındaki kesişim hesapla
float hedef = math.max(h_ust, high ) - math.min(h_alt, low )
- math.max(0, math.max(h_ust, high ) - math.min(h_ust, high ))
- math.max(0, math.max(h_alt, low ) - math.min(h_alt, low ))
float hacim_yuzde = hedef / mevcut_bar_yukseklik
if hacim_yuzde > 0
float h_alim = array.get(vpvr_histogram_alim_hacmi_liste, j)
float h_satim = array.get(vpvr_histogram_satim_hacmi_liste, j)
array.set(vpvr_histogram_alim_hacmi_liste, j, h_alim + mevcut_alim_hacmi * hacim_yuzde)
array.set(vpvr_histogram_satim_hacmi_liste, j, h_satim + mevcut_satim_hacmi * hacim_yuzde)
// En yüksek hacimli histogramı bul (POC - Point of Control)
float en_yuksek_hacim = 0.0
for i = 0 to i_histogram_sayisi - 1
if i < array.size(vpvr_histogram_alim_hacmi_liste) and i < array.size(vpvr_histogram_satim_hacmi_liste)
float h_alim = array.get(vpvr_histogram_alim_hacmi_liste, i)
float h_satim = array.get(vpvr_histogram_satim_hacmi_liste, i)
float h_toplam = h_alim + h_satim
if h_toplam > en_yuksek_hacim
en_yuksek_hacim := h_toplam
poc_fiyat_temp := array.get(vpvr_histogram_fiyat_liste, i)
// POC değerlerini güncelle
vpvr_poc_fiyat := poc_fiyat_temp
vpvr_poc_hacim := en_yuksek_hacim
if not na(vpvr_poc_fiyat)
vpvr_poc_yuzde := (close - vpvr_poc_fiyat) / vpvr_poc_fiyat * 100
// Kapanış fiyatı POC'un üzerinde mi kontrol et
vpvr_ustunde := close > vpvr_poc_fiyat
// POC metni ve rengini ayarla
if vpvr_poc_yuzde > 0
vpvr_poc_renk := color.green
vpvr_poc_metin := str.tostring(vpvr_poc_fiyat, "#.00") + " ↑"
else
vpvr_poc_renk := color.red
vpvr_poc_metin := str.tostring(vpvr_poc_fiyat, "#.00") + " ↓"
// Önceki kutuları ve çizgileri temizle
if array.size(vpvr_alim_kutulari) > 0
for i = 0 to array.size(vpvr_alim_kutulari) - 1
box.delete(array.get(vpvr_alim_kutulari, i))
if array.size(vpvr_satim_kutulari) > 0
for i = 0 to array.size(vpvr_satim_kutulari) - 1
box.delete(array.get(vpvr_satim_kutulari, i))
if array.size(vpvr_cizgiler) > 0
for i = 0 to array.size(vpvr_cizgiler) - 1
line.delete(array.get(vpvr_cizgiler, i))
array.clear(vpvr_alim_kutulari)
array.clear(vpvr_satim_kutulari)
array.clear(vpvr_cizgiler)
// Aralık üst ve alt sınırlarını çiz
int zaman_birimi = int(time - time )
line ust_cizgi = line.new(time , aralik_ust, time + i_son_mumdan_mesafe * zaman_birimi, aralik_ust,
xloc=xloc.bar_time, color=i_line_renk, width=2)
line alt_cizgi = line.new(time , aralik_alt, time + i_son_mumdan_mesafe * zaman_birimi, aralik_alt,
xloc=xloc.bar_time, color=i_line_renk, width=2)
// Çizgileri diziye ekle
array.push(vpvr_cizgiler, ust_cizgi)
array.push(vpvr_cizgiler, alt_cizgi)
// Histogramları çiz
// Önce maksimum hacmi bul
float max_hacim = en_yuksek_hacim
if max_hacim > 0
for i = 0 to i_histogram_sayisi - 1
if i < array.size(vpvr_histogram_alt_liste) and i < array.size(vpvr_histogram_ust_liste) and i < array.size(vpvr_histogram_alim_hacmi_liste) and i < array.size(vpvr_histogram_satim_hacmi_liste)
float h_alt = array.get(vpvr_histogram_alt_liste, i)
float h_ust = array.get(vpvr_histogram_ust_liste, i)
float h_alim = array.get(vpvr_histogram_alim_hacmi_liste, i)
float h_satim = array.get(vpvr_histogram_satim_hacmi_liste, i)
float h_toplam = h_alim + h_satim
if h_toplam > 0
float genislik = i_poc_genislik * h_toplam / max_hacim
float alim_genislik = math.floor(genislik * h_alim / h_toplam)
float satim_genislik = math.floor(genislik * h_satim / h_toplam)
// Alım ve satım histogramlarını çiz
if alim_genislik > 0
box alim_kutu = box.new( left=int(bar_index + i_son_mumdan_mesafe), top=h_ust, right=int(bar_index + i_son_mumdan_mesafe + alim_genislik), bottom=h_alt, bgcolor=i_alis_bar_renk, border_color=color.new(color.black, 80))
array.push(vpvr_alim_kutulari, alim_kutu)
if satim_genislik > 0
box satim_kutu = box.new( left=int(bar_index + i_son_mumdan_mesafe + alim_genislik), top=h_ust, right=int(bar_index + i_son_mumdan_mesafe + alim_genislik + satim_genislik), bottom=h_alt, bgcolor=i_satis_bar_renk, border_color=color.new(color.black, 80))
array.push(vpvr_satim_kutulari, satim_kutu)
else
// VPVR aktif değilse tüm görsel nesneleri temizle
// Kutuları temizle
if array.size(vpvr_alim_kutulari) > 0
for i = 0 to array.size(vpvr_alim_kutulari) - 1
box.delete(array.get(vpvr_alim_kutulari, i))
if array.size(vpvr_satim_kutulari) > 0
for i = 0 to array.size(vpvr_satim_kutulari) - 1
box.delete(array.get(vpvr_satim_kutulari, i))
// Çizgileri temizle
if array.size(vpvr_cizgiler) > 0
for i = 0 to array.size(vpvr_cizgiler) - 1
line.delete(array.get(vpvr_cizgiler, i))
// Dizileri temizle
array.clear(vpvr_alim_kutulari)
array.clear(vpvr_satim_kutulari)
array.clear(vpvr_cizgiler)
// VPVR POC (Point of Control) Bilgisi
if barstate.islast
if i_vpvr_aktif
// VPVR aktifse POC bilgilerini göster
table.cell(table_obj, 0, 19, "VPVR POC:", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 1, 19, vpvr_poc_metin, text_color=vpvr_poc_renk, text_size=size.small, bgcolor=i_panel_renk)
if not na(vpvr_poc_yuzde)
table.cell(table_obj, 0, 20, "POC'ye Mesafe (%):", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 1, 20, str.tostring(vpvr_poc_yuzde, "#.##") + "%",
text_color=vpvr_poc_yuzde >= 0 ? color.green : color.red,
text_size=size.small,
bgcolor=i_panel_renk)
// POC'un üstünde mi altında mı bilgisi
table.cell(table_obj, 0, 21, "POC Durumu:", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 1, 21, vpvr_ustunde ? "POC Üzerinde ↑" : "POC Altında ↓",
text_color=vpvr_ustunde ? color.green : color.red,
text_size=size.small,
bgcolor=i_panel_renk)
else
table.cell(table_obj, 0, 20, "POC'ye Mesafe (%):", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 1, 20, "HESAPLANIYOR", text_color=i_panel_yazi_renk, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 0, 21, "POC Durumu:", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 1, 21, "HESAPLANIYOR", text_color=i_panel_yazi_renk, text_size=size.small, bgcolor=i_panel_renk)
else
// VPVR aktif değilse boş hücreler göster
table.cell(table_obj, 0, 19, "", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 1, 19, "", text_color=i_panel_yazi_renk, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 0, 20, "", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 1, 20, "", text_color=i_panel_yazi_renk, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 0, 21, "", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 1, 21, "", text_color=i_panel_yazi_renk, text_size=size.small, bgcolor=i_panel_renk)
// =================== PANEL ===================
// Panel pozisyonunu ayarla
var panel_pos = i_panel_konum == "Sag Üst" ? position.top_right :
i_panel_konum == "Sol Üst" ? position.top_left :
i_panel_konum == "Sag Alt" ? position.bottom_right : position.bottom_left
// Renk ayarları
var panel_bg_renk = i_panel_renk
var panel_text_renk = color.white
var alim_renk = i_alis_renk
var satim_renk = i_satis_renk
// Tablo oluştur
table_obj := table.new(panel_pos, 2, 22, i_panel_renk, frame_width=2, frame_color=panel_text_renk, border_color=panel_text_renk, border_width=1)
// Maliyet referansları için formatlama fonksiyonu
f_renk_format(deger, ref_alt, ref_ust) =>
deger < ref_alt ? satim_renk : deger > ref_ust ? alim_renk : panel_text_renk
// Tablo başlığı
f_tablo_guncelle(table_obj) =>
table.cell(table_obj, 0, 0, "Spekulator Maliyet Analizi Pro V4", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 1, 0, "v4.1", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
// Piyasa bilgileri
table.cell(table_obj, 0, 1, "PİYASA BİLGİLERİ", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 1, 1, "", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 0, 2, "Trend:", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
trend_durum = uptrend ? 1 : -1
trend_renk = trend_durum == 1 ? alim_renk : satim_renk
trend_metin = trend_durum == 1 ? "YUKARI (Alış)" : "AŞAĞI (Satış)"
table.cell(table_obj, 1, 2, trend_metin, text_color=trend_renk, text_size=size.small, bgcolor=i_panel_renk)
// Maliyet bilgileri
table.cell(table_obj, 0, 3, "MALİYET HESABI", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 1, 3, "", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 0, 4, "Kritik Fib. 61.8%:", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 1, 4, str.tostring(alis_maliyeti, "#.00"), text_color=f_renk_format(close, alis_maliyeti * 0.99, alis_maliyeti * 1.01), text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 0, 5, "Kritik Fib. 78.6%:", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 1, 5, str.tostring(satis_maliyeti, "#.00"), text_color=f_renk_format(close, satis_maliyeti * 0.99, satis_maliyeti * 1.01), text_size=size.small, bgcolor=i_panel_renk)
// Diğer maliyet bilgileri...
table.cell(table_obj, 0, 6, "TE Maliyet (ORT):", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 1, 6, str.tostring(alis_maliyeti, "#.00"), text_color=f_renk_format(close, alis_maliyeti * 0.99, alis_maliyeti * 1.01), text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 0, 7, "TE Min. Maliyet:", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 1, 7, str.tostring(alis_maliyeti_alt, "#.00"), text_color=f_renk_format(close, alis_maliyeti_alt * 0.99, alis_maliyeti_alt * 1.01), text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 0, 8, "TE Maks. Maliyet:", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 1, 8, str.tostring(alis_maliyeti_ust, "#.00"), text_color=f_renk_format(close, alis_maliyeti_ust * 0.99, alis_maliyeti_ust * 1.01), text_size=size.small, bgcolor=i_panel_renk)
// Pozisyon durumu
table.cell(table_obj, 0, 9, "POZİSYON DURUMU", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 1, 9, "", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
var int son_trend_yonu = 0
var int son_trend_uzunlugu = 0
if close > open
if son_trend_yonu == 1
son_trend_uzunlugu := son_trend_uzunlugu + 1
else
son_trend_yonu := 1
son_trend_uzunlugu := 1
else if close < open
if son_trend_yonu == -1
son_trend_uzunlugu := son_trend_uzunlugu + 1
else
son_trend_yonu := -1
son_trend_uzunlugu := 1
pos_durum_renk = pozisyonda ? (son_islem_alis ? alim_renk : satim_renk) : panel_text_renk
pos_durum_metin = pozisyonda ? (son_islem_alis ? "UZUN (Alış)" : "KISA (Satış)") : "POZİSYON YOK"
table.cell(table_obj, 0, 10, "Mevcut Pozisyon:", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 1, 10, pos_durum_metin, text_color=pos_durum_renk, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 0, 11, "Sinyal Tipi:", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
sinyal_renk = last_signal_type == 1 ? alim_renk : last_signal_type == -1 ? satim_renk : panel_text_renk
sinyal_metin = last_signal_type == 1 ? "ALIS" : last_signal_type == -1 ? "SATIŞ" : "YOK"
table.cell(table_obj, 1, 11, sinyal_metin, text_color=sinyal_renk, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 0, 12, "Olası Sinyal:", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
olasi_sinyal_renk = olasi_alis ? alim_renk : olasi_satis ? satim_renk : panel_text_renk
olasi_sinyal_metin = olasi_alis ? "OLASI ALIS" : olasi_satis ? "OLASI SATIŞ" : "YOK"
table.cell(table_obj, 1, 12, olasi_sinyal_metin, text_color=olasi_sinyal_renk, text_size=size.small, bgcolor=i_panel_renk)
// Hacim ve volatilite
table.cell(table_obj, 0, 13, "DESTEKLEYEN FAKTÖRLER", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 1, 13, "", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
// RSI
rsi_renk = rsi < 30 ? alim_renk : rsi > 70 ? satim_renk : panel_text_renk
table.cell(table_obj, 0, 14, "RSI Değeri:", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 1, 14, str.tostring(rsi, "#.00"), text_color=rsi_renk, text_size=size.small, bgcolor=i_panel_renk)
// Hacim Durumu
float yerel_hacim_orani = volume / vol_sma
hacim_renk = yerel_hacim_orani > 1.1 ? alim_renk : yerel_hacim_orani < 0.9 ? satim_renk : panel_text_renk
table.cell(table_obj, 0, 15, "Hacim Oranı:", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 1, 15, str.tostring(yerel_hacim_orani, "#.00x"), text_color=hacim_renk, text_size=size.small, bgcolor=i_panel_renk)
// Mevcut Aralık
fiyat_araligi = (high - low) / low * 100
aralik_renk = fiyat_araligi > 1.5 ? alim_renk : panel_text_renk
table.cell(table_obj, 0, 16, "Fiyat Aralığı (%):", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 1, 16, str.tostring(fiyat_araligi, "#.00") + "%", text_color=aralik_renk, text_size=size.small, bgcolor=i_panel_renk)
// Ardışık Mum Sayısı
mum_renk = son_trend_yonu == 1 ? alim_renk : son_trend_yonu == -1 ? satim_renk : panel_text_renk
mum_metin = son_trend_yonu == 1 ? "+" + str.tostring(son_trend_uzunlugu) + " YEŞİL" : son_trend_yonu == -1 ? "-" + str.tostring(son_trend_uzunlugu) + " KIRMIZI" : "NÖTR"
table.cell(table_obj, 0, 17, "Ardışık Mumlar:", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 1, 17, mum_metin, text_color=mum_renk, text_size=size.small, bgcolor=i_panel_renk)
// Anormal Hareket Uyarısı
var int siradisi_durumlar = 0
siradisi_durumlar := siradisi_alis or siradisi_satis ? siradisi_durumlar + 1 : siradisi_durumlar
siradisi_renk = siradisi_durumlar > 0 ? color.yellow : panel_text_renk
siradisi_metin = siradisi_durumlar > 0 ? "Sıra Dışı İşaret" : "NORMAL"
table.cell(table_obj, 0, 18, "Sıra Dışı Durum:", text_color=color.white, text_size=size.small, bgcolor=i_panel_renk)
table.cell(table_obj, 1, 18, siradisi_metin, text_color=siradisi_renk, text_size=size.small, bgcolor=i_panel_renk)
// Panel'i güncelle
if barstate.islast
f_tablo_guncelle(table_obj)
// =================== ALERTLER ===================
alertcondition(alis_sinyal, "Alış Sinyali", "Fiyat alış maliyetini yukarı kırdı")
alertcondition(satis_sinyal, "Satış Sinyali", "Fiyat satış maliyetini aşağı kırdı")
alertcondition(alis_tp_crossover, "Alış TP", "Alış pozisyonu kar hedefine ulaştı")
alertcondition(satis_tp_crossunder, "Satış TP", "Satış pozisyonu kar hedefine ulaştı")
alertcondition(alis_sl_crossunder, "Alış SL", "Alış pozisyonu stop loss seviyesinde")
alertcondition(satis_sl_crossover, "Satış SL", "Satış pozisyonu stop loss seviyesinde")
alertcondition(trailing_stop_crossunder, "Trailing Stop", "Trailing stop seviyesine ulaşıldı")
alertcondition(olasi_alis, "Olası Alış", "Olası alış fırsatı")
alertcondition(olasi_satis, "Olası Satış", "Olası satış fırsatı")
// Sıra dışı hareket alertleri
alertcondition(siradisi_alis, "Sıra Dışı Yükseliş", "Anormal derecede hızlı bir yükseliş tespit edildi!")
alertcondition(siradisi_satis, "Sıra Dışı Düşüş", "Anormal derecede hızlı bir düşüş tespit edildi!")
Multi-EMA Combination with Multi-Timeframe EMA By BCB ElevateBenefits and Features of the Multi-EMA Combination Indicator with Multi-Timeframe EMA:
Key Features:
Multiple EMA Support:
Tracks up to six EMAs simultaneously, each with customizable lengths and colors.
Allows traders to observe various short-term and long-term trends in the market.
Multi-Timeframe EMA (MTF EMA):
Incorporates a higher timeframe EMA directly into the current chart.
Useful for aligning intraday trading strategies with broader market trends.
Provides customizable settings, including the EMA length and timeframe.
Combined Alerts:
Automated alerts for key crossover and crossunder events.
Alerts include:
EMA 1 crossing EMA 2 (shorter-term signals).
EMA 1 crossing EMA 2 and EMA 3 together (stronger confirmation signals).
Can enable or disable buy and sell alerts separately.
Customizability:
Users can set EMA lengths, colors, and other preferences directly from the settings menu.
The multi-timeframe EMA can be toggled on/off for flexibility.
User-Friendly Visuals:
Clearly plots EMAs with different colors and line widths to distinguish trends.
The multi-timeframe EMA uses a unique style for better visibility.
Stock to Gold RatioYou can use this as simply a guide or to see how a physical asset compares to a company or another physical commodity.
All time frames and all stocks that can be charted work with this code/indicator. It relies on the gold spot and not the futures so there isn't as much noise in the charting.
If you want to trend line arcuately, then go into settings and in style make sure to apply crosses or circles and place your points on the highs or lows you want. Then simply reapply line choice and go from there.
You may say why gold...Well maybe its your currency that is falling and not the metal going up hmm....Kinda like the stock I chose to advertise this.
For when it come to hands full of things, One is Silver, and the other...Gold.
Cash Flow YieldsCash Flow Yields Indicator
This indicator offers a straightforward way to visualize a company’s cash flow metrics—Free Cash Flow (FCF), Operating Cash Flow (OCF), and Capital Expenditures (CapEx)—as yields relative to its market capitalization. With the flexibility to switch between Trailing Twelve Months (TTM) and Quarterly data, it’s perfect for spotting financial efficiency trends at a glance. Values are plotted as dynamic lines with smart color coding and labeled for clarity.
Features:
TTM & Quarterly Data: Toggle between financial periods to suit your analysis.
Color-Coded Lines: Green for positive OCF, teal for positive FCF, and blue for CapEx. Red and maroon kick in when values turn negative.
Yield Perspective: See FCF, OCF, and CapEx as percentages of market cap, making it easy to compare cash flow strength across companies.
Clear Labels: The latest values pop up on the chart, positioned to the right of the last bar.
Simple & Intuitive: No clutter - just clean lines and numbers to help you focus on what matters.
To use it, add it to your chart and toggle between TTM or Quarterly to see trends. FCF should roughly equal OCF minus CapEx. Adjust your view to focus on companies with strong FCF yields for potential opportunities.
This indicator is freely available and open-source on TradingView for everyone to use. Enjoy!