فبونیکی بینڈ آسسیلیشن کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-11-21 13:47:12
ٹیگز:

img

جائزہ

فبونیکی بینڈ آسکیلیشن حکمت عملی فبونیکی نظریہ کی بنیاد پر تیار کردہ ایک مقداری حکمت عملی ہے۔ یہ بنیادی طور پر فبونیکی تناسب کا استعمال متعدد قیمتوں کے بینڈوں کا حساب لگانے کے لئے کرتا ہے تاکہ اوپری اور نچلی بینڈ تشکیل پائے۔ جب قیمت بینڈوں کو توڑتی ہے تو ، منافع کے ل the بینڈوں کے مابین آسکیلیشن کی خصوصیات کو حاصل کرنے کے لئے تجارتی سگنل تیار کیے جاتے ہیں۔

حکمت عملی منطق

کوڈ کا بنیادی منطق فبونیکی قیمت کے بینڈ کو کلیدی نکات کے طور پر شمار کرنا ہے۔ اہم اقدامات یہ ہیں:

  1. درمیانی لائن کے طور پر 14 مدت کے EMA کا حساب لگائیں
  2. ATR اور فبونیکی تناسب کے مطابق اوپری اور نچلے 4 بینڈ لائنوں کا حساب لگائیں
  3. جب قیمت نیچے والے بینڈ یا اوپر والے بینڈ سے گزرتی ہے تو تجارتی سگنل تیار کریں
  4. منافع کے لئے قیمت کے نوسانات کو ٹریک کرنے کے لئے اسٹاپ نقصان اور منافع حاصل کریں

اس اختراعی بنیاد پر طریقہ کار کے ساتھ، یہ مؤثر طریقے سے مارکیٹ میں قلیل مدتی اتار چڑھاؤ کو پکڑ سکتا ہے اور منافع کے لئے بینڈ کے درمیان واپسی کی تجارت کرسکتا ہے.

فوائد

اس حکمت عملی کا سب سے بڑا فائدہ یہ ہے کہ یہ کلیدی قیمت کے نکات کا پتہ لگانے کے لئے فبونیکی تناسب کے اہم نظریاتی اشارے کا استعمال کرتا ہے ، اس طرح منافع کا امکان بڑھتا ہے۔ مخصوص فوائد بنیادی طور پر اس میں جھلکتے ہیں:

  1. واضح فبونیکی بینڈ، بریک آؤٹ پوائنٹس کا فیصلہ کرنا آسان ہے
  2. مناسب بینڈ رینج، نہ تو بہت ٹکڑے ٹکڑے یا بہت لچکدار
  3. متعدد بینڈوں کو جارحانہ اور قدامت پسند تجارت دونوں کے لئے منتخب کیا جا سکتا ہے
  4. اہم بینڈ نوسٹالیشن کی خصوصیات، قلیل مدتی ٹریڈنگ کی حکمت عملی کے لئے اچھا اثر

خطرات

چونکہ یہ حکمت عملی قلیل مدتی منافع حاصل کرتی ہے، اس کے علاوہ کچھ خطرات بھی ہیں:

  1. بڑے سائیکل رجحانات کے تحت منافع حاصل کرنے کے قابل نہیں
  2. شدید قیمتوں میں اتار چڑھاؤ کے تحت ہائی سٹاپ نقصان کا خطرہ
  3. بہت سے اختراعی سگنلز کو محتاط انتخاب کی ضرورت ہوتی ہے
  4. جب بینڈ آسکیلیشن کی خصوصیات ختم ہوجاتی ہیں تو غلط

یہ خطرات پیرامیٹرز کو مناسب طریقے سے ایڈجسٹ کرکے، مناسب بینڈوں کا انتخاب کرتے ہوئے، اور دارالحکومت کے انتظام کے طریقوں کو کنٹرول کیا جا سکتا ہے.

اصلاح

اسٹریٹیجی کو مزید بہتر بنانے کے لئے ابھی بھی گنجائش ہے:

  1. صرف مخصوص رجحانات کی سمت میں سگنل پیدا کرنے کے لئے رجحان اشارے کے ساتھ مل کر
  2. مخصوص وقت کی مدت یا اہم واقعات سے پہلے اور بعد میں حکمت عملی کو بند کریں
  3. مارکیٹ میں اتار چڑھاؤ کی تعدد کے مطابق اسٹاپ نقصان کی وسعت کو متحرک طور پر ایڈجسٹ کریں
  4. بینچ مارک لائن کے طور پر مختلف سائیکلوں کے ای ایم اے کا انتخاب کرکے پیرامیٹرز کو بہتر بنائیں

نتیجہ

عام طور پر ، فبونیکی بینڈ آسکیلیشن حکمت عملی ایک بہت ہی عملی قلیل مدتی حکمت عملی ہے۔ اس میں قیمت کے اہم نکات طے کرنے کے لئے فبونیکی تھیوری کا استعمال کیا جاتا ہے۔ جب قیمت ان نکات کے آس پاس آسکیلیٹ کرتی ہے تو ، سخاوت بخش منافع حاصل کیا جاسکتا ہے۔ یہ بریک آؤٹ پر مبنی طریقہ کچھ حد تک اتار چڑھاؤ اور خصوصیات والی منڈیوں کے لئے موزوں ہے۔ اسے تنہا یا دیگر حکمت عملیوں کے ساتھ مل کر استعمال کیا جاسکتا ہے۔ پیرامیٹر ٹیوننگ اور مناسب سرمایہ انتظام کے ساتھ ، حکمت عملی طویل مدتی میں مستحکم کام کرسکتی ہے۔


/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © drhakankilic

//@version=5
strategy("FIBONACCI BANDS Strategy", shorttitle="FBANDS Strategy", overlay=true)
// === Date === { 
//Backtest dates
fromDay = input.int(defval=1, title='From Day',minval=1,maxval=31)
fromMonth = input.int(defval=2, title='From Month',minval=1,maxval=12)
fromYear = input.int(defval=2022, title='From Year')
thruDay = input.int(defval=1, title='Thru Day',minval=1,maxval=31)
thruMonth = input.int(defval=1, title='Thru Month',minval=1,maxval=12)
thruYear = input.int(defval=2112, title='Thru Year')
showDate = true  // input(defval=true, title="Show Date Range")
start = timestamp(fromYear, fromMonth, fromDay, 00, 00)  // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59)  // backtest finish window
window() =>  // create function "within window of time"
    time >= start and time <= finish ? true : false
// }

// === Long or Short ===  
tradeDirection = input.string(title="Long veya Short", options=["Long", "Short", "Both"], defval="Both",                                       group="Bot")
// Translate input into trading conditions
longOK  = (tradeDirection == "Long") or (tradeDirection == "Both")
shortOK = (tradeDirection == "Short") or (tradeDirection == "Both")
copypaste   = input('{{strategy.order.alert_message}}',         title='alert message to copy/paste',                                    group="Bot")
// }

// === FIBONACCI BANDS === {
EMAperiod = input.int(14, title='EMAperiod', minval=1, maxval=500, group="Fibonacci")
ATRperiod = input.int(14, title='ATRperiod', minval=1, maxval=500, group="Fibonacci")
EMA = ta.ema(close, EMAperiod)
TR1 = math.max(high - low, math.abs(high - close[1]))
TR = math.max(TR1, math.abs(low - close[1]))
ATR = ta.sma(TR, ATRperiod)
F2 = input(defval=1.618, title='Fibonacci Ratio 2', group="Fibonacci")
F3 = input(defval=2.618, title='Fibonacci Ratio 3', group="Fibonacci")
F4 = input(defval=4.236, title='Fibonacci Ratio 4', group="Fibonacci")
R1 = ATR
R2 = ATR * F2
R3 = ATR * F3
R4 = ATR * F4
FIBOTOP4 = EMA + R4
FIBOTOP3 = EMA + R3
FIBOTOP2 = EMA + R2
FIBOTOP1 = EMA + R1
FIBOBOT1 = EMA - R1
FIBOBOT2 = EMA - R2
FIBOBOT3 = EMA - R3
FIBOBOT4 = EMA - R4
plot(FIBOTOP4[1], title='FIBOTOP4', linewidth=1, color=color.new(color.orange, 0))
plot(FIBOTOP3[1], title='FIBOTOP3', linewidth=1, color=color.new(color.aqua, 20))
plot(FIBOTOP2[1], title='FIBOTOP2', linewidth=1, color=color.new(color.gray, 40))
plot(FIBOTOP1[1], title='FIBOTOP1', linewidth=1, color=color.new(color.purple, 40))

plot(FIBOBOT1[1], title='FIBOBOT1', linewidth=1, color=color.new(color.green, 40))
plot(FIBOBOT2[1], title='FIBOBOT2', linewidth=1, color=color.new(color.yellow, 40))
plot(FIBOBOT3[1], title='FIBOBOT3', linewidth=1, color=color.new(color.blue, 20))
plot(FIBOBOT4[1], title='FIBOBOT4', linewidth=1, color=color.new(color.aqua, 0))
// plot(EMA[1], style=plot.style_cross, title='EMA', color=color.new(color.red, 0))

prefm = input.string(title="Fibo", options=["close>FIBOTOP4(orange)", "close>FIBOTOP3(aqua)","close>FIBOTOP2(gray)","close>FIBOTOP1(purple)", "Disable"] , defval="close>FIBOTOP1(purple)", group="Long")
_prefm = false 
if (prefm == "close>FIBOTOP4(orange)" )
    _prefm := close>FIBOTOP4[1]
    
if (prefm == "close>FIBOTOP3(aqua)" )
    _prefm := close>FIBOTOP3[1]

if (prefm == "close>FIBOTOP2(gray)" )
    _prefm := close>FIBOTOP2[1]
    
if (prefm == "close>FIBOTOP1(purple)" )
    _prefm := close>FIBOTOP2[1]
 
 
if (prefm == "Disable" )
    _prefm := low<low[1] or low>low[1]  
    
prefmS = input.string(title="Fibo", options=["close<FIBOBOT1(green)", "close<FIBOBOT2(yellow)", "close<FIBOBOT3(blue)", "close<FIBOBOT4(aqua)", "Disable"] , defval="close<FIBOBOT1(green)", group="Short")
_prefmS = false 
if (prefmS == "close<FIBOBOT1(green)" )
    _prefmS := close<FIBOBOT1[1]
  
if (prefmS == "close<FIBOBOT2(yellow)" )
    _prefmS := close<FIBOBOT2[1]

if (prefmS == "close<FIBOBOT3(blue)" )
    _prefmS := close<FIBOBOT3[1]
  
if (prefmS == "close<FIBOBOT4(aqua)" )
    _prefmS := close<FIBOBOT4[1]

if (prefmS == "Disable" )
    _prefmS := low<low[1] or low>low[1]  

// }

long2= _prefm 

short2= _prefmS
//

// === Bot Codes === { 
enterlong = input("Long Code", title='Long İlk Alım', group="Long Code")
entershort= input("Short Code", title='Short İlk Alım', group="Short Code")
exitlong = input("Long Exit Code", title='Long Exit', group="Long Code")
exitshort= input("Short Exit Code", title='Short Exit', group="Short Code")
// }

////////////////////////////////////////////////////////////////////////////////////////////TPSL
// Inputs
sl_inp = input.float(4, title='Stop %', step=0.1, group="Long") / 100
tp_inp = input.float(1.5, title='TP %', step=0.1, group="Long") / 100

sl_inp2 = input.float(4, title='Stop %', step=0.1, group="Short") / 100
tp_inp2 = input.float(1.5, title='TP %', step=0.1, group="Short") / 100

longtp = strategy.position_avg_price * (1 + tp_inp) 
longstop=  strategy.position_avg_price * (1 - sl_inp)

shortstop=  strategy.position_avg_price * (1 + sl_inp2)
shorttp = strategy.position_avg_price * (1 - tp_inp2) 
////////////////////////////////////////////////////////////////////////////////////////////
if window() and strategy.position_size==0 and longOK
    strategy.entry("Long", strategy.long, when= long2, alert_message=enterlong, comment="Long")
    
if strategy.position_size>0
    strategy.exit("Long", stop= longstop, limit=longtp, alert_message=exitlong, comment="TPSL")
////////////////////////////////////////////////////////////////////////////////////////////SHORT
if window() and strategy.position_size==0 and shortOK 
    strategy.entry("Short", strategy.short, when= short2, alert_message=entershort, comment="Short")
    
if strategy.position_size<0
    strategy.exit("Short", stop= shortstop, limit= shorttp, alert_message=exitshort, comment="TPSL")
 


مزید