LANZ Strategy 1.0 [Backtest]🔷 LANZ Strategy 1.0 — Time-Based Session Trading with Smart Reversal Logic and Risk-Controlled Limit Orders
This backtest version of LANZ Strategy 1.0 brings precision to session-based trading by using directional confirmation, pre-defined risk parameters, and limit orders that execute overnight. Designed for the 1-hour timeframe, it allows traders to evaluate the system with configurable SL, TP, and risk settings in a fully automated environment.
🧠 Core Strategy Logic:
1. Directional Confirmation at 18:00 NY:
At 18:00 NY, the system compares the 08:00 open vs the 18:00 close:
If the direction matches the previous day, the signal is reversed.
If the direction differs, the current day's trend is kept.
This logic is designed to avoid momentum exhaustion and capture corrective reversals.
2. Entry Level Definition:
Based on the confirmed direction:
For BUY, the Low of the day is used as Entry Point (EP).
For SELL, the High of the day becomes EP.
The system plots a Stop Loss and Take Profit based on user-defined pip inputs (default: SL = 18 pips, TP = 54 pips → RR 1:3).
3. Time-Limited Entry Execution (LIMIT Orders):
Orders are sent after 18:00 NY and can be triggered anytime between 18:00 and 08:00 NY.
If EP is not touched before 08:00, the order is automatically cancelled.
4. Manual Close Feature:
If the trade is still open at the configured hour (default 09:00 NY), the system closes all positions, simulating realistic intraday exit scenarios.
5. Lot Size Calculation Based on Risk:
Lot size is dynamically calculated using the account size, risk percentage, and SL distance.
This ensures consistent risk exposure regardless of market volatility.
⚙️ Step-by-Step Flow:
08:00 NY → Captures the open of the day.
18:00 NY → Confirms direction and defines EP, SL, and TP.
After 18:00 NY → If conditions are met, a LIMIT order is placed at EP.
Between 18:00–08:00 NY → If price touches EP, the trade is executed.
At 08:00 NY → If EP wasn’t touched, the order is cancelled.
At Configured Manual Close Time (default 09:00 NY) → All open positions are force-closed if still active.
🧪 Backtest Settings:
Timeframe: 1-hour only
Order Type: strategy.entry() with limit=
SL/TP Configurable: Yes, in pips
Risk Input: % of capital per trade
Manual Close Time: Fully adjustable (default 09:00 NY)
👨💻 Credits:
Developed by LANZ
Strategy logic and trading concept built with clarity and precision.
Code structure and documentation by Kairos, your AI trading assistant.
Designed for high-confidence execution and clean backtesting performance.
Göstergeler ve stratejiler
Z Score 主图策略 — v1.02Hello Traders,
Here is my new year gift for the community, Digergence for Many Indicators v4. I tried to make it modular and readable as much as I can. Thanks to Pine Team for improving Pine Platform all the time!
How it works?
- On each candle it checks divergences between current and any of last 16 Pivot Points for the indicators.
- it search divergence on choisen indicators => RSI , MACD , MACD Histogram, Stochastic , CCI , Momentum, OBV, VWMACD, CMF and any External Indicator!
- it checks following divergences for 16 pivot points that is in last 100 bars for each Indicator.
--> Regular Positive Digergences
--> Regular Negative Digergences
--> Hidden Positive Digergences
--> Hidden Negative Digergences
- for positive divergences first it checks if closing price is higher than last closing price and indicator value is higher than perious value, then start searching divergence
- for negative divergences first it checks if closing price is lower than last closing price and indicator value is lower than perious value, then start searching divergence
Some Options:
Pivot Period: you set Pivot Period as you wish. you can see Pivot Points using "Show Pivot Points" option
Source for Pivot Points: you can use Close or High/Low as source
Divergence Type: you can choose Divergence type to be shown => "Regular", "Hidden", "Regular/Hidden"
Show Indicator Names: you have different options to show indicator names => "Full", "First Letter", "Don't Show"
Show Divergence Number: option to see number of indicators which has Divergence
Show Only Last Divergence: if you enable this option then it shows only last Positive and Negative Divergences
you can include any External Indicator to see if there is divergence
- enable "Check External Indicator"
- and then choose External indicator name in the list, "External Indicator"
- External indicator name is shown as Extrn
- related external indicator must be added before enabling this option
Coloring, line width and line style options for different type of divergences.
Following Alerts added:
- Positive Regular Divergence Detected
- Negative Regular Divergence Detected
- Positive Hidden Divergence Detected
- Negative Hidden Divergence Detected
Now lets see some examples:
Aftershock Playbook: Stock Earnings Drift EngineStrategy type
Event-driven post-earnings momentum engine (long/short) built for single-stock charts or ADRs that publish quarterly results.
What it does
Detects the exact earnings bar (request.earnings, lookahead_off).
Scores the surprise and launches a position on that candle’s close.
Tracks PnL: if the first leg closes green, the engine automatically re-enters on the very next bar, milking residual drift.
Blocks mid-cycle trades after a loss until the next earnings release—keeping the risk contained to one cycle.
Think of it as a sniper that fires on the earnings pop, reloads once if the shot lands, then goes silent until the next report.
Core signal inputs
Component Default Purpose
EPS Surprise % +0 % / –5 % Minimum positive / negative shock to trigger longs/shorts.
Reverse signals? Off Quick flip for mean-reversion experiments.
Time Risk Mgt. Off Optional hard exit after 45 calendar days (auto-scaled to any TF).
Risk engine
ATR-based stop (ATR × 2 by default, editable).
Bar time stop (15-min → Daily: Have to select the bar value ).
No pyramiding beyond the built-in “double-tap”.
All positions sized as % of equity via Strategy Properties.
Visual aids
Yellow triangle marks the earnings bar.
Diagnostics table (top-right) shows last Actual, Estimate, and Surprise %.
Status-line tool-tips on every input.
Default inputs
Setting Value
Positive surprise ≥ 0 %
Negative surprise ≤ –5 %
ATR stop × 2
ATR length 50
Hold horizon 350 ( 1h timeframe chart bars)
Back-test properties
Initial capital 10 000
Order size 5 % of equity
Pyramiding 1 (internal re-entry only)
Commission 0.03 %
Slippage 5 ticks
Fills Bar magnifier ✔ · On bar close ✔ · Standard OHLC ✔
How to use
Add the script to any earnings-driven stock (AAPL, MSFT, TSLA…).
Turn on Time Risk Management if you want stricter risk management
Back-test different ATR multipliers to fit the stock’s volatility.
Sync commission & slippage with your broker before forward-testing.
Important notes
Works on every timeframe from 15 min to 1 D. Sweet spot around 30min/1h
All request.earnings() & request.security() calls use lookahead_off—zero repaint.
The “double-tap” re-entry occurs once per winning cycle to avoid drift-chasing loops.
Historical stats ≠ future performance. Size positions responsibly.
Out of the Noise Intraday Strategy with VWAP [YuL]This is my (naive) implementation of "Beat the Market An Effective Intraday Momentum Strategy for S&P500 ETF (SPY)" paper by Carlo Zarattini, Andrew Aziz, Andrea Barbon, so the credit goes to them.
It is supposed to run on SPY on 30-minute timeframe, there may be issues on other timeframes.
I've used settings that were used by the authors in the original paper to keep it close to the publication, but I understand that they are very aggressive and probably shouldn't be used like that.
Results are good, but not as good as they are stated in the paper (unsurprisingly?): returns are smaller and Sharpe is very low (which is actually weird given the returns and drawdown ratio), there are also margin calls if you enable margin check (and you should).
I have my own ideas of improvements which I will probably implement separately to keep this clean.
Grid Bot v6 StrategyGrid Bot v6 Strategy
Adaptive parabolic grid that turns market structure into a step-by-step trading plan
Idea of strategy and source code of base indicator provided by my subscriber @Sergio_Nov
1. Core concept
Grid Bot v6 draws a dynamic parabola from a user-defined time/price anchor and builds a 10-level grid around it (five lines above, five below).
Each level is colour-coded:
Green – preferred buy area
Red – preferred sell area
Yellow – overlap of buy-and-sell zones (balance)
Grey – neutral zone
Orders are fired when price touches or reverses from a grid line and the signal is confirmed by current market sentiment. If sentiment contradicts the signal, the order is tagged secondary and uses a reduced lot size.
2. How the logic works
Parabola – the function f_parabola computes the curve from Accel, Curve and Sensitivity. Zero values give a flat horizontal grid; non-zero values create an accelerating or decelerating trendline.
Grid spacing – controlled by Intervals (percentage of price). Lines are recalculated every bar, so the grid “breathes” with the market.
Triggers – choose which part of the candle must reach the level (Wick, Close, Midpoint, SWMA).
Confirmation – decide whether a simple touch is enough or a full reversal is required (Touch vs Reverse).
Sentiment filter – by default the slope of the parabola (up = long bias, down = short bias). You can override it to Long, Short or Neutral.
Order types – four independent sizes: Main Buy, Secondary Buy, Main Sell, Secondary Sell. Pyramiding up to 100 entries is allowed.
Visuals – the script plots actual and projected grid lines (100 bars ahead), the SWMA trigger and the parabola itself. Trade symbols: ▲ ▼ △ ▽.
3. User inputs
Strategy Settings
Main Buy Lot / Secondary Buy Lot
Main Sell Lot / Secondary Sell Lot
Grid Settings
Accel – tilt of the curve (positive for uptrend, negative for downtrend)
Curve – concavity; higher absolute value = stronger bend
Intervals – distance between grid lines (in %)
Sensitivity – how fast the parabola adapts; higher = more reactive
Buy Zones / Sell Zones – number of active lines below/above the curve
Trigger – Wick, Close, Midpoint, SWMA
Confirm – Touch or Reverse
Sentiment – Slope, Long, Short, Neutral
Show Signals / Show Selector – toggle on-chart markers and SWMA line
Chart Settings – individual colours for active grid, projection, parabola and SWMA.
Time/Price Anchor
B_Time – starting bar (e.g. a recent swing high/low)
B_Price – price at that bar
Tip: drop the anchor on a clear pivot, then tune Accel and Curve so the parabola hugs the trend.
4. Quick-start guide
Open your favourite symbol and timeframe (works best on volatile markets from 5-minute to 4-hour).
Set B_Time / B_Price to the last significant extreme.
Adjust Accel and Curve:
Uptrend – positive Accel, negative Curve for a concave support.
Range – both zero for a flat ladder.
Choose Intervals: smaller values = more frequent trades.
Limit Buy Zones and Sell Zones if you prefer a tighter grid.
Run a back-test, check P/L, max drawdown and trade count.
Fine-tune: lower Sensitivity if the curve outruns price; switch Trigger to SWMA to filter noise.
5. Pros and cons
Strengths
Adaptive levels that keep up with trend acceleration.
Clear colour coding plus forward projection for better context.
Sentiment filter reduces counter-trend exposures.
Weaknesses
Many parameters – each asset/timeframe needs its own calibration.
In narrow ranges frequent fills can accumulate fees.
pyramiding = 100 grows exposure quickly; monitor margin closely.
6. Risk disclaimer
This script is for educational and research purposes only. Historical performance does not guarantee future results. Before going live:
Forward-test bar-by-bar;
Check that your broker supports similar order handling;
Apply sound position sizing and, where appropriate, stop-losses or hedging.
Supertrend AT v1.0📌 Supertrend AT v1.0 — Strategy Overview
Overview
Supertrend AT v1.0 is a fully automated trading strategy based on the Supertrend indicator.
It identifies trend reversals and places long or short entries accordingly, with built-in position sizing, stop-loss/take-profit management, and commission-aware calculations.
🚀 Key Features
✅ Entry Signals Based on Trend Reversals
Long entry when Supertrend changes from downtrend to uptrend
Short entry when Supertrend changes from uptrend to downtrend
✅ Risk-Based Position Sizing
Calculates position size so that a stop-loss only risks a fixed percentage (RPT) of total capital
✅ Reward/Risk Ratio-Based Target Price Calculation
Take-profit price is computed not by price difference, but by actual loss and desired reward-to-risk (RR) ratio
✅ Fully Commission-Aware
Commission is factored into entry, stop-loss, and take-profit price calculations
Ensure commission settings match in both the input panel and the strategy properties tab
✅ Dual Language Support
Switch between English and Korean interface
✅ Visual Trade Levels & Info Display
Entry, stop, and target prices plotted on the chart
Real-time open PnL and equity shown in an on-screen table
⚙️ How to Use
Apply Strategy to Chart
Load the strategy and configure the following parameters in both the Input tab and the Properties tab:
Commission rate (e.g., 0.05%)
Market decimal precision (e.g., 4 for 0.0001)
Adjust Entry Parameters
RPT: Risk per trade as a percentage of your total equity (e.g., 2%)
RR: Reward-to-risk ratio (e.g., 3 = target profit is 3× the potential loss)
Choose whether to allow Long or Short trades
For Auto-Trading Integration
Make sure the minimum order size is valid for your exchange
If the calculated quantity is below the exchange's minimum unit, it may result in errors
⚠️ Important Notes
❗ Non-Repainting — Supertrend is based on confirmed candles and does not repaint
❗ Backtest-Only — The strategy is for signal generation only and does not execute real trades without external automation
❗ Margin-Based Calculations — Default settings assume margin trading; adjust accordingly
📄 License & Disclaimer
This strategy is licensed under the Mozilla Public License 2.0.
This script is not financial advice. Use at your own risk.
Always test thoroughly with backtesting and paper trading before using in live markets.
XAUT Box with RSI Div(Dynamic Adjustment + MA + Short + English)Strategy Overview: Box Range with RSI Divergence (Dynamic Adjustment - OKX Signal Format)
This Pine Script strategy, "XAUT Box with RSI Div (Dynamic Adjustment + MA + Short + English )", is designed for trading within a box range while leveraging RSI divergences and moving average trends. It is optimized for use with OKX signal credentials and integrates TradingView alerts for automated trading.
Optimal Configuration
Take-Profit: 18% return rate.
Initial Margin: $50.
Total Margin: $800 USDT.
Expected Monthly Return: 10%+.
TRUMP Box with RSI Div(Dynamic Adjustment + MA + Long)Strategy Overview: Box Range with RSI Divergence (Dynamic Adjustment - OKX Signal Format)
This Pine Script strategy, "TRUMP Box with RSI Div (Dynamic Adjustment + MA + Long)", is designed for trading within a box range while leveraging RSI divergences and moving average trends. It is optimized for use with OKX signal credentials and integrates TradingView alerts for automated trading.
[Myth Busting] [ORB] Casper SMC - 16 JunJust showcase of YouTube strategy claimed to be profitable and fool proof. Not on every asset and not long-term though
AHUJA RAFAEL 1This strategy is based on price action and data .
how to trade in this
so first of all we have to see oi spurt at 10:40 and see which stocks is above 7 oi we have to trade in that stocks
also second stragey search for stocks above 4.5% and down 4.5% we can trade in that stocks as well
Momentum Hunter
Overview:
Momentum Hunter is a premium invite-only strategy script that detects powerful breakout opportunities by scanning for new highs relative to historical price action. It’s built to capitalize on high-momentum moves as soon as price breaches key resistance levels with strength.
Key Features:
Detects breakout signals based on extended-range high tests
Applies dynamic take-profit and stop-loss management
Optional filter to trade only during market hours
Displays a custom stats dashboard showing trade and performance metrics
Includes alert conditions for entries and trade closures
How to Use:
Apply Momentum Hunter to your preferred timeframe and asset. Watch for breakout signals and manage trades using your chosen settings. Suitable for intraday, swing, and momentum-based traders.
Access:
This script is invite-only and intended for subscribers. For access, please contact: 7899208204
📩 Email:
💬 Telegram:
🌐 Website:
⚠️ Disclaimer: This strategy is for educational and informational purposes only. Not financial advice. Always use proper risk management.
Gold Hybrid ML ProGold ML Hybrid™ — Intelligent Trading Strategy for XAUUSD (15M)
Gold ML Hybrid™ is an advanced strategy built using Machine Learning technologies and developed with artificial intelligence, specifically designed to trade gold (XAUUSD) on the 15-minute timeframe, where it has shown optimal performance.
It uses historical pattern recognition to generate high-probability trade entries, supported by trend filters, session-based logic, and a solid technical structure.
🔹 Built-in indicators: TEMA, ATR, MACD, RSI, and more
🔹 Professional risk management with automatic SL and TP
🔹 Configurable and optimized Risk:Reward (R:R) ratio
🔹 Session filters: London, NY, and Overlap
🔹 Clean visual display with BUY / SELL labels and visible SL/TP levels
🔹 Real-time performance dashboard
Designed for traders who demand precision, consistency, and strong risk control, Gold ML Hybrid™ delivers a robust trading experience ready for real-market conditions.
RSI Divergence StrategyScript identifies bullish and bearish divergences, hidden and regular. Accurate on all timeframes. There are several videos on trading with a divergence strategy, but the divergences are hard to spot.
These can be adjusted but chat gpt independently checked various token vitals and compared to the chart, and found the chart accurate with current settings.
lookback = input.int(40, title="Lookback Period for Divergence") (30-60)
minSwingDistPercent = input.float(1.5, title="Minimum Swing Distance (%)") (0.5-2.0)
minPriceMovePercent = input.float(0.5, title="Minimum Price Move from Last Swing (%)") (0.5-2.0)
Simple MA CrossoverGrok made this. A basic example of a simple Moving Average Crossover strategy script.
Escada 0.3% - Reversão Dinâmica Pro 5 EstrelasEscada 0.3% - Dynamic Reversal Pro 5 Stars
Description:
The "Escada 0.3% - Dynamic Reversal Pro 5 Stars" is an advanced Pine Script v5 trading strategy designed to capture price reversals using a dynamic grid-based approach. It enters long or short positions when the price moves 0.3% (configurable) from the last entry price, supporting up to 20 simultaneous positions (pyramiding). The strategy features dynamic stop loss and take profit (fixed or ATR-based), robust trend (EMA), volatility (ATR), volume, and time filters, plus drawdown protection for enhanced risk management.
Key Features:
- Grid-Based Entries: Opens positions every 0.3% price movement, dynamically adjusting direction based on market trend.
- Risk Management: Fixed stop loss (0.5%) or ATR-based (1.5x multiplier), take profit (0.6%), and maximum drawdown limit (10%).
- Advanced Filters:
- Trend filter via 50-period EMA.
- Minimum volatility via ATR (0.5%).
- Volume above average (1.5x SMA).
- Optional breakout filter to confirm entries.
- Trading time window (9 AM–5 PM, configurable).
- Visualizations: Informative dashboard displaying active positions, P&L, drawdown, volatility, trend, and trading conditions. Charts include entry levels, EMA, and support/resistance zones.
- Alerts: Notifications for new positions, closures, position limit warnings, and critical drawdown levels.
How to Use:
1. Adjust parameters (step, stop, take profit, filters) based on the asset and timeframe.
2. Test in TradingView’s Strategy Tester to optimize performance.
3. Set up alerts for automation or real-time monitoring.
4. Fine-tune stop loss (fixed or ATR) and drawdown limit to protect capital.
Ideal for: Scalping, day trading, or swing trading in stocks, forex, or crypto. Extensive backtesting is recommended to tailor parameters to specific markets.
Note: This is not financial advice. Thoroughly backtest before using in a live account. Adjust parameters for different assets and market conditions.
Developed by:
Version: 5 (optimized for robustness, flexibility, and clarity).
XAUUSD Smart AI Strategy v1.2spodfjkpsdogfjkpod
sdfpjdsoikgfjmp
d
sfopsdjgf
sodjihfosiudg
sdpofjiposdgj
sdokgfpiosdg
Multi-Indicator Trading BotMACD stands for Moving Average Convergence Divergence. It is a momentum indicator that shows the relationship between two moving averages of a stock’s price:
MACD Line = 12 EMA – 26 EMA
Signal Line = 9 EMA of the MACD Line
Histogram = MACD Line – Signal Line
✅ MACD Crossover Strategy: The Basic
TrendR - Algo v6
Overview
The TrendR Algorithm is a sophisticated trend-following trading strategy implemented in Pine Script for TradingView. This professional-grade algorithm combines advanced trend detection, comprehensive risk management, and intelligent market condition filtering to deliver consistent trading performance across various market conditions.
Core Algorithm Architecture
Volatility-Adaptive Band System
The algorithm incorporates a sophisticated volatility measurement system that adapts to changing market conditions.
Intelligent Trend State Management
The TrendR algorithm features a sophisticated trend state tracking system with hysteresis to prevent false signals.
Advanced Risk Management System
Professional 1:3 Risk-Reward Framework
The algorithm implements a comprehensive risk management system designed for professional trading.
Customizable Risk-Reward Ratios : Default 1:3 ratio with user adjustment from 1:1 to 1:10
Percentage-Based Stop Loss : Configurable stop loss distance as a percentage of entry price (default: 2%)
Dual Take Profit Methods :
- Risk-reward ratio based calculation (recommended for consistent risk management)
- Fixed percentage take profit for advanced users requiring specific targets
Automatic Order Management : Seamless integration with TradingView's strategy engine for precise execution
Position Management Features
Entry Price Tracking : Precise entry price recording for accurate SL/TP calculations
Dynamic Level Updates : Real-time calculation and display of stop loss and take profit levels
Position Size Control : Configurable position sizing based on account equity percentage (default: 1%)
Commission and Slippage : Built-in consideration for realistic trading costs (0.1% commission, 3 ticks slippage)
Risk Management Calculations
The system employs sophisticated mathematical models for risk calculation:
Stop Loss Distance : Calculated as percentage of entry price for consistent risk exposure
Take Profit Distance : Dynamically calculated based on stop loss distance multiplied by risk-reward ratio
Position Sizing : Maintains consistent risk per trade through percentage-based allocation
Risk-Adjusted Returns : Optimizes for risk-adjusted performance rather than absolute returns
Entry and Exit Management
Automatic Position Closure : Intelligently closes opposing positions before entering new trades
Risk Management Integration : Automatically places stop loss and take profit orders upon entry
Order Sequencing : Ensures proper order execution sequence to prevent position conflicts
Alert System : Comprehensive alert notifications for entry, exit, and risk management events
Signal Quality Enhancement
The algorithm incorporates multiple layers of signal filtering:
Volatility Filtering : Adjusts signal sensitivity based on current market volatility
Trend Strength Assessment : Evaluates trend momentum before signal generation
False Signal Reduction : Employs hysteresis mechanism to prevent whipsaw trades
Market Condition Awareness : Adapts signal generation to current market regime
Visual Enhancement System
Chart Visualization Features
The TrendR algorithm provides extensive visual feedback for enhanced trading decision-making:
Trend Line Plotting : Dynamic trend lines with color-coded direction indication
Basis Line Display : Central reference line showing the calculated trend basis
Support/Resistance Levels : Visual representation of dynamic support and resistance levels
Risk Management Levels : Clear display of stop loss and take profit levels with color coding
Color-Coded Market States
Bullish Trend : Green coloring system for upward trend conditions
Bearish Trend : Red coloring system for downward trend conditions
Gradient Background : Intensity-based background coloring showing trend strength progression
Bar Coloring : Optional candlestick coloring based on current trend direction
Information Display System
Signal Labels : Clear entry point markers with integrated risk management information
Risk Management Table : Real-time display of current position parameters and risk metrics
Dynamic Updates : Live updating of all visual elements as market conditions evolve
Performance Metrics : Visual representation of strategy performance statistics
Risk Management Configuration
Enable/Disable Toggle : Complete control over risk management system activation
Risk-Reward Ratio : Customizable from 1:1 to 1:10 with 0.1 increments (default: 1:3)
Stop Loss Percentage : Adjustable from 0.1% to 10% with 0.1% increments (default: 2%)
Take Profit Method : Choice between ratio-based or fixed percentage calculation
Fixed Take Profit : Alternative percentage-based take profit (range: 0.1%-20%, default: 6%)
Visualization Controls
Color Customization : User-defined colors for bullish and bearish market conditions
Display Toggles : Individual control over bars, background, signals, and risk levels
Chart Elements : Selective display of various algorithm components
Information Table : Configurable display of real-time strategy metrics
Alert and Notification System
Comprehensive Alert Framework
The TrendR algorithm provides multiple alert types for different trading scenarios:
Entry Signals : Immediate notifications for long and short entry opportunities
Risk Management Alerts : Specific alerts for positions with active risk management
Position Risk Alerts : Advanced warnings when positions approach stop loss levels
Strategy Alerts : Dynamic alerts with real-time risk management data integration
Alert Message Architecture
Static Alerts : Consistent alert messages for basic signal notifications (compatible with Pine Script requirements)
Dynamic Strategy Alerts : Real-time data including entry prices, SL/TP levels, and risk ratios
Risk Event Alerts : Specialized notifications for stop loss and take profit activations
Market Condition Alerts : Notifications for significant market regime changes
Performance Characteristics
Optimal Market Conditions
The TrendR algorithm demonstrates exceptional performance in:
Trending Markets : Clear directional moves with sustained momentum and defined trend channels
Medium to Long-term Timeframes : Reduced noise environment with clearer trend identification
Volatile Assets : Benefits from volatility-adaptive band system and dynamic risk management
Liquid Markets : Optimal execution environment with minimal slippage impact
Algorithm Strengths
Trend Following Excellence : Captures major market moves with minimal lag through advanced EMA system
Risk Management Integration : Professional-grade position protection with customizable parameters
Market Adaptability : Automatically adjusts to changing market volatility conditions
Visual Clarity : Comprehensive chart visualization system for enhanced decision support
Customization Flexibility : Extensive parameter adjustment capabilities for different trading styles
Performance Metrics
Win Rate Optimization : Designed to maximize risk-adjusted returns rather than win percentage
Drawdown Control : Risk management system limits maximum position risk exposure
Profit Factor Enhancement : 1:3 risk-reward ratio improves overall profit factor
Consistency : Standardized risk per trade creates predictable performance patterns
Implementation Details
Technical Specifications
Platform : TradingView Pine Script v6 with full strategy functionality
Strategy Type : Overlay strategy with integrated risk management system
Position Sizing : Percentage of equity based with configurable allocation
Commission Model : Percentage-based commission structure with realistic slippage modeling
Execution Model : Market orders with automatic stop loss and take profit placement
Backtesting Framework
Date Range Control : Configurable start and end dates for comprehensive historical testing
Performance Metrics : Detailed strategy performance analysis with risk-adjusted metrics
Risk Analytics : Comprehensive risk measurement including maximum drawdown and Sharpe ratio
Trade Analysis : Individual trade performance tracking with entry/exit analysis
Code Architecture
The implementation follows professional software development principles:
Modular Design : Separate functions for trend calculation, risk management, and visualization
Single Responsibility : Each function handles a specific aspect of the algorithm
Clean Code Structure : Well-organized sections with comprehensive commenting
Error Handling : Robust handling of edge cases and market conditions
Implementation
Deviation between Quantity and Price - Event Contract Quantitative strategy is a strategy developed based on trading volume and price behavior, mainly to capture the deviation between trading volume strength and price behavior in the short term, and set it as a unique fixed position of two K-lines. Therefore, this strategy is only applicable to event contract trading!!!
Note: The indicators and parameters of this strategy are specifically selected for the 5-minute cycle of ETH contracts, so they are not applicable to other varieties and cycles!
This strategy combines multiple technical indicators, quantitative analysis, and market trend filters to identify high probability trading opportunities and support both long and short trades.
Its core features include:
Quantitative analysis: Focus on the surge in trading volume, and confirm market momentum through indicators such as net trading volume (OBV) and cash flow (CMF).
Price behavior: Analyze the K-line pattern (such as long/short breaks) and its entity to full range ratio to ensure the reliability of price movements.
Trend filtering: Use exponential moving averages (EMA), average trend indices (ADX), and custom benchmark moving averages (Base MA) to confirm trend direction and strength.
External market environment: Introduce Bitcoin (BTC/USDT) trend data to align with broader market sentiment.
Risk management: Manage risks through controlling position size, trading direction, and cooling off periods after losses.
Performance tracking: Provide a detailed statistical panel to monitor transaction frequency, win rate, and continuous profit/loss records.
Those who need a strategy can contact me for authorization.
LA SOÑADA 7000 4h//@version=5
strategy(title='LA SOÑADA 7000 4h', calc_on_order_fills=true, calc_on_every_tick=false, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.04, overlay=true, default_qty_type=strategy.cash, default_qty_value=60000)
buffer = input.float(title='buffer', defval=0.3, minval=0, step=0.1)
b1 = close * (1 + buffer / 100)
b2 = close * (1 - buffer / 100)
strategy.entry('Long', strategy.long, when=close > b1, comment='entry')
strategy.close('Long', when=close < b2, comment='exit')
//money management
stop_loss = input.int(15, 'Stop loss %', minval=1, step=1)
sl = strategy.position_avg_price * (1 - stop_loss / 100)
close_Stop = close < sl
strategy.close('Long', when=close_Stop, comment='Stop loss')
Target_profit = input.int(50, 'Target Profit %', minval=1, step=1)
tp = strategy.position_avg_price * (1 + Target_profit / 100)
close_Target = close > tp
strategy.close('Long', when=close_Target, comment='Target')
US30 Stealth StrategyOnly works on US30 (CAPITALCOM) 5 Minute chart
📈 Core Concept:
This is a trend-following strategy that captures strong market continuations by entering on:
The 3rd swing in the current trend,
Confirmed by a volume-verified engulfing candle,
With adaptive SL/TP and position sizing based on risk.
🧠 Entry Logic:
✅ Trend Filter
Uses a 50-period Simple Moving Average (SMA).
Buy only if price is above SMA → Uptrend
Sell only if price is below SMA → Downtrend
✅ Swing Count Logic
For buy: Wait for the 3rd higher low
For sell: Wait for the 3rd lower high
Uses a 5-bar lookback to detect highs/lows
This ensures you’re not buying early — but after trend is confirmed with structure.
✅ Engulfing Candle Confirmation
Bullish engulfing for buys
Bearish engulfing for sells
Candle must engulf previous bar completely (body logic)
✅ Volume Filter
Current candle volume must be greater than the 20-period volume average
Ensures trades only occur with institutional participation
✅ MA Slope Filter
Requires the slope of the 50 SMA over the last 3 candles to exceed 0.1
Avoids chop or flat trends
Adds momentum confirmation to the trade
✅ Session Filter (Time Filter)
Trades only executed between:
2:00 AM to 11:00 PM Oman Time (UTC+4)
Helps avoid overnight chop and illiquidity
📊 Position Sizing & Risk Management
✅ Smart SL (Adaptive Stop Loss)
SL is based on full size of the signal candle (including wick)
But if candle is larger than 25 points, SL is cut to half the size
This prevents oversized risk from long signals during volatile moves.
Mahnam BTC with breake outThis strategy is designed and coded specifically for trading Bitcoin in the 15-minute timeframe.
Of course, those who are skilled in coding can use it in other timeframes and currencies by changing its codes and personalizing it.
Of course, it is strongly recommended that people who want to use it first perform the necessary backtests or test this strategy on demo sites and then trade on the Tetri platform.
In this strategy, it only checks the entry and exit conditions and connects to the exchange using the API code and trades completely automatically.
This strategy determines the stop loss and take profit points on the exchange at the same time as entering the transaction and sets them.
///////////////////////// Code ////////////////////////////////
//@version=5
// Copyright (c) 2021-present, Alex Orekhov (everget)
//indicator('HalfTrend and TMA', overlay=true , max_lines_count = 500, max_labels_count = 500)
strategy(title='Mahnam BTC with breake out', overlay=true , max_bars_back=5000 , max_labels_count= 500 , max_boxes_count = 500,max_lines_count = 500, initial_capital=1000, currency = currency.USDT, default_qty_type=strategy.cash )
import PineCoders/Time/4
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
newyork = '0000-2400' // input.session(title='Session', defval='0000-2400')
time_newyork = time(timeframe.period, newyork)
///////////////////////////////////////////////////////////////////////////////////////////////////////////
// تعیین تاریخ شروع و پایان (بر حسب timestamp یونیکس)
// تنظیمات Input برای تاریخ شروع و پایان
startDate = input.time(timestamp('01 Jan 2025 00:00 UTC'), "📅 تاریخ شروع معاملات", inline="dateRange")
endDate = input.time(timestamp('31 Dec 2025 23:59 UTC'), "📅 تاریخ پایان معاملات", inline="dateRange")
// بررسی اینکه آیا زمان فعلی در بازه مجاز است یا خیر
isTradeEnabled = (time >= startDate) //and (time <= endDate)
///////////////////////////////////////////////////////////////////////////////////////////
// currentTime = time("15", "GMT+0")
// hourOfDay = hour(currentTime)
// notrade_hours1 = input.(12 , minval = 0 , maxval = 24 , title = "Hours Friday")
// notrade_hours2 = input.int(12 , minval = 0 , maxval = 24 , title = "Hours Monday")
////////////////////////////////////////////////////////////Holidays/////////////////////
// تعریف روزهای هفته
isSaturday = dayofweek == dayofweek.saturday //and hourOfDay > 12
isSunday = dayofweek == dayofweek.sunday
// isMonday = dayofweek == dayofweek.monday and hourOfDay < notrade_hours1
// isFriday = dayofweek == dayofweek.friday and hourOfDay > notrade_hours2
// رنگآمیزی پسزمینه برای شنبه (آبی کمرنگ) و یکشنبه (نارنجی کمرنگ)
bgcolor(isSaturday ? color.new(color.blue, 90) : isSunday ? color.new(color.orange, 90) : na)
//bgcolor(isMonday ? color.new(color.white, 90) : isFriday ? color.new(color.green, 90) : na)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//تنظیمات پوزیشن
leverage = input.int(defval = 10 , title = "leverage" , minval = 1 , maxval = 20,step = 5 , group="Posistion Settings==========================================")
quantity = input.float(defval = 500 , title = "quantity" , minval = 1, group="Posistion Settings==========================================")
sl_manager = input.float(defval = 0.5 , step = 0.1 , title = "Risk Percent Of Capital", group="Posistion Settings==========================================")
persent_fee = input.float(defval = 0.05 , title = "Persent Fee Eexchange" , minval = 0 , maxval = 1,step = 0.01 , group="Posistion Settings==========================================")
position_type = input.string(defval = "Buy_And_Sell" , title = "Position_type" , options = , group="Posistion Settings==========================================" )
r_r_long = input.float(defval = 2 , step = 0.1 , title = "R - R =>", group="Posistion Settings==========================================")
r_r_short = r_r_long // input.float(defval = 1.8 , step = 0.1 , title = "r_r Short =>")
//////////////////////////////////////////////////////// END ROC /////////////////////////////////////
day_of_week = input.bool(false , title = "Trade in 7 days", group="Posistion Settings==========================================")
show_tp_sl_ent = true // input.bool(defval=true, title= "Show Tp Sl Ent Box", group="Posistion Settings==========================================")
show_qty = true // input.bool(defval = true , title = "Show Qty Label", group="Posistion Settings==========================================")
//////////////////////////////////////////////////////// Information Position ////////////////////////////////////////////////////
var short_is_open = false
var long_is_open = false
//variant for sell position
var sl1 = 0.0
var tp1 = 0.0
var ent1 = 0.0
var equity1 = 0.0
var qty1 = ""
//variant for buy position
var sl3 = 0.0
var qty2 = ""
var tp3 = 0.0
var ent2 = 0.0
var equity2 = 0.0
symbol = str.tostring(syminfo.basecurrency + "-" + syminfo.currency )
////////////////////////////////////////////////////////////////////////////////////////////////////////
var long_condition = false
var short_condition = false
persent_candel = 0.7 // input.float(defval = 0.7 , step = 0.1 , title = "درصد حرکت آخرین کندل", group="CANDEL Settings==========================================")
////////////////////////////////////////////////////////////////////////////////////////////////////////
amplitude = 2 // input.int(title='Amplitude', defval=2)
channelDeviation =2 //input.int(title='Channel Deviation', defval=2)
showChannels =true // input.bool(title='Show Channels', defval=true)
var int trend = 0
var int nextTrend = 0
var float maxLowPrice = nz(low , low)
var float minHighPrice = nz(high , high)
var float up = 0.0
var float down = 0.0
float atrHigh = 0.0
float atrLow = 0.0
float arrowUp = na
float arrowDown = na
len_atr = 130 // input.int(130 , title = "Len Half Trend")
atr2 = ta.atr(len_atr) / 2
dev = channelDeviation * atr2
highPrice = high
lowPrice = low
highma = ta.sma(high, amplitude)
lowma = ta.sma(low, amplitude)
if nextTrend == 1
maxLowPrice := math.max(lowPrice, maxLowPrice)
if highma < maxLowPrice and close < nz(low , low)
trend := 1
nextTrend := 0
minHighPrice := highPrice
minHighPrice
else
minHighPrice := math.min(highPrice, minHighPrice)
if lowma > minHighPrice and close > nz(high , high)
trend := 0
nextTrend := 1
maxLowPrice := lowPrice
maxLowPrice
if trend == 0
if not na(trend ) and trend != 0
up := na(down ) ? down : down
arrowUp := up - atr2
arrowUp
else
up := na(up ) ? maxLowPrice : math.max(maxLowPrice, up )
up
atrHigh := up + dev
atrLow := up - dev
atrLow
else
if not na(trend ) and trend != 1
down := na(up ) ? up : up
arrowDown := down + atr2
arrowDown
else
down := na(down ) ? minHighPrice : math.min(minHighPrice, down )
down
atrHigh := down + dev
atrLow := down - dev
atrLow
//////////////////////////////////////////////////////////////////////////////////////////////////////////
len_rsi = 14 // input.int(14, group = "RSI Setting=================================")
rsi = ta.rsi(close , len_rsi)
//////////////////////////////////////////////////////////////////////////////////
// محاسبات مربوط به تعیین خطوط حمایت و مقاومت و شکست آنها
show_ATR = input.bool(false)
lookback_15 = 4 // input.int(4, title = "====>Look Back 1H=====>", inline = "2", group = "Setting Pivot======================", tooltip = "Drawing support and resistance in time frame 15 min in selected look back")
pl60 = fixnan(ta.pivotlow( low , lookback_15 , lookback_15 ))
ph60 = fixnan(ta.pivothigh( high , lookback_15 , lookback_15 ))
plot(show_ATR ? pl60 : na , color = color.red)
plot(show_ATR ? ph60 : na , color = color.green)
//////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
len_ema_fast_long = 2 // input.int(2)
sorce_tma_long = low // input.source(low)
ema_fast_long = ta.ema(sorce_tma_long , len_ema_fast_long)
len_ema_slow_long = 25 // input.int(25)
ema_slow_long = ta.ema(sorce_tma_long , len_ema_slow_long)
//**********************************
len_ema_fast_short = 2 // input.int(2)
sorce_tma_short = high // input.source(close)
ema_fast_short = ta.ema(sorce_tma_short , len_ema_fast_short)
len_ema_slow_short = 25 // input.int(25)
ema_slow_short = ta.ema(sorce_tma_short , len_ema_slow_short)
///////////////////////////////////////////////////////////////////////////////////////////////////////////
bars = 2 // input.int(9,title="Volume Previous bars to check")
//one_side = input.bool(false, title="Positive values only")
float volume_up = 0
float volume_down = 0
for i = 0 to bars
if (close >open )
volume_up:=volume_up+volume
else
volume_down:=volume_down+volume
total_up_down_vol= volume_up-volume_down
vol_bb = 8 // input.int(8)
vol_aa = 2 // input.int(2)
pivot_high_vol = fixnan(ta.pivothigh(total_up_down_vol , vol_bb , vol_aa ))
pivot_low_vol = fixnan(ta.pivotlow(total_up_down_vol , vol_bb , vol_aa ))
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
CLOSE = close
LOW = low
HIGH = high
//////////////////////////////////////////////////////////////////////////////////
//
//reg_trend_on = input(true, 'Activate Reg Trend Line')
length_bull_bear = 4 // input.int(defval= 4, title='🔹 Length Reg Trend line=', minval=1)
//
BullTrend_hist = 0.0
BearTrend_hist = 0.0
BullTrend = (CLOSE - ta.lowest(LOW, length_bull_bear)) / (ta.sma(ta.tr(true), length_bull_bear ))
BearTrend = (ta.highest(HIGH, length_bull_bear) - CLOSE) / (ta.sma(ta.tr(true), length_bull_bear ))
BearTrend2 = -1 * BearTrend
Trend = BullTrend - BearTrend
// plot columun
if BullTrend < 2
BullTrend_hist := BullTrend - 2
BullTrend_hist
if BearTrend2 > -2
BearTrend_hist := BearTrend2 + 2
BearTrend_hist
//alexgrover-Regression Line Formula
x = bar_index
y = Trend
x_ = ta.sma(x, length_bull_bear)
y_ = ta.sma(y, length_bull_bear)
mx = ta.stdev(x, length_bull_bear)
my = ta.stdev(y, length_bull_bear)
c = ta.correlation(x, y, length_bull_bear)
slope = c * (my / mx)
inter = y_ - slope * x_
reg_trend = x * slope + inter
/////////////////////////////////////////////////
long2 = true
short2 = true
close_H = request.security("" , "" , close )
open_H = request.security("" , "" , open )
if close_H > open_H and close_H > open_H
short2 := false
if close_H < open_H and close_H < open_H
long2 := false
nnn = 1.4 // input.float(1.4 , step = 0.1)
long_1 = BullTrend > nnn and ta.sma(reg_trend , 4 ) > ta.sma(reg_trend , 8 )
short_1 = BearTrend2 < -nnn and ta.sma(reg_trend , 4 ) < ta.sma(reg_trend , 8 )
///////////////////////////////////////////////////
lensig_mdi = 8 // input.int(8, title="ADX Smoothing", minval=1)
len_mdi = 2 // input.int(2, minval=1, title="DI Length")
up_mdi = ta.change(high)
down_mdi = -ta.change(low)
plusDM = na(up_mdi) ? na : (up_mdi > down_mdi and up_mdi > 0 ? up_mdi : 0)
minusDM = na(down_mdi) ? na : (down_mdi > up_mdi and down_mdi > 0 ? down_mdi : 0)
trur_mdi = ta.rma(ta.tr, len_mdi)
plus_mdi = fixnan(100 * ta.rma(plusDM, len_mdi) / trur_mdi)
minus_mdi = fixnan(100 * ta.rma(minusDM, len_mdi) / trur_mdi)
sum = plus_mdi + minus_mdi
adx = 100 * ta.rma(math.abs(plus_mdi - minus_mdi) / (sum == 0 ? 1 : sum), lensig_mdi)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// تنظیمات SuperTrend
atrPeriod = 28 // input(28, title="ATR Period Super Trend")
factor = 3 // input(3.0, title="Multiplier")
= ta.supertrend(factor, atrPeriod)
// تعریف تایمفریمهای بالاتر
htf0 = "30" // input.timeframe("30", title="تایمفریم تأیید اول (1H)")
htf1 = "60" // input.timeframe("60", title=" ایمفریم تأیید دوم (1H)")
htf2 = "240" // input.timeframe("240", title="تایمفریم تأیید سوم (4H)")
// محاسبه SuperTrend در تایمفریمهای بالاتر
supertrend1 = request.security(syminfo.tickerid, htf0, supertrend)
direction1 = request.security(syminfo.tickerid, htf0, direction)
supertrend1H = request.security(syminfo.tickerid, htf1, supertrend )
direction1H = request.security(syminfo.tickerid, htf1, direction)
supertrend4H = request.security(syminfo.tickerid, htf2, supertrend )
direction4H = request.security(syminfo.tickerid, htf2, direction)
// شرایط ورود
Condition_supertrend_long = (direction1H > 0 or direction4H > 0 or direction1 > 0) and volume > fixnan(ta.pivotlow(volume , 16 , 2 ))
Condition_supertrend_short = (direction1H < 0 or direction4H < 0 or direction1 < 0) and volume > fixnan(ta.pivotlow(volume , 16 , 2 ))
//////////////////////////////////////////////////////////////////////////////////////////////////////////
open_4h = request.security("" , "240" , open )
close_4h = request.security("" , "240" , close )
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
if day_of_week == false
if isTradeEnabled == true and time == time_newyork and not isSaturday and not isSunday //and not isFriday and not isMonday
long_condition := long_is_open == false and short_is_open == false and total_up_down_vol > pivot_low_vol and rsi > 51 and rsi < 80
and math.abs(close - open) < (persent_candel/100) * close and ema_fast_long > ema_slow_long and high > ph60 and open < ph60 and long_1 == true and long2 == true
and plus_mdi > minus_mdi and Condition_supertrend_long == true and high > close_4h and close > atrHigh
short_condition := long_is_open == false and short_is_open == false and total_up_down_vol > pivot_low_vol and rsi < 49 and rsi > 20
and math.abs(close - open) < (persent_candel/100) * close and ema_fast_short < ema_slow_short and low < pl60 and open > pl60 and short_1 == true and short2 == true
and plus_mdi < minus_mdi and Condition_supertrend_short == true and low < close_4h and close < atrLow
if day_of_week == true
if isTradeEnabled == true and time == time_newyork
long_condition := long_is_open == false and short_is_open == false and total_up_down_vol > pivot_low_vol and rsi > 51 and rsi < 80
and math.abs(close - open) < (persent_candel/100) * close and ema_fast_long > ema_slow_long and high > ph60 and open < ph60 and long_1 == true and long2 == true
and plus_mdi > minus_mdi and Condition_supertrend_long == true and high > close_4h and close > atrHigh
short_condition := long_is_open == false and short_is_open == false and total_up_down_vol > pivot_low_vol and rsi < 49 and rsi > 20
and math.abs(close - open) < (persent_candel/100) * close and ema_fast_short < ema_slow_short and low < pl60 and open > pl60 and short_1 == true and short2 == true
and plus_mdi < minus_mdi and Condition_supertrend_short == true and low < close_4h and close < atrLow
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//تنظیمات استاپ سل پوزیشن شورت و لانگ بر اساس ATR
length_atr = 2 // input.int(title='Length', defval=2, minval=1, group = "StopLoss Setting=================================")
m = 0.9 // input.float(0.9,step = 0.1,title = 'Multiplier', group = "StopLoss Setting=================================")
show_atr = false // input.bool(false, group = "StopLoss Setting=================================")
src1_atr = high //input(high , title = "Stoploss Short")
src2_atr = low //input(low ,title = "Stoploss Long")
collong_atr = color.rgb(0,255,0,0)
colshort_atr = color.rgb(255,0,0,0)
a1 = (ta.sma(ta.tr(true), length_atr) * m) / 2 + (ta.wma(ta.tr(true), length_atr) * m) / 2
stop_loss_short = src1_atr + a1
stop_loss_long = src2_atr - a1
p1_atr1 = plot(show_atr ? stop_loss_long : na, title='ATR Short Stop Loss', color=colshort_atr, style=plot.style_circles)
p2_atr1 = plot(show_atr ? stop_loss_short : na, title='ATR Long Stop Loss', color=collong_atr, style=plot.style_circles)
/////////////////////////////////////////////////////////////////Start Stop Loss///////////////////////////////////////////////
/////////////////////////////////////////////////////////////////END Stop Loss///////////////////////////////////////////////
var total_long_trade = 0
var loss_long = 0
var profit_long = 0
var sood_pos_long = 0.00
var zarar_pos_long = 0.00
var kol_sood_long = 0.00
var total_short_trade = 0
var loss_short = 0
var profit_short = 0
var sood_pos_short = 0.00
var zarar_pos_short = 0.00
var kol_sood_short = 0.00
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ━━━━━━━━━━━━━━━━━━ تنظیمات ورودی ━━━━━━━━━━━━━━━━━━
var int candlesToWait = 12 // input.int(1, "تعداد کندلهای انتظار پس از معامله", minval=1)
// ━━━━━━━━━━━━━━━━━━ شناسایی آخرین معامله ━━━━━━━━━━━━━━━━━━
var int lastTradeCloseBar = na
var bool isCoolDownOver = true
// اگر معاملهای بسته شد، شماره کندل آن را ذخیره کن
if strategy.closedtrades > 0 and (na(lastTradeCloseBar) or strategy.closedtrades != strategy.closedtrades )
lastTradeCloseBar := bar_index
isCoolDownOver := false
// بررسی آیا تعداد کندلهای موردنظر گذشته است؟
if not na(lastTradeCloseBar) and (bar_index - lastTradeCloseBar) >= candlesToWait
isCoolDownOver := true
bgcolor(isCoolDownOver ? na : color.new(color.red, 90), title="Cooldown Status")
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// تنظیمات دستورات لازم برای ارسال به صرافی جهت پوزیشن لانگ
//ADD_quantity = 1.5 // input.float(2 , title = "در صورت واگرایی ماجین رو چند بابر کنم؟")
if position_type == "Buy" or position_type == "Buy_And_Sell"
if long_condition and isCoolDownOver
ent2 := close
sl3 :=stop_loss_long - (stop_loss_long * (0.5 / leverage) / 100 )
tp3 := ent2 + ((ent2 - sl3) * r_r_long)
number_coin = ((quantity * leverage * sl_manager) / ((ent2 - sl3) *100))
equity2 := math.round ((number_coin * close ) , 3)
if equity2 > quantity * leverage
equity2 := quantity * leverage
//////////////////////////////////////////////////////////////////////////////////
if show_qty
label.new(bar_index , low , str.tostring(equity2) + "$" , color = color.rgb(0, 255, 0,0) , size = size.normal , style = label.style_label_up)
strategy.entry(id="buy", direction = strategy.long , qty=(equity2/close) )
if close >= 10 and close < 500
qty2 := str.tostring(math.round(equity2/close , 2))
else
qty2 := str.tostring(math.round(equity2/close , 0))
if close > 500
qty2 := str.tostring(math.round(equity2/close , 3 ))
if symbol == "AAVEUSDT"
qty2 := str.tostring(math.round(equity2/close , 1))
// ================/ برای باز کردن پوزیشن از این مقدار استفاده میکند /======================
message1 = '{"symbol":"'+symbol+'","type":"MARKET", "side":"BUY", "positionSide": "LONG", "quantity":"'+qty2+'","leverage": "'+str.tostring(leverage)+'","marginMode": "Isolated","botmix-action":"open-market-order-v2"}'
// message1 = '{ "side":"Ask","symbol":"'+symbol+'","tradeType":"Market","entrustVolume":"'+qty1+'","action":"Open","marginMode":"Isolated","leverage":"'+str.tostring(leverage)+'", "takerProfitPrice":"'+str.tostring(tp1)+'","stopLossPrice":"'+str.tostring(sl1)+'","botmix-action":"open-market-order" }'
// message1 = '{ "batchOrders": ,"botmix-action":"open-multiple-order" }'
alert(message1 , alert.freq_once_per_bar)
message2 = '{"symbol":"'+symbol+'","type":"LIMIT","side":"SELL", "positionSide": "LONG","delay": 5 ,"quantity":"'+qty2+'","price": "'+str.tostring(tp3)+'", "botmix-action":"open-market-order-v2"}'
alert(message2 , alert.freq_once_per_bar)
message3 = '{"symbol":"'+symbol+'","type":"STOP_MARKET","side":"SELL","positionSide": "LONG","delay": 10 ,"quantity":"'+qty2+'","price": "'+str.tostring(sl3)+'", "stopPrice": "'+str.tostring(sl3)+'","botmix-action":"open-market-order-v2"}'
alert(message3 , alert.freq_once_per_bar)
long_is_open := true
if show_tp_sl_ent
line.new(bar_index, tp3, bar_index + 15, tp3, xloc= xloc.bar_index, color= color.rgb(0, 255, 0,0 ), width = 1)
box.new(bar_index , tp3 , bar_index + 15 , ent2 ,bgcolor = color.rgb(0, 255, 0 , 90) , border_color = color.rgb(0, 255, 0 , 80) )
line.new(bar_index, (tp3 - ((tp3 - ent2) /2)), bar_index + 15, (tp3 - ((tp3 - ent2) /2)), xloc= xloc.bar_index, color= color.rgb(0, 17, 255), width = 2 , style = line.style_dashed)
line.new(bar_index, sl3, bar_index + 15, sl3, xloc= xloc.bar_index, color= color.rgb(255, 0, 0,0), width = 1)
box.new(bar_index , sl3 , bar_index + 15 , ent2 ,bgcolor = color.rgb(255, 0, 0, 90) , border_color = color.rgb(255, 0, 0 , 80) )
line.new(bar_index , ent2 , bar_index + 15 , ent2 , color = color.rgb(255, 255, 0, 0))
/////////////////////////////////////////////////////////
total_long_trade := total_long_trade + 1
if low <= sl3 and long_is_open == true
loss_long := loss_long + 1
zarar_pos_long := zarar_pos_long + (((ent2 - sl3) / ent2) * equity2)
if high >= tp3 and long_is_open == true
profit_long := profit_long + 1
sood_pos_long := sood_pos_long +(((tp3 - ent2) / ent2) * equity2)
kol_sood_long := sood_pos_long - zarar_pos_long
/////////////////////////////////////////////////////////////
if (low <= sl3 or high >= tp3) and long_is_open == true
long_is_open := false
strategy.exit( id = "buy" , from_entry = "buy" , limit = tp3 , stop = sl3 , qty_percent = 100 , comment_profit = "tp" , comment_loss = "sl" )
color_kol_pos_long = kol_sood_long >0 ? color.rgb(0,255,0) : color.rgb(255,0,0)
// //////////////////////LONG___ENNNDD//////////////////////////////////////////////////////////
// تظیمات دستورات لازم برای ارسال به صرافی جهت پوزیشن شورت
if position_type == "Sell" or position_type == "Buy_And_Sell"
if short_condition and isCoolDownOver
ent1 := close
sl1 :=stop_loss_short + (stop_loss_short * (0.5 / leverage) / 100 )
tp1 := ent1 - ((sl1 - ent1 ) * r_r_short)
number_coin = ((quantity * leverage * sl_manager) / ((sl1 - ent1) *100))
equity1 := math.round ((number_coin * close ) , 3)
if equity1 > quantity * leverage
equity1 := quantity * leverage
/////////////////////////////////////////////////////////////////////////////////////////
if show_qty
label.new(bar_index , high , str.tostring(equity1) + "$" , color = color.rgb(255, 0, 0,0) , size = size.normal , style = label.style_label_down)
strategy.entry(id="sell", direction = strategy.short, qty=(equity1/close) )
if close >= 10 and close < 500
qty1 := str.tostring(math.round(equity1/close , 2))
else
qty1 := str.tostring(math.round(equity1/close , 0))
if close > 500
qty1 := str.tostring(math.round(equity1/close , 3))
if symbol == "AAVEUSDT"
qty1 := str.tostring(math.round(equity1/close , 1))
// ================/ برای باز کردن پوزیشن از این مقدار استفاده میکند /======================
message1 = '{"symbol":"'+symbol+'","type":"MARKET", "side":"SELL", "positionSide": "SHORT", "quantity":"'+qty1+'","leverage": "'+str.tostring(leverage)+'","marginMode": "Isolated","botmix-action":"open-market-order-v2"}'
// message1 = '{ "side":"Ask","symbol":"'+symbol+'","tradeType":"Market","entrustVolume":"'+qty1+'","action":"Open","marginMode":"Isolated","leverage":"'+str.tostring(leverage)+'", "takerProfitPrice":"'+str.tostring(tp1)+'","stopLossPrice":"'+str.tostring(sl1)+'","botmix-action":"open-market-order" }'
// message1 = '{ "batchOrders": ,"botmix-action":"open-multiple-order" }'
alert(message1 , alert.freq_once_per_bar)
message2 = '{"symbol":"'+symbol+'","type":"LIMIT","side":"BUY", "positionSide": "SHORT","delay": 5 ,"quantity":"'+qty1+'","price": "'+str.tostring(tp1)+'", "botmix-action":"open-market-order-v2"}'
alert(message2 , alert.freq_once_per_bar)
message3 = '{"symbol":"'+symbol+'","type":"STOP_MARKET","side":"BUY","positionSide": "SHORT","delay": 10 ,"quantity":"'+qty1+'","price": "'+str.tostring(sl1)+'", "stopPrice": "'+str.tostring(sl1)+'","botmix-action":"open-market-order-v2"}'
alert(message3 , alert.freq_once_per_bar)
short_is_open := true
if show_tp_sl_ent
line.new(bar_index, tp1, bar_index + 15, tp1, xloc= xloc.bar_index, color= color.rgb(0, 255, 0,0 ), width = 1)
box.new(bar_index , tp1 , bar_index + 15 , ent1 ,bgcolor = color.rgb(0, 255, 0 , 90) , border_color = color.rgb(0, 255, 0 , 80) )
line.new(bar_index, (tp1+((ent1 - tp1)/2)), bar_index + 15, (tp1+((ent1 - tp1)/2)), xloc= xloc.bar_index, color= color.rgb(4, 0, 255), width = 2 , style= line.style_dashed)
line.new(bar_index, sl1, bar_index + 15, sl1, xloc= xloc.bar_index, color= color.rgb(255, 0, 0,50), width = 1)
box.new(bar_index , sl1 , bar_index + 15 , ent1 ,bgcolor = color.rgb(255, 0, 0, 90) , border_color = color.rgb(255, 0, 0 , 80) )
line.new(bar_index , ent1 , bar_index + 15 , ent1 , color = color.rgb(255, 255, 0,0))
////////////////////////////////////////////////////////////////////////////////////
total_short_trade := total_short_trade + 1
if high >= sl1 and short_is_open == true
loss_short := loss_long + 1
zarar_pos_short := zarar_pos_short + (((sl1 - ent1) / ent1) * equity1)
if low <= tp1 and short_is_open == true
profit_short := profit_short + 1
sood_pos_short := sood_pos_short +(((ent1 - tp1) / ent1) * equity1)
kol_sood_short := sood_pos_short - zarar_pos_short
///////////////////////////////////////////////////////////////////////////////////
if (high >= sl1 or low <= tp1 ) and short_is_open == true
short_is_open := false
strategy.exit( id = "sellext1" , from_entry = "sell" , limit = tp1 , stop = sl1 , qty_percent = 100 , comment_profit = "tp" , comment_loss = "sl" )
color_kol_pos_short = kol_sood_short > 0 ? color.rgb(0,255,0) : color.rgb(255,0,0)
////////////////////////////////////////////////////////////////////////////////////////////
kol_trade = loss_short + loss_long + profit_long + profit_short
/////////////////////SHORT___ENNNDD//////////////////////////////////////////////////////
closed_trades = (loss_short + loss_long + profit_long + profit_short) // strategy.closedtrades
kolfee = (closed_trades * quantity * leverage * persent_fee) / 100
net_profit = math.round((kol_sood_short + kol_sood_long) , 2 ) - kolfee
net_percent = math.round((net_profit / quantity) * 100 , 2)
win_rate = math.round(((profit_long + profit_short) / kol_trade) * 100 , 2) //math.round((strategy.wintrades / strategy.closedtrades) * 100 , 2)
ending = math.round((quantity + net_profit) , 2)
profit_factor = math.round((sood_pos_long + sood_pos_short) / math.abs(zarar_pos_long + zarar_pos_short) , 2)
drow_down = math.round((strategy.max_drawdown / quantity) * 100, 2 )
show_reportTabel = input.bool(true)
if show_reportTabel
table_color = color.rgb(0, 0, 0)
var table result_table = table.new(position.top_right, 30, 40, bgcolor=color.rgb(255,255,255,0), frame_color=color.rgb(0, 0, 0,0), frame_width=1, border_width=2)
table.cell(result_table , column = 0 , row = 0 , text = "TEST BTC with breake out: " + str.tostring(kol_trade) , bgcolor = table_color , text_color = color.rgb(255,255,255,0))
table.cell(result_table , column = 1 , row = 0 , text = "starting: " + str.tostring(quantity) + "$" , bgcolor = table_color, text_color = color.rgb(255,255,255,0))
table.cell(result_table , column = 2 , row = 0 , text = "Net Profit: " + str.tostring(net_profit) + "$: " + " fee = " + str.tostring(kolfee) , bgcolor = table_color, text_color = net_profit > 0 ? color.rgb(0,255,0,0) : color.rgb(255,0,0,0))
table.cell(result_table , column = 0 , row = 1 , text = "Win Rate: " + str.tostring(win_rate) + "%" , bgcolor = table_color, text_color = color.rgb(255,255,255,0))
table.cell(result_table , column = 1 , row = 1 , text = "Ending: " + str.tostring(ending) + "$" , bgcolor = table_color, text_color = color.rgb(255,255,255,0))
table.cell(result_table , column = 2 , row = 1 , text = "Profit Factor: " + str.tostring(profit_factor) , bgcolor = table_color, text_color = color.rgb(255,255,255,0))
table.cell(result_table , column = 3 , row = 0 , text = "Net Percent: " + str.tostring(net_percent) + "%" , bgcolor = table_color, text_color = net_percent > 0 ? color.rgb(0,255,0,0) : color.rgb(255,0,0,0))
table.cell(result_table , column = 3 , row = 1 , text = "Draw Down: " + str.tostring(drow_down) + "%" , bgcolor = table_color, text_color = color.rgb(255,255,255,0))
table.cell(result_table , column = 4 , row = 0 , text = "Stop: " + "Short =" + str.tostring(loss_short)+ " " +"Long =" + str.tostring(loss_long) , bgcolor = table_color, text_color = color.rgb(255,0,0,0))
table.cell(result_table , column = 4 , row = 1 , text = "TP: " + "Short =" + str.tostring(profit_short)+ " " +"Long =" + str.tostring(profit_long) , bgcolor = table_color, text_color = color.rgb(0,255,0,0))
table.cell(result_table , column = 5 , row = 0 , text = "Short: " + "sood =" + str.tostring(math.round(sood_pos_short,2)) + " " + "Zarar =" + str.tostring(math.round(zarar_pos_short,2)) , bgcolor = table_color, text_color = color.rgb(0,255,0,0))
table.cell(result_table , column = 5 , row = 1 , text = "Long: " + "sood =" + str.tostring(math.round(sood_pos_long,2)) + " " + "Zarar =" + str.tostring(math.round(zarar_pos_long,2)) , bgcolor = table_color, text_color = color.rgb(0,255,0,0))
table.cell(result_table , column = 6 , row = 0 , text = "Kol Sood Short: " + "Short =" + str.tostring(math.round(kol_sood_short,2)) , bgcolor = table_color, text_color = color_kol_pos_short)
table.cell(result_table , column = 6 , row = 1 , text = "Kol Sood Long: " + "LONG =" + str.tostring(math.round(kol_sood_long,2)) , bgcolor = table_color, text_color = color_kol_pos_long)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //////////////////////////////////////////////////////////////////////////////////////////////////////
// // ********** تنظیمات **********
// show_monthly_Report = input.bool(false, "نمایش گزارش ماهیانه")
// exchange_fee_percent = 0.05 / 100 // input.float(0.05, "کارمزد صرافی (%)", step=0.01) / 100
// indicator_name = 'BTC with breake out' // input.string("تحلیلگر حرفه ای - گزارش ماهیانه", "عنوان اندیکاتور")
// show_total_row = true // input.bool(true, "نمایش سطر جمع کل")
// // ********** ایجاد جدول **********
// var table monthlyReport = table.new(position = position.top_right, columns = 6,rows = 21,bgcolor = color.rgb(33, 33, 33),
// border_width = 2,border_color = color.rgb(80, 80, 80),frame_width = 1,frame_color = color.rgb(50, 50, 50))
// // ********** متغیرهای ماهیانه **********
// var int currentMonth = na
// var int monthTrades = 0
// var int monthWinningTrades = 0
// var float totalFees = 0.0
// var float monthNetProfit = 0.0
// // ********** متغیرهای جمع کل **********
// var float totalAllTrades = 0.0
// var float totalAllFees = 0.0
// var float totalAllNetProfit = 0.0
// var int totalAllWinningTrades = 0
// var int totalAllMonths = 0
// // ********** تشخیص تغییر ماه **********
// isNewMonth = ta.change(month) or ta.change(year)
// // ********** محاسبات معاملات **********
// tradeClosed = strategy.closedtrades > strategy.closedtrades
// if tradeClosed
// lastTradeIndex = strategy.closedtrades - 1
// tradeSize = math.abs(strategy.closedtrades.size(lastTradeIndex) * strategy.closedtrades.exit_price(lastTradeIndex))
// tradeFee = tradeSize * exchange_fee_percent
// totalFees := totalFees + tradeFee
// tradeProfit = strategy.closedtrades.profit(lastTradeIndex)
// monthNetProfit := monthNetProfit + tradeProfit
// monthTrades := monthTrades + 1
// if tradeProfit > 0
// monthWinningTrades := monthWinningTrades + 1
// // ********** مدیریت گزارش ماهیانه **********
// if isNewMonth and show_monthly_Report and not na(currentMonth)
// // محاسبات ماهانه
// grossProfit = monthNetProfit
// netProfit = grossProfit - totalFees
// winRate = monthTrades > 0 ? (monthWinningTrades/monthTrades)*100 : 0
// // به روزرسانی جمع کل
// totalAllTrades := totalAllTrades + monthTrades
// totalAllFees := totalAllFees + totalFees
// totalAllNetProfit := totalAllNetProfit + netProfit
// totalAllWinningTrades := totalAllWinningTrades + monthWinningTrades
// totalAllMonths := totalAllMonths + 1
// // نمایش در جدول
// row = (month % 12 == 0 ? 12 : month % 12) + 2 // +2 برای جا دادن سطرهای عنوان
// monthName = str.tostring(year ) + "-" + str.tostring(month , "00")
// table.cell(monthlyReport, 0, row, monthName, text_color=color.white)
// table.cell(monthlyReport, 1, row, str.tostring(monthTrades), text_color=color.white)
// table.cell(monthlyReport, 2, row, str.tostring(grossProfit, "0.00") + " $")
// table.cell(monthlyReport, 3, row, str.tostring(totalFees, "0.00") + " $")
// table.cell(monthlyReport, 4, row, str.tostring(netProfit, "0.00") + " $")
// table.cell(monthlyReport, 5, row, str.tostring(winRate, "1.0") + "%")
// // رنگ آمیزی سود/زیان
// textColor = netProfit >= 0 ? color.rgb(0, 200, 0) : color.rgb(200, 0, 0)
// for i = 2 to 5
// table.cell_set_text_color(monthlyReport, i, row, textColor)
// // ********** سطر جمع کل **********
// if show_monthly_Report and show_total_row and totalAllMonths > 0
// totalWinRate = totalAllTrades > 0 ? (totalAllWinningTrades/totalAllTrades)*100 : 0
// table.cell(monthlyReport, 0, 15, "جمع کل (" + str.tostring(totalAllMonths) + " ماه)",
// text_color=color.yellow,
// bgcolor=color.rgb(50, 50, 50),
// width=6)
// table.cell(monthlyReport, 1, 15, str.tostring(totalAllTrades),
// text_color=color.yellow,
// bgcolor=color.rgb(50, 50, 50))
// table.cell(monthlyReport, 2, 15, str.tostring(totalAllNetProfit + totalAllFees, "0.00") + " $",
// text_color=color.yellow,
// bgcolor=color.rgb(50, 50, 50))
// table.cell(monthlyReport, 3, 15, str.tostring(totalAllFees, "0.00") + " $",
// text_color=color.yellow,
// bgcolor=color.rgb(50, 50, 50))
// table.cell(monthlyReport, 4, 15, str.tostring(totalAllNetProfit, "0.00") + " $",
// text_color = totalAllNetProfit >= 0 ? color.green : color.red,
// bgcolor=color.rgb(50, 50, 50))
// table.cell(monthlyReport, 5, 15, str.tostring(totalWinRate, "1.0") + "%",
// text_color=color.yellow,
// bgcolor=color.rgb(50, 50, 50))
// // ********** ریست ماهیانه **********
// if isNewMonth
// currentMonth := month
// monthTrades := 0
// monthWinningTrades := 0
// totalFees := 0.0
// monthNetProfit := 0.0
// // ********** عنوانهای جدول **********
// if barstate.isfirst and show_monthly_Report
// // عنوان اصلی (یکپارچه در سطر اول)
// table.cell(
// monthlyReport,
// column = 4, // ستون شروع (0 = اولین ستون)
// row = 0, // ردیف 0 (اولین ردیف)
// text = indicator_name,
// bgcolor = color.rgb(0, 0, 0),
// text_size = size.small,
// text_color = color.rgb(255,255,0),
// width = 12, // گسترش روی تمام 6 ستون
// height = 4 // ارتفاع بیشتر برای وضوح بهتر
// )
// // عنوان ستونها (در ردیف دوم)
// headers = array.from("ماه", "تعداد", "سود ناخالص", "کارمزد", "سود خالص", "نرخ برد")
// for i = 0 to 5
// table.cell(
// monthlyReport,
// column = i,
// row = 1, // ردیف بعد از عنوان اصلی
// text = array.get(headers, i),
// text_color = color.white,
// bgcolor = color.rgb(60, 60, 60),
// width = 1 // عرض معمولی برای هر ستون
// )