Meats: Backwardation/CantangoMEATS: Live Cattle , Feeder Cattle, Lean Hogs (LE, GF , HE)
Quickly visualize carrying charge market vs backwardized market by comparing the price of the next 2 years of futures contracts.
Carrying charge (contract prices increasing into the future) = normal, representing the costs of carrying/storage of a commodity. When this is flipped to Backwardation (contract prices decreasing into the future): its a bullish sign: Buyers want this commodity, and they want it NOW.
Note: indicator does NOT map to time axis in the same way as price; it simply plots the progression of contract months out into the future; left to right; so timeframe DOESN'T MATTER for this plot
There's likely some more efficient way to write this; e.g. when plotting for Live Cattle (LE); 8 of the security requests are redundant; but they are still made; and can make this slower to load
TO UPDATE(once a year will do): in REQUEST CONTRACTS section, delete old contracts (top) and add new ones (bottom). Then in PLOTTING section, Delete old contract labels (bottom); add new contract labels (top); adjust the X in 'bar_index-(X+_historical)' numbers accordingly
This is one of three similar indicators: Meats | Metals | Grains
-If you want to build from this; to work on other commodities ; be aware that Tradingview limits the number of contract calls to 40 (hence the 3 seperate indicators)
Tips:
-Right click and reset chart if you can't see the plot; or if you have trouble with the scaling.
-Right click and add to new scale if you prefer this not to overlay directly on price. Or move to new pane below.
--Added historical input: input days back in time; to see the historical shape of the Futures curve via selecting 'days back' snapshot
updated 15th June 2022
© twingall
Cerca negli script per "Futures"
Forward Curve Visualization ToolProvide the spot symbol and the futures product root, and the script automatically scans all relevant contracts for you—no more tedious manual searches. The result is a clean, intuitive chart showing the live forward curve in real time.
It also detects contango or backwardation conditions (based on spot < F1 < F2 < F3).
Future Features:
Plot historical snapshots of the curve (1 day, 1 week, or 1 month ago) to understand market trends over time.
Display additional metrics such as annualized basis, cost of carry (CoC), and even volume or open interest for deeper insights.
If you trade futures and watch the forward curve, this script will give you the actionable data you need and get more ideas or features you’d like to see. Let’s build them together!
Disclaimer
Please remember that past performance may not be indicative of future results.
Due to various factors, including changing market conditions, the strategy may no longer perform as well as in historical backtesting.
This post and the script don’t provide any financial advice.
Metals:Backwardation/ContangoMETALS: Gold , Silver , Copper ( GC , SI, HG)
Quickly visualize carrying charge market vs backwardized market by comparing the price of the next 2 years of futures contracts.
Carrying charge (contract prices increasing into the future) = normal, representing the costs of carrying/storage of a commodity. When this is flipped to Backwardation (contract prices decreasing into the future): its a bullish sign: Buyers want this commodity, and they want it NOW.
Note: indicator does not map to time axis in the same way as price; it simply plots the progression of contract months out into the future; left to right; so timeframe DOESN'T MATTER for this plot
There's likely some more efficient way to write this; e.g. when plotting for Gold ( GC ); 21 of the security requests are redundant; but they are still made; and can make this slower to load
TO UPDATE(once a year will do): in REQUEST CONTRACTS section, delete old contracts (top) and add new ones (bottom). Then in PLOTTING section, Delete old contract labels (bottom); add new contract labels (top); adjust the X in 'bar_index-(X+_historical)' numbers accordingly
This is one of three similar indicators: Meats | Metals | Grains
-If you want to build from this; to work on other commodities ; be aware that Tradingview limits the number of contract calls to 40 (hence the 3 seperate indicators)
Tips:
-Right click and reset chart if you can't see the plot; or if you have trouble with the scaling.
-Right click and add to new scale if you prefer this not to overlay directly on price. Or move to new pane below.
--Added historical input: input days back in time; to see the historical shape of the Futures curve via selecting 'days back' snapshot
updated 15th June 2022
© twingall
Grains:Backwardation/ContangoGRAINS: Wheat , Soybeans , Corn (ZW, ZS, ZC )
Quickly visualize carrying charge market vs backwardized market by comparing the price of the next 2 years of futures contracts.
Carrying charge (contract prices increasing into the future) = normal, representing the costs of carrying/storage of a commodity. When this is flipped to Backwardation (contract prices decreasing into the future): its a bullish sign: Buyers want this commodity, and they want it NOW.
The above chart shows a nice example of backwardation.
Note: indicator does not map to time axis in the same way as price; it simply plots the progression of contract months out into the future; left to right; so timeframe DOESN'T MATTER for this plot
There's likely some more efficient way to write this; e.g. when plotting for Wheat (ZW); 15 of the security requests are redundant; but they are still made; and can make this slower to load
TO UPDATE(once a year will do): in REQUEST CONTRACTS section, delete old contracts (top) and add new ones (bottom). Then in PLOTTING section, Delete old contract labels (bottom); add new contract labels (top); adjust the X in 'bar_index-(X+_historical)' numbers accordingly
This is one of three similar indicators: Meats | Metals | Grains
-If you want to build from this; to work on other commodities ; be aware that Tradingview limits the number of contract calls to 40 (hence the 3 seperate indicators)
Tips:
-Right click and reset chart if you can't see the plot; or if you have trouble with the scaling.
-Right click and add to new scale if you prefer this not to overlay directly on price. Or move to new pane below.
--Added historical input: input days back in time; to see the historical shape of the Futures curve via selecting 'days back' snapshot
updated 15th June 2022
© twingall
Settlement priceThis script is meant to be used intraday, on futures products.
It charts the previous day/week/month settlement price as a constant level intraday.
The settlement price of a product is calculated by the exchange at the end of each day. It is shown in the D/W/M chart as the close price. The settlement price does not coincide with the last close price intraday, thus creating the need of a script like this.
The settlement price can be a pivotal price in intraday futures trading, as it can act as support or resistance
You can select the resolution of the settlement by the "Resolution" input
DNSE VN301!, SMA & EMA Cross StrategyDiscover the tailored Pinescript to trade VN30F1M Future Contracts intraday, the strategy focuses on SMA & EMA crosses to identify potential entry/exit points. The script closes all positions by 14:25 to avoid holding any contracts overnight.
HNX:VN301!
www.tradingview.com
Setting & Backtest result:
1-minute chart, initial capital of VND 100 million, entering 4 contracts per time, backtest result from Jan-2024 to Nov-2024 yielded a return over 40%, executed over 1,000 trades (average of 4 trades/day), winning trades rate ~ 30% with a profit factor of 1.10.
The default setting of the script:
A decent optimization is reached when SMA and EMA periods are set to 60 and 15 respectively while the Long/Short stop-loss level is set to 20 ticks (2 points) from the entry price.
Entry & Exit conditions:
Long signals are generated when ema(15) crosses over sma(60) while Short signals happen when ema(15) crosses under sma(60). Long orders are closed when ema(15) crosses under sma(60) while Short orders are closed when ema(15) crosses over sma(60).
Exit conditions happen when (whichever came first):
Another Long/Short signal is generated
The Stop-loss level is reached
The Cut-off time is reached (14:25 every day)
*Disclaimers:
Futures Contracts Trading are subjected to a high degree of risk and price movements can fluctuate significantly. This script functions as a reference source and should be used after users have clearly understood how futures trading works, accessed their risk tolerance level, and are knowledgeable of the functioning logic behind the script.
Users are solely responsible for their investment decisions, and DNSE is not responsible for any potential losses from applying such a strategy to real-life trading activities. Past performance is not indicative/guarantee of future results, kindly reach out to us should you have specific questions about this script.
---------------------------------------------------------------------------------------
Khám phá Pinescript được thiết kế riêng để giao dịch Hợp đồng tương lai VN30F1M trong ngày, chiến lược tập trung vào các đường SMA & EMA cắt nhau để xác định các điểm vào/ra tiềm năng. Chiến lược sẽ đóng tất cả các vị thế trước 14:25 để tránh giữ bất kỳ hợp đồng nào qua đêm.
Thiết lập & Kết quả backtest:
Chart 1 phút, vốn ban đầu là 100 triệu đồng, vào 4 hợp đồng mỗi lần, kết quả backtest từ tháng 1/2024 tới tháng 11/2024 mang lại lợi nhuận trên 40%, thực hiện hơn 1.000 giao dịch (trung bình 4 giao dịch/ngày), tỷ lệ giao dịch thắng ~ 30% với hệ số lợi nhuận là 1,10.
Thiết lập mặc định của chiến lược:
Đạt được một mức tối ưu ổn khi SMA và EMA periods được đặt lần lượt là 60 và 15 trong khi mức cắt lỗ được đặt thành 20 tick (2 điểm) từ giá vào.
Điều kiện Mở và Đóng vị thế:
Tín hiệu Long được tạo ra khi ema(15) cắt trên sma(60) trong khi tín hiệu Short xảy ra khi ema(15) cắt dưới sma(60). Lệnh Long được đóng khi ema(15) cắt dưới sma(60) trong khi lệnh Short được đóng khi ema(15) cắt lên sma(60).
Điều kiện đóng vị thể xảy ra khi (tùy điều kiện nào đến trước):
Một tín hiệu Long/Short khác được tạo ra
Giá chạm mức cắt lỗ
Lệnh chưa đóng nhưng tới giờ cut-off (14:25 hàng ngày)
*Tuyên bố miễn trừ trách nhiệm:
Giao dịch hợp đồng tương lai có mức rủi ro cao và giá có thể dao động đáng kể. Chiến lược này hoạt động như một nguồn tham khảo và nên được sử dụng sau khi người dùng đã hiểu rõ cách thức giao dịch hợp đồng tương lai, đã đánh giá mức độ chấp nhận rủi ro của bản thân và hiểu rõ về logic vận hành của chiến lược này.
Người dùng hoàn toàn chịu trách nhiệm về các quyết định đầu tư của mình và DNSE không chịu trách nhiệm về bất kỳ khoản lỗ tiềm ẩn nào khi áp dụng chiến lược này vào các hoạt động giao dịch thực tế. Hiệu suất trong quá khứ không chỉ ra/cam kết kết quả trong tương lai, vui lòng liên hệ với chúng tôi nếu bạn có thắc mắc cụ thể về chiến lược giao dịch này.
Fed Fund Futures Custom AverageThis indicator helps traders track the expected average interest rate for the upcoming 12 months based on Fed Fund Futures. It calculates the average price of the next 12 monthly futures contracts and also shows the spread against the 1-Year US Treasury yield (US01Y). This can be useful for understanding market expectations regarding interest rate changes and identifying trading opportunities related to interest rate movements.
Failed Breakdown Detection'Failed Breakdowns' are a popular set up for long entries.
In short, the set up requires:
1) A significant low is made ('initial low')
2) Initial low is undercut with a new low
3) Price action then 'reclaims' the initial low by moving +8-10 points from the initial low
This script aims at detecting such set ups. It was coded with the ES Futures 15 minute chart in mind but may be useful on other instruments and time frames.
Business Logic:
1) Uses pivot lows to detect 'significant' initial lows
2) Uses amplitude threshold to detect a new low beneath the initial low; used /u/ben_zen script for this
3) Looks for a valid reclaim - a green candle that occurs within 10 bars of the new low
4) Price must reclaim at least 8 points for the set up to be valid
5) If a signal is detected, the initial low value (pivot low) is stored in array that prevents duplicate signals from being generated.
6) FBD Signal is plotted on the chart with "X"
7) Pivot low detection is plotted on the chart with "P" and a label
8) New lows are plotted on the chart with a blue triangle
Notes:
User input
- My preference is to use the defaults as is, but as always feel free to experiment
- Can modify pivot length but in my experience 10/10 work best for pivot lows
- New low detection - 55 bars and 0.05 amplitude work well based on visual checks of signals
- Can modify the number of points needed to reclaim a low, and the # of bars limit under which this must occur.
Alerts:
- Alerts are available for detection of new lows and detection of failed breakdowns
- Alerts are also available for these signals but only during 7:30PM-4PM EST - 'prime time' US trading hours
Limitations:
- Current version of the script only compares new lows to the most recent pivot low, does not look at anything prior to that
- Best used as a discretionary signal
Visit /u/ben_zen's Profile:
www.tradingview.com
Profile Link www.tradingview.com
Arbitrage B3's IBOV FuturesThis indicator was made to calculate and show the spread between the B3's Ibovespa Futures and B3's Ibovespa Index increased by the Interest until the contract expiration date.
The orange line "Arbitrage" is the spread.
Inputs:
Annual Interest Rate (%) -> Interest Rate that you want to be used to calculate the Interest of B3's IBOV Index.
Working Days Until Contract Expires -> How many business days you have between your actual date and the expiration date of the Futures.
Recommended TimeFrame to evaluate the "Arbitrage": 1 MIN
Future Risk CalculatorCreated out of revenge against the difficulty of controlling psychology, greed, and risk management. Designed for cryptocurrency futures trading by following the risk management principles from Kevin Sailly. Very welcome if there are suggestions and input to improve the quality of this "indicator". Please use wisely.
How to use:
1. Open indicator settings.
2. Fill out all the forms. (Note: I make Max Loss Risk only has 5 options. Because, you know, to control the greed. You can choose by considering your risk profiles and market condition)
3. All of the information and calculation will appear on the label (right side of the bar chart) and top-right box.
4. You can adjust the three prices (target, entry, and stop) by clicking any part of the indicator. There will be three dots in the middle of the chart window (align with three prices). Click that dots and drag them up/down to customize according to your wishes. The price order must be correct, for LONG direction the price order from the top is target-entry-stop. Vice versa for SHORT direction. There will be "SETUP ERROR" text in the top-right box if the price order is not correct.
"Never, ever argue with your trading system." (by Michael Covel)
Regards,
Ircham
Stock trending strategy This is a long only strategy designed maily for stock markets and futures. In general it works best with 1h, however it can be optimized with other timeframes as well.
Components:
VWAP
MACD histogram
EMA 9
Rules for entry
Long :
For VWAP: close is above the vwap daily
EMA: close is above the moving average
MACD histogram is above 0
Short:
For VWAP: close is belowthe vwap daily
EMA: close is below the moving average
MACD histogram is below 0
Rules for exit
This strategy does not have any risk management inside. Instead it exits whenver it receives an opposite signal form the original one used for entry.
If you have any questions let me know !
VIX Implied Move Bands for ES/Emini futuresThis script uses the close of the VIX on a daily resolution to provide the 'implied move' for the E-mini SP500 futures. While it can be applied to any equity index, it's crucial to know that the VIX is calculated using SPX options, and may not reflect the implied volatility of other indices. The user can adjust the length of the moving average used to calculate the bands, the window of days used to calculate the implied move, and the multiplier that effects the width of the bands.
Equity Index Extended HoursHighlights the extended hours/Globex session for US Equity Index Futures.
Bitmex BTC Backwardation / ContangoThis indicator calculates difference between price of Bitmex's XBTUSD, and Bitmex's two nearest futures.
If the difference is negative, then it is backwardation.
If the difference is positive, then it is contango.
This script will be updated every about 3 months, when the nearest Bitmex future will be expired.
This is an updated script of , with better description.
Casa_SessionsLibrary "Casa_Sessions"
Advanced trading session management library that enhances TradingView's default functionality:
Key Features:
- Accurate session detection for futures markets
- Custom session hour definitions
- Drop-in replacements for standard TradingView session functions
- Flexible session map customization
- Full control over trading windows and market hours
Perfect for traders who need precise session timing, especially when working
with futures markets or custom trading schedules.
SetSessionTimes(session_type_input, custom_session_times_input, syminfo_type, syminfo_root, syminfo_timezone)
Parameters:
session_type_input (simple string) : Input string for session selection:
- 'Custom': User-defined session times
- 'FX-Tokyo': Tokyo forex session
- 'FX-London': London forex session
- 'FX-New York': NY forex session
- 'Overnight Session (ON)': After-hours trading
- 'Day Session (RTH)': Regular trading hours
custom_session_times_input (simple string) : Session parameter for custom time windows
Only used when session_type_input is 'Custom'
syminfo_type (simple string)
syminfo_root (simple string)
syminfo_timezone (simple string)
Returns:
session_times: Trading hours for selected session
session_timezone: Market timezone (relevant for forex)
getSessionMap()
Get futures trading session hours map
Keys are formatted as 'symbol:session', examples:
- 'ES:market' - Regular trading hours (RTH)
- 'ES:overnight' - Extended trading hours (ETH)
- 'NQ:market' - NASDAQ futures RTH
- 'CL:overnight' - Crude Oil futures ETH
Returns: Map
Key: Symbol:session identifier
Value: Session hours in format "HH:MM-HH:MM"
getSessionString(session, symbol, sessionMap)
Returns a session string representing the session hours (and days) for the requested symbol (or the chart's symbol if the symbol value is not provided). If the session string is not found in the collection, it will return a blank string.
Parameters:
session (string) : A string representing the session hour being requested. One of: market (regular trading hours), overnight (extended/electronic trading hours), postmarket (after-hours), premarket
symbol (string) : The symbol to check. Optional. Defaults to chart symbol.
sessionMap (map) : The map of futures session hours. Optional. Uses default if not provided.
inSession(session, sessionMap, barsBack)
Returns true if the current symbol is currently in the session parameters defined by sessionString.
Parameters:
session (string) : A string representing the session hour being requested. One of: market (regular trading hours), overnight (extended/electronic trading hours), postmarket (after-hours), premarket
sessionMap (map) : The map of futures session hours. Optional. Uses default if not provided.
barsBack (int) : Private. Only used by futures to check islastbar. Optional. The default is 0.
ismarket(sessionMap)
Returns true if the current bar is a part of the regular trading hours (i.e. market hours), false otherwise. Works for futures (TradingView's methods do not).
Parameters:
sessionMap (map) : The map of futures session hours. Optional. Uses default if not provided.
Returns: bool
isfirstbar()
Returns true if the current bar is the first bar of the day's session, false otherwise. If extended session information is used, only returns true on the first bar of the pre-market bars. Works for futures (TradingView's methods do not).
Returns: bool
islastbar()
Returns true if the current bar is the last bar of the day's session, false otherwise. If extended session information is used, only returns true on the last bar of the post-market bars. Works for futures (TradingView's methods do not).
Returns: bool
ispremarket(sessionMap)
Returns true if the current bar is a part of the pre-market, false otherwise. On non-intraday charts always returns false. Works for futures (TradingView's methods do not).
Parameters:
sessionMap (map) : The map of futures session hours. Optional. Uses default if not provided.
Returns: bool
ispostmarket(sessionMap)
Returns true if the current bar is a part of the post-market, false otherwise. On non-intraday charts always returns false. Works for futures (TradingView's methods do not).
Parameters:
sessionMap (map) : The map of futures session hours. Optional. Uses default if not provided.
Returns: bool
isfirstbar_regular(sessionMap)
Returns true on the first regular session bar of the day, false otherwise. The result is the same whether extended session information is used or not. Works for futures (TradingView's methods do not).
Parameters:
sessionMap (map) : The map of futures session hours. Optional. Uses default if not provided.
Returns: bool
islastbar_regular(sessionMap)
Returns true on the last regular session bar of the day, false otherwise. The result is the same whether extended session information is used or not. Works for futures (TradingView's methods do not).
Parameters:
sessionMap (map) : The map of futures session hours. Optional. Uses default if not provided.
Returns: bool
isovernight(sessionMap)
Returns true if the current bar is a part of the pre-market or post-market, false otherwise. On non-intraday charts always returns false.
Parameters:
sessionMap (map) : The map of futures session hours. Optional. Uses default if not provided.
Returns: bool
getSessionHighAndLow(session, sessionMap)
Returns a tuple containing the high and low print during the specified session.
Parameters:
session (string) : The session for which to get the high & low prints. Defaults to market.
sessionMap (map) : The map of futures session hours. Optional. Uses default if not provided.
Returns: A tuple containing
getSessionHigh(session, sessionMap)
Convenience function to return the session high. Necessary if you want to call this function from within a request.security expression where you can't return a tuple.
Parameters:
session (string) : The session for which to get the high & low prints. Defaults to market.
sessionMap (map) : The map of futures session hours. Optional. Uses default if not provided.
Returns: The high of the session
getSessionLow(session, sessionMap)
Convenience function to return the session low. Necessary if you want to call this function from within a request.security expression where you can't return a tuple.
Parameters:
session (string) : The session for which to get the high & low prints. Defaults to market.
sessionMap (map) : The map of futures session hours. Optional. Uses default if not provided.
Returns: The low of the session
UM Futures Dashboard with Moving Average DirectionUM Futures Dashboard with Moving Average Direction
Description :
This futures dashboard gives you quick glance of all “major” futures prices and percentage changes. The text color and trends are based on your configured moving average type and length. The dashboard will display LONG in green text when the configure MA is trending higher and SHORT in red when the configured MA is trending lower. The dashboard also includes the VIX futures roll yield and VIX futures status of Contango or Backwardation.
I have included the indicator twice on the sample chart to illustrate different table settings. I also included an 8 period WMA overlay on the price chart since this is the default of the dashboard. (The Moving Average color change is another one of my indicators titled “UM EMA SMA WMA HMA with Directional Color Change”)
Defaults and Configuration :
The default MA type is the Weighted Moving Average, (WMA) with a daily setting of 8. Choices include WMA, SMA, and EMA. The table location defaults to the upper right corner in landscape mode. It can also be set to “flip” to portrait mode. I have added the table to the chart twice to illustrate the table orientations.
Table location, orientation, timeframe, moving average type and length are user-configurable. The configured dashboard timeframe is independent of the chart timeframe. Percentage changes and Moving Averages are based on the configured dashboard timeframe.
Alerts :
Alerts can be configured on the directional change of the dashboard moving average. For example, if the daily 8 period weighted moving average begins trending higher it will turn from red to green. This color change would fire a LONG alert. A color trend change of the weighted moving average from green to red would fire a SHORT alert. Alerts are disabled by default but can be set for any or all of the futures contracts included.
Suggested Uses :
If you follow or trade futures, add this dashboard indicator to your chart layout. Configure your favorite moving average. Use this to quickly see where all the major futures are trading. This saved me from thumbing through the CNBC app on my phone.
One thing I do is to “stretch” moving average to a smaller timeframe. For example, if you like the 8 period WMA on the daily, try the 192 WMA on the hourly. ( The daily 8 period WMA is roughly a 192 WMA on an hourly chart) This can smooth out some of the violent price action and give better entries/exits.
Setup a FUTURES indicator template. I do this with the dashboard and couple other of my favorite indicators.
Suggested Settings :
Daily charts: 8 WMA
Arbitrage Spot-Futures Don++Strategy: Spot-Futures Arbitrage Don++
This strategy has been designed to detect and exploit arbitrage opportunities between the Spot and Futures markets of the same trading pair (e.g. BTC/USDT). The aim is to take advantage of price differences (spreads) between the two markets, while minimizing risk through dynamic position management.
[Operating principle
The strategy is based on calculating the spread between Spot and Futures prices. When this spread exceeds a certain threshold (positive or negative), reverse positions are opened simultaneously on both markets:
- i] Long Spot + Short Futures when the spread is positive.
- i] Short Spot + Long Futures when the spread is negative.
Positions are closed when the spread returns to a value close to zero or after a user-defined maximum duration.
[Strategy strengths
1. Adaptive thresholds :
- Entry/exit thresholds can be dynamic (based on moving averages and standard deviations) or fixed, offering greater flexibility to adapt to market conditions.
2. Robust data management :
- The script checks the validity of data before executing calculations, thus avoiding errors linked to missing or invalid data.
3. Risk limitation :
- A position size based on a percentage of available capital (default 10%) limits exposure.
- A time filter limits the maximum duration of positions to avoid losses due to persistent spreads.
4. Clear visualization :
- Charts include horizontal lines for entry/exit thresholds, as well as visual indicators for spread and Spot/Futures prices.
5. Alerts and logs :
- Alerts are triggered on entries and exits to inform the user in real time.
[Points for improvement or completion
Although this strategy is functional and robust, it still has a few limitations that could be addressed in future versions:
1. [Limited historical data :
- TradingView does not retrieve real-time data for multiple symbols simultaneously. This can limit the accuracy of calculations, especially under conditions of high volatility.
2. [Lack of liquidity management :
- The script does not take into account the volumes available on the order books. In conditions of low liquidity, it may be difficult to execute orders at the desired prices.
3. [Non-dynamic transaction costs :
- Transaction costs (exchange fees, slippage) are set manually. A dynamic integration of these costs via an external API would be more realistic.
4. User-dependency for symbols :
- Users must manually specify Spot and Futures symbols. Automatic symbol validation would be useful to avoid configuration errors.
5. Lack of advanced backtesting :
- Backtesting is based solely on historical data available on TradingView. An implementation with third-party data (via an API) would enable the strategy to be tested under more realistic conditions.
6. [Parameter optimization :
- Certain parameters (such as analysis period or spread thresholds) could be optimized for each specific trading pair.
[How can I contribute?
If you'd like to help improve this strategy, here are a few ideas:
1. Add additional filters:
- For example, a filter based on volume or volatility to avoid false signals.
2. Integrate dynamic costs:
- Use an external API to retrieve actual costs and adjust thresholds accordingly.
3. Improve position management:
- Implement hedging or scalping mechanisms to maximize profits.
4. Test on other pairs:
- Evaluate the strategy's performance on other assets (ETH, SOL, etc.) and adjust parameters accordingly.
5. Publish backtesting results :
- Share detailed analyses of the strategy's performance under different market conditions.
[Conclusion
This Spot-Futures arbitrage strategy is a powerful tool for exploiting price differentials between markets. Although it is already functional, it can still be improved to meet more complex trading scenarios. Feel free to test, modify and share your ideas to make this strategy even more effective!
[Thank you for contributing to this open-source community!
If you have any questions or suggestions, please feel free to comment or contact me directly.
ELHAI Futures Trend Checker (ES, NQ, YM)The ELHAI Futures Trend Checker is a powerful TradingView indicator designed for futures traders who want to monitor the trend synchronization of the three major U.S. futures indices:
✅ E-mini S&P 500 (ES1!)
✅ E-mini Nasdaq 100 (NQ1!)
✅ E-mini Dow Jones (YM1!)
This indicator checks whether all three futures indices are bullish or bearish during each candle formation. If one of them is out of sync (e.g., two indices are bullish while one is bearish), the indicator triggers an alert and highlights the background in red, helping traders identify potential market indecision or divergence.
Key Features
📌 Designed for Futures Traders – Focuses on ES, NQ, and YM futures contracts.
📌 Live Market Monitoring – Works in real-time and updates dynamically with each tick.
📌 Bullish/Bearish Trend Confirmation – Detects when all three indices are in sync.
📌 Mismatch Detection – Alerts you when at least one index is out of trend.
📌 Custom Alerts – Set up TradingView alerts to be notified instantly when a trend mismatch occurs.
📌 Visual Background Highlight – A red background warns of a market divergence.
How It Works
The script retrieves open and close prices for ES, NQ, and YM.
Determines whether each futures index is bullish (close > open) or bearish (close < open).
If all three indices are bullish or all are bearish, it remains neutral.
If one index is different, an alert is triggered and the background turns red.
How to Use
Apply the indicator to your TradingView chart.
Choose any timeframe – Works well on intraday, daily, or higher timeframes.
Enable alerts: Go to Alerts → Create Alert, select "Futures Trend Mismatch", and set your preferred alert frequency.
Use alongside other indicators like moving averages, RSI, or MACD for better trade confirmation.
Best Use Cases
✔ Day traders & scalpers – Quickly spot market divergence in live trading.
✔ Swing traders – Identify when futures markets lose synchronization.
✔ Trend followers – Confirm if all major futures markets are aligned before making a move.
Final Notes
This indicator was built for Elhai to provide real-time trend analysis across major U.S. futures indices. Use it as a confirmation tool to improve market timing and decision-making.
whookLibrary "whook"
This library provides functions for generating trading alerts for `whook`
check this -> github.com
Currently supported exchanges:
Kucoin futures
Bitget futures
Coinex futures
Bingx
OKX futures ( also its demo mode )
Bybit futures ( also Bybit testnet )
Binance futures ( also Binance futures testnet )
Phemex futures ( also Phemex testnet )
Kraken futures ( also Kraken futures testnet )
# --- Test Cases ---
Note: These test cases are for demonstration purposes only and may not cover all scenarios.
// buy(string account, float amount, string unit = "units", float leverage = 1)
buy("MyAccount", 100, "units", 1)
buy("MyAccount", 1000, "USDT", 5)
buy("MyAccount", 50, "percent", 2)
// sell(string account, float amount, string unit = "units", float leverage = 1)
sell("MyAccount", 50, "units", 1)
sell("MyAccount", 500, "USDT", 3)
sell("MyAccount", 25, "percent", 2)
// set_position(string account, float amount, string unit = "units", float leverage = 1)
set_position("MyAccount", 100, "units", 1)
set_position("MyAccount", 1000, "USDT", 5)
set_position("MyAccount", 50, "percent", 2)
// limit_buy(string account, float amount, float price, string unit = "units", float leverage = 1, string id = "")
limit_buy("MyAccount", 100, 10000, "units", 1, "MyBuyOrder")
limit_buy("MyAccount", 1000, 10500, "USDT", 5)
limit_buy("MyAccount", 50, 11000, "percent", 2)
// limit_sell(string account, float amount, float price, string unit = "units", float leverage = 1, string id = "")
limit_sell("MyAccount", 50, 10000, "units", 1, "MySellOrder")
limit_sell("MyAccount", 500, 9500, "USDT", 3)
limit_sell("MyAccount", 25, 9000, "percent", 2)
// close_percent(string account, float pct = 100)
close_percent("MyAccount", 100)
close_percent("MyAccount", 50)
buy(account, amount, unit, leverage)
Sends a trading alert to execute a market buy order.
Parameters:
account (string) : The account ID.
amount (float) : The amount to buy (can be in USD, units, or percentage).
unit (string) : The unit of the amount (optional, defaults to "units").
leverage (float) : The leverage to use (optional, defaults to 1x).
sell(account, amount, unit, leverage)
Sends a trading alert to execute a market sell order.
Parameters:
account (string) : The account ID.
amount (float) : The amount to sell (can be in USD, units, or percentage).
unit (string) : The unit of the amount (optional, defaults to "units").
leverage (float) : The leverage to use (optional, defaults to 1x).
set_position(account, amount, unit, leverage)
Sends a trading alert to set a position.
Parameters:
account (string) : The account ID.
amount (float) : The amount to set the position to (can be in USD, units, or percentage).
unit (string) : The unit of the amount (optional, defaults to "units").
leverage (float) : The leverage to use (optional, defaults to 1x).
limit_buy(account, amount, price, unit, leverage, id)
Sends a trading alert to place a limit buy order.
Parameters:
account (string) : The account ID.
amount (float) : The amount to buy (can be in USD, units, or percentage).
price (float) : The limit price.
unit (string) : The unit of the amount (optional, defaults to "units").
leverage (float) : The leverage to use (optional, defaults to 1x).
id (string) : An optional custom ID for the limit order.
limit_sell(account, amount, price, unit, leverage, id)
Sends a trading alert to place a limit sell order.
Parameters:
account (string) : The account ID.
amount (float) : The amount to sell (can be in USD, units, or percentage).
price (float) : The limit price.
unit (string) : The unit of the amount (optional, defaults to "units").
leverage (float) : The leverage to use (optional, defaults to 1x).
id (string) : An optional custom ID for the limit order.
close_percent(account, pct)
Sends an alert to close a position on Phemex.
Parameters:
account (string) : The account ID.
pct (float) : The percentage of the position to close (optional, defaults to 100%).
Bitcoin Futures vs. Spot Tri-Frame - Strategy [presentTrading]Prove idea with a backtest is always true for trading.
I developed and open-sourced it as an educational material for crypto traders to understand that the futures and spot spread may be effective but not be as effective as they might think. It serves as an indicator of sentiment rather than a reliable predictor of market trends over certain periods. It is better suited for specific trading environments, which require further research.
█ Introduction and How it is Different
The "Bitcoin Futures vs. Spot Tri-Frame Strategy" utilizes three different timeframes to calculate the Z-Score of the spread between BTC futures and spot prices on Binance and OKX exchanges. The strategy executes long or short trades based on composite Z-Score conditions across the three timeframes.
The spread refers to the difference in price between BTC futures and BTC spot prices, calculated by taking a weighted average of futures prices from multiple exchanges (Binance and OKX) and subtracting a weighted average of spot prices from the same exchanges.
BTCUSD 1D L/S Performance
█ Strategy, How It Works: Detailed Explanation
🔶 Calculation of the Spread
The spread is the difference in price between BTC futures and BTC spot prices. The strategy calculates the spread by taking a weighted average of futures prices from multiple exchanges (Binance and OKX) and subtracting a weighted average of spot prices from the same exchanges. This spread serves as the primary metric for identifying trading opportunities.
Spread = Weighted Average Futures Price - Weighted Average Spot Price
🔶 Z-Score Calculation
The Z-Score measures how many standard deviations the current spread is from its historical mean. This is calculated for each timeframe as follows:
Spread Mean_tf = SMA(Spread_tf, longTermSMA)
Spread StdDev_tf = STDEV(Spread_tf, longTermSMA)
Z-Score_tf = (Spread_tf - Spread Mean_tf) / Spread StdDev_tf
Local performance
🔶 Composite Entry Conditions
The strategy triggers long and short entries based on composite Z-Score conditions across all three timeframes:
- Long Condition: All three Z-Scores must be greater than the long entry threshold.
Long Condition = (Z-Score_tf1 > zScoreLongEntryThreshold) and (Z-Score_tf2 > zScoreLongEntryThreshold) and (Z-Score_tf3 > zScoreLongEntryThreshold)
- Short Condition: All three Z-Scores must be less than the short entry threshold.
Short Condition = (Z-Score_tf1 < zScoreShortEntryThreshold) and (Z-Score_tf2 < zScoreShortEntryThreshold) and (Z-Score_tf3 < zScoreShortEntryThreshold)
█ Trade Direction
The strategy allows the user to specify the trading direction:
- Long: Only long trades are executed.
- Short: Only short trades are executed.
- Both: Both long and short trades are executed based on the Z-Score conditions.
█ Usage
The strategy can be applied to BTC or Crypto trading on major exchanges like Binance and OKX. By leveraging discrepancies between futures and spot prices, traders can exploit market inefficiencies. This strategy is suitable for traders who prefer a statistical approach and want to diversify their timeframes to validate signals.
█ Default Settings
- Input TF 1 (60 minutes): Sets the first timeframe for Z-Score calculation.
- Input TF 2 (120 minutes): Sets the second timeframe for Z-Score calculation.
- Input TF 3 (180 minutes): Sets the third timeframe for Z-Score calculation.
- Long Entry Z-Score Threshold (3): Defines the threshold above which a long trade is triggered.
- Short Entry Z-Score Threshold (-3): Defines the threshold below which a short trade is triggered.
- Long-Term SMA Period (100): The period used to calculate the simple moving average for the spread.
- Use Hold Days (true): Enables holding trades for a specified number of days.
- Hold Days (5): Number of days to hold the trade before exiting.
- TPSL Condition (None): Defines the conditions for taking profit and stop loss.
- Take Profit (%) (30.0): The percentage at which the trade will take profit.
- Stop Loss (%) (20.0): The percentage at which the trade will stop loss.
By fine-tuning these settings, traders can optimize the strategy to suit their risk tolerance and trading style, enhancing overall performance.
Annualized Spot-Future DifferenceThe "Annualized Spot-Future Difference" indicator (ASFD) compares the closing prices of a futures contract and its underlying spot asset. It calculates the price difference between the two instruments and annualizes this difference to provide a standardized measure for comparison.
The indicator takes inputs for the futures ticker symbol and the spot ticker symbol, allowing flexibility in selecting the specific assets for analysis. Additionally, it allows the user to input the contract date, which represents the expiration date of the futures contract.
The ASFD indicator plots the annualized difference between the futures and spot prices. It calculates the price difference by subtracting the spot price from the futures price. To annualize this difference, it considers the remaining days to the contract expiration and scales the difference accordingly.
The annualized difference can provide insights into market expectations, as it reflects the market's perception of the future price movement of the underlying asset. A positive value indicates that the futures price is higher than the spot price, potentially suggesting bullish sentiment. Conversely, a negative value suggests bearish sentiment, with the futures price lower than the spot price.
Traders and analysts can utilize the ASFD indicator to identify potential opportunities for arbitrage or evaluate market sentiment regarding the underlying asset. By monitoring changes in the annualized difference over time, they can gain insights into market dynamics and make informed trading decisions.
It's important to note that the ASFD indicator relies on accurate and up-to-date pricing data for both the futures and spot assets. Traders should verify that the selected ticker symbols correspond to the desired instruments and ensure that the contract date aligns with the relevant futures contract expiration.
Overall, the ASFD indicator provides a quantitative measure of the annualized price difference between futures and spot assets, enabling traders and analysts to assess market expectations and identify potential trading opportunities.
VIX Futures Spread StrategyThis script was an exercise in learning Pinescript and exploring the futures curve of the VIX in relation to SPY. Was deleted by TV, trying to republish it now with updated parameters for slippage and commission and a more detailed description.
"VIX Futures Spread Strategy" is a trading strategy that capitalizes on the spread between the 3-month VIX futures (VIX3M) and the spot VIX index. This strategy is based on the idea that the VIX futures spread can serve as a contrarian indicator of market sentiment, with extreme negative spreads potentially signaling oversold conditions and opportunities for long positions.
Ordinarily the VIX curve is in contango as futures contracts are priced at a premium to the current spot price and are used to hedge future uncertainty in the market. When the spot price of VIX spikes the curve can invert and enter backwardation; this strategy detects this condition and uses it as a trigger to open a long position in SPY. The spread going negative tends to correlate with excessive fear and uncertainty in the short term while expecting lower volatility in the long term, in this case 3 months out.
The strategy is designed to enter a long position when the VIX futures spread is negative and to exit the position when the spread rises above 3 -- when the curve is in contango again. The strategy employs a pyramiding approach, allowing up to 10 additional orders to be placed while the entry condition is met, with each order consisting of 10 contracts. This approach aims to maximize potential profits during periods of favorable market conditions.
In this strategy, the VIX futures spread is calculated as the difference between the 3-month VIX futures (VIX3M) and the spot VIX index. The spread is plotted as a histogram on the chart, with the zero line representing no spread, and horizontal lines at 0 and 3 indicating the entry and exit thresholds, respectively.
The strategy's backtesting settings use an initial capital of HKEX:10 ,000, a commission of 0.5% per trade, and a maximum of 10 pyramiding orders, and a slippage of 2 ticks.
Please note that this strategy is intended for educational purposes and should not be considered as financial advice. Before using this strategy in live trading, make sure to thoroughly test and optimize its parameters to suit your risk tolerance and specific trading conditions.
Dskyz Options Flow Flux (OFF) - FuturesDskyz Options Flow Flux (OFF) - Futures
*This is a repost due to moderator intervention on use of ™ in my scripts. I'm in the process of getting this rectified. This was originally posted around mid-night CDT.
🧠 The Dskyz Options Flow Flux (OFF) - Futures indicator is a game changer for futures traders looking to tap into institutional activity with limited resources. Designed for TradingView this tool simulates options flow data (call/put volume and open interest) for futures contracts like MNQ MES NQ and ES giving u actionable insights through volume spike detection volatility adjustments and stunning visuals like aurora flux bands and round number levels. Whether u’re a beginner learning the ropes or a pro hunting for an edge this indicator delivers real time market sentiment and key price levels to boost ur trading game
Key Features
⚡ Simulated Options Flow: Breaks down call/put volume and open interest using market momentum and volatility
📈 Spike Detection: Spots big moves in volume and open interest with customizable thresholds
🧠 Volatility Filter: Adapts to market conditions using ATR for smarter spike detection
✨ Aurora Flux Bands: Glows with market sentiment showing u bullish or bearish vibes at a glance
🎯 Round Number Levels: Marks key psychological levels where big players might step in
📊 Interactive Dashboard: Real time metrics like sentiment score and volatility factor right on ur chart
🚨 Alerts: Get notified of bullish or bearish spikes so u never miss a move
How It Works
🧠 This indicator is built to make complex options flow analysis simple even with the constraints of Pine Script. Here’s the step by step:
Simulated Volume Data (Dynamic Split):
Pulls daily volume for ur chosen futures contract (MNQ1! MES1! NQ1! ES1!)
Splits it into call and put volume based on momentum (ta.mom) and volatility (ATR vs its 20 period average)
Estimates open interest (OI) for calls and puts (1.15x for calls 1.1x for puts)
Formula: callRatio = 0.5 + (momentum / close) * 10 + (volatility - 1) * 0.1 capped between 0.3 and 0.7
Why It Matters: Mimics how big players might split their trades giving u a peek into institutional sentiment
Spike Detection:
Compares current volume/OI to short term (lookbackShort) and long term (lookbackLong) averages
Flags spikes when volume/OI exceeds the average by ur set threshold (spikeThreshold for regular highConfidenceThreshold for strong)
Adjusts for volatility so u’re not fooled by choppy markets
Output: optionsSignal (2 for strong bullish -2 for strong bearish 1 for bullish -1 for bearish 0 for neutral)
Why It Matters: Pinpoints where big money might be stepping in
Volatility Filter:
Uses ATR (10 periods) and its 20 period average to calculate a volatility factor (volFactor = ATR / avgAtr)
Scales spike thresholds based on market conditions (volAdjustedThreshold = spikeThreshold * max(1 volFactor * volFilter))
Why It Matters: Keeps ur signals reliable whether the market is calm or wild
Sentiment Score:
Calculates a call/put ratio (callVolume / putVolume) and adjusts for volatility
Converts it to a 0 to 100 score (higher = bullish lower = bearish)
Formula: sentimentScore = min(max((volAdjustedSentiment - 1) * 50 0) 100)
Why It Matters: Gives u a quick read on market bias
Round Number Detection:
Finds the nearest round number (e.g. 100 for MNQ1! 50 for MES1!)
Checks for volume spikes (volume > 3 period SMA * spikeThreshold) and if price is close (within ATR * atrMultiplier)
Updates the top activity level every 15 minutes when significant activity is detected
Why It Matters: Highlights psychological levels where price often reacts
Visuals and Dashboard:
Combines aurora flux bands glow effects round number lines and a dashboard to make insights pop (see Visual Elements below)
Plots triangles for call/put spikes (green/red for strong lime/orange for regular)
Sets up alerts for key market moves
Why It Matters: Makes complex data easy to read at a glance
Inputs and Customization
⚙️ Beginners can tweak these settings to match their trading style while pros can dig deeper for precision:
Futures Symbol (symbol): Pick ur contract (MNQ1! MES1! NQ1! ES1!). Default: MNQ1!
Short Lookback (lookbackShort): Days for short term averages. Smaller = more sensitive. Range: 1+. Default: 5
Long Lookback (lookbackLong): Days for long term averages. Range: 5+. Default: 10
Spike Threshold (spikeThreshold): How big a spike needs to be (e.g. 1.1 = 10% above average). Range: 1.0+. Default: 1.1
High Confidence Threshold (highConfidenceThreshold): For strong spikes (e.g. 3.0 = 3x average). Range: 2.0+. Default: 3.0
Volatility Filter (volFilter): Adjusts for market volatility (e.g. 1.2 = 20% stricter in volatile markets). Range: 1.0+. Default: 1.2
Aurora Flux Transparency (glowOpacity): Controls band transparency (0 = solid 100 = invisible). Range: 0 to 100. Default: 65
Show Show OFF Dashboard (showDashboard): Toggles the dashboard with key metrics. Default: true
Show Nearest Round Number (showRoundNumbers): Displays round number levels. Default: true
ATR Multiplier for Proximity (atrMultiplier): How close price needs to be to a round number (e.g. 1.5 = within 1.5x ATR). Range: 0.5+. Default: 1.5
Functions and Logic
🧠 Here’s the techy stuff pros will love:
Simulated Volume Data : Splits daily volume into call/put volume and OI using momentum and volatility
Volatility Filter: Scales thresholds with volFactor = atr / avgAtr for adaptive detection
Spike Detection: Flags spikes and assigns optionsSignal (2, -2, 1, -1, 0) for sentiment
Sentiment Score: Converts call/put ratio into a 0-100 score for quick bias reads
Round Number Detection: Identifies key levels and significant activity for trading zones
Dashboard Display: Updates real time metrics like sentiment score and volatility factor
Visual Elements
✨ These visuals make data come alive:
Gradient Background: Green (bullish) red (bearish) or yellow (neutral/choppy) at 95% transparency to show trend
Aurora Flux Bands: Stepped bands (linewidth 3) around a 14 period EMA ± ATR * 1.8. Colors shift with sentiment (green red lime orange gray) with glow effects at 85% transparency
Round Number Visualization: Stepped lines (linewidth 2) at key levels (solid if active dashed if not) with labels (black background white text size.normal)
Visual Signals: Triangles above/below bars for spikes (size.small for strong size.tiny for regular)
Dashboard: Bottom left table (2 columns 10 rows) with a black background (29% transparency) gray border and metrics:
⚡ Round Number Activity: “Detected” or “None”
📈 Trend: “Bullish” “Bearish” or “Neutral” (colored green/red/gray)
🧠 ATR: Current 10 period ATR
📊 ATR Avg: 20 period SMA of ATR
📉 Volume Spike: “YES” (green) or “NO” (red)
📋 Call/Put Ratio: Current ratio
✨ Flux Signal: “Strong Bullish” “Strong Bearish” “Bullish” “Bearish” or “Neutral” (colored green/red/gray)
⚙️ Volatility Factor: Current volFactor
📈 Sentiment Score: 0-100 score
Usage and Strategy Recommendations
🎯 For Beginners: Use high confidence spikes (green/red triangles) for easy entries. Check the dashboard for a quick market read (sentiment score above 60 = bullish below 40 = bearish). Watch round number levels for support/resistance
💡 For Pros: Combine flux signals with round number activity for high probability setups. Adjust lookbackShort/lookbackLong for trending vs choppy markets. Use volFactor for position sizing (higher = smaller positions)