یہ حکمت عملی ٹریڈنگ سگنل کے طور پر چاند مرحلے کے دور پر مبنی ہے ، جس میں آر ایس آئی ، ایم اے سی ڈی ، او بی وی اور دیگر متعدد اشارے شامل ہیں تاکہ بٹ کوائن جیسی ڈیجیٹل کرنسیوں کے لئے تجارتی مواقع کی نشاندہی کی جاسکے۔ اس حکمت عملی کا بنیادی فائدہ یہ ہے کہ اس بیرونی عنصر کا استعمال کیا جائے۔ چاند مرحلے کو ٹریڈنگ کے لئے سگنل کے طور پر استعمال کیا جاتا ہے ، اور زیادہ تر حکمت عملیوں کے برعکس جو صرف تکنیکی اشارے پر انحصار کرتی ہے ، اس سے کچھ حد تک مارکیٹ میں ہیرا پھیری سے بچا جاسکتا ہے۔
اس حکمت عملی کا بنیادی منطق یہ ہے کہ چاند کی فیز سائیکل کے مختلف مراحل کی بنیاد پر یہ فیصلہ کیا جائے کہ کیا زیادہ کرنے یا کم کرنے کی شرائط کو پورا کیا گیا ہے۔ چاند کی فیز کا حساب لگانے کا فارمولا یہ ہے:
چاند کے مرحلے کا دورانیہ = 29.5305882 دن ایک مشہور مکمل چاند کا وقت، اس سے موجودہ وقت تک کے دنوں کی گنتی کی جا سکتی ہے چاند کے مرحلے کی عمر = پورے چاند سے دور دنوں کی تعداد٪ ماہانہ مرحلے کی مدت ماہ مرحلے کی قیمت = 1 + cos ((ماہ مرحلے کی عمر / ماہ مرحلے کی مدت*2*π))/2
چاند کے مرحلے کی قدر کی مقدار سے یہ فیصلہ کیا جاسکتا ہے کہ اس وقت چاند کا کیا مرحلہ ہے۔ چاند کا مرحلہ 0 سے 1 کے درمیان تبدیل ہوتا ہے۔ قدر جتنی زیادہ ہوگی اس کا مطلب یہ ہے کہ یہ مکمل چاند سے قریب تر ہے ، قدر جتنی کم ہوگی اس کا مطلب یہ ہے کہ یہ نئے چاند سے قریب تر ہے۔
حکمت عملی کا فیصلہ اس بات پر ہوتا ہے کہ آیا ماہانہ مرحلے کی قیمت زیادہ یا کم کرنے کے لئے موزوں ہے۔ اگر مہینے کی قیمت زیادہ قیمت سے زیادہ ہے ((ڈیفالٹ 0.51) ، تو زیادہ کرنے کا موقع ہے۔ اگر مہینے کی قیمت کم قیمت سے کم ہے (ڈیفالٹ 0.49) ، تو خالی کرنے کا موقع ہے۔
اس کے علاوہ ، حکمت عملی تجارتی حجم ، آر ایس آئی ، ایم اے سی ڈی اور دیگر اشارے کے ساتھ مل کر غیر مطلوبہ حالات میں تجارتی سگنل جاری کرنے سے بچنے کے لئے ہے۔ صرف اس صورت میں پوزیشن کھولی جائے گی جب تجارتی حجم بڑھ جائے اور آر ایس آئی اور ایم اے سی ڈی اہل ہوں۔
اس حکمت عملی کے کچھ اہم فوائد یہ ہیں:
مجموعی طور پر ، اس حکمت عملی نے چاند کی شکل کے انوکھے فوائد کا فائدہ اٹھایا ، جس میں متعدد تکنیکی اشارے شامل ہیں تاکہ اعلی امکانات والے تجارتی مواقع کی نشاندہی کی جاسکے ، اور خطرے سے نمٹنے کے ذرائع کے ذریعہ تجارت کے خطرے کو مؤثر طریقے سے کنٹرول کیا جاسکے۔
اس حکمت عملی میں مندرجہ ذیل خطرات شامل ہیں:
ان خطرات پر قابو پانے کے لئے ، مندرجہ ذیل اقدامات کیے جاسکتے ہیں:
پیرامیٹرز کی اصلاح اور جامع اشارے کے استعمال کے ذریعے ، تجارت کے خطرے سے نمایاں طور پر بچا جاسکتا ہے۔
اس حکمت عملی کو بہتر بنانے کے لیے مزید گنجائش موجود ہے:
یہ حکمت عملی مہینے کے مرحلے میں منفرد ٹریڈنگ سگنل کے ذریعے ، مرکزی دھارے میں شامل تکنیکی اشارے کے ساتھ مل کر ، اعلی کارکردگی کا مظاہرہ کرتی ہے۔ یہ حکمت عملی مارکیٹ میں ہیرا پھیری کے خطرات کے خلاف بہتر تحفظ فراہم کرتی ہے ، اور اس میں ایک منفرد فائدہ ہے۔ اسٹریٹجک خطرات کو روکنے اور پیرامیٹرز کو بہتر بنانے کے ذریعہ ، بہتر منافع حاصل کرنے کے لئے مستحکم ہے۔ یہ حکمت عملی مزید ترقی یافتہ ہے اور اس میں بہت زیادہ اطلاق کے امکانات ہیں۔
/*backtest
start: 2023-01-08 00:00:00
end: 2024-01-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Lunar Phase Strategy by Symphoenix", overlay=true)
// Input parameters
start_year = input(2023, title="Start year")
end_year = input(2023, title="End year")
longPhaseThreshold = input(0.51, title="Long Phase Threshold")
shortPhaseThreshold = input(0.49, title="Short Phase Threshold")
riskPerTrade = input(0.05, title="Risk Per Trade (as a % of Equity)")
stopLossPerc = input(0.01, title="Stop Loss Percentage")
atrLength = input(21, title="ATR Length for Volatility")
trailPerc = input(0.1, title="Trailing Stop Percentage")
maxDrawdownPerc = input(0.1, title="Maximum Drawdown Percentage")
volumeLength = input(7, title="Volume MA Length")
// Constants for lunar phase calculation and ATR
atr = ta.atr(atrLength)
volMA = ta.sma(volume, volumeLength) // Volume moving average
// Improved Lunar Phase Calculation
calculateLunarPhase() =>
moonCycleLength = 29.5305882
daysSinceKnownFullMoon = (time - timestamp("2019-12-12T05:12:00")) / (24 * 60 * 60 * 1000)
lunarAge = daysSinceKnownFullMoon % moonCycleLength
phase = ((1 + math.cos(lunarAge / moonCycleLength * 2 * math.pi)) / 2)
phase
lunarPhase = calculateLunarPhase()
// Advanced Volume Analysis
priceChange = ta.change(close)
obv = ta.cum(priceChange > 0 ? volume : priceChange < 0 ? -volume : 0)
// Additional Technical Indicators
rsi = ta.rsi(close, 14)
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
// Calculate Position Size based on Volatility and Account Equity
calculatePositionSize() =>
equity = strategy.equity
riskAmount = equity * riskPerTrade
positionSize = riskAmount / atr
if positionSize > 1000000000000
positionSize := 1000000000000
positionSize
positionSize = calculatePositionSize()
// Maximum Drawdown Tracking
var float maxPortfolioValue = na
maxPortfolioValue := math.max(maxPortfolioValue, strategy.equity)
drawdown = (maxPortfolioValue - strategy.equity) / maxPortfolioValue
// Check for maximum drawdown
if drawdown > maxDrawdownPerc
strategy.close_all()
strategy.cancel_all()
// Volume Analysis
isVolumeConfirmed = volume > volMA
// Date Check for Backtesting Period
isWithinBacktestPeriod = year >= start_year and year <= end_year
// Entry and Exit Conditions
// Adjusted Entry and Exit Conditions
longCondition = lunarPhase > longPhaseThreshold and lunarPhase < 0.999 and isVolumeConfirmed and obv > obv[1] and rsi < 70 and macdLine > signalLine and isWithinBacktestPeriod
shortCondition = lunarPhase < shortPhaseThreshold and lunarPhase > 0.001 and isVolumeConfirmed and obv < obv[1] and rsi > 30 and macdLine < signalLine and isWithinBacktestPeriod
if longCondition
if strategy.position_size < 0
strategy.close_all()
if strategy.position_size < positionSize
strategy.entry("Long", strategy.long, qty=positionSize)
strategy.exit("Exit Long", "Long", trail_offset=atr * trailPerc, trail_points=atr)
if shortCondition
if strategy.position_size > 0
strategy.close_all()
if strategy.position_size > -positionSize
strategy.entry("Short", strategy.short, qty=positionSize)
strategy.exit("Exit Short", "Short", trail_offset=atr * trailPerc, trail_points=atr)
// Implementing Stop-Loss Logic
longStopLoss = strategy.position_avg_price * (1 - stopLossPerc)
shortStopLoss = strategy.position_avg_price * (1 + stopLossPerc)
if strategy.position_size > 0 and close < longStopLoss
strategy.close("Long")
if strategy.position_size < 0 and close > shortStopLoss
strategy.close("Short")