وسائل لوڈ ہو رہے ہیں... لوڈنگ...

انکولی اتار چڑھاؤ بریکآؤٹ ٹریڈنگ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-12-04 14:34:13
ٹیگز:

img

جائزہ

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

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

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

فوائد کا تجزیہ

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

خطرے کا تجزیہ

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

اصلاح کی ہدایات

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

خلاصہ

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


/*backtest
start: 2023-11-03 00:00:00
end: 2023-12-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version = 4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © TradingGroundhog



//  ||---   Cash & Date:
cash_amout = 10000
pyramid_val = 1
cash_given_per_lot = cash_amout/pyramid_val
startDate = input(title="Start Date",defval=13)
startMonth = input(title="Start Month",defval=9)
startYear = input(title="Start Year",defval=2021)
afterStartDate = (time >= timestamp(syminfo.timezone,startYear, startMonth, startDate, 0, 0))
//  ||------------------------------------------------------------------------------------------------------



//  ||---   Strategy:
strategy(title="TradingGroundhog - Strategy & Fractal V1 - Short term", overlay=true, max_bars_back = 4000, max_labels_count=500, commission_type=strategy.commission.percent, commission_value=0.00,default_qty_type=strategy.cash, default_qty_value= cash_given_per_lot, pyramiding=pyramid_val)
//  ||------------------------------------------------------------------------------------------------------



//  ||---   Fractal Recognition:
filterBW = input(true, title="filter Bill Williams Fractals:")
filterFractals = input(true, title="Filter fractals using extreme method:")
length = input(2, title="Extreme Window:")
regulartopfractal = high[4] < high[3] and high[3] < high[2] and high[2] > high[1] and high[1] > high[0]
regularbotfractal = low[4] > low[3] and low[3] > low[2] and low[2] < low[1] and low[1] < low[0]
billwtopfractal = filterBW ? false : (high[4] < high[2] and high[3] < high[2] and high[2] > high[1] and high[2] > high[0] ? true : false)
billwbotfractal = filterBW ? false : (low[4] > low[2] and low[3] > low[2] and low[2] < low[1] and low[2] < low[0] ? true : false)
ftop = filterBW ? regulartopfractal : regulartopfractal or billwtopfractal
fbot = filterBW ? regularbotfractal : regularbotfractal or billwbotfractal
topf = ftop ? high[2] >= highest(high, length) ? true : false : false
botf = fbot ? low[2] <= lowest(low, length) ? true : false : false
filteredtopf = filterFractals ? topf : ftop
filteredbotf = filterFractals ? botf : fbot
//  ||------------------------------------------------------------------------------------------------------



//  ||---   V1 : Added Swing High/Low Option
ShowSwingsHL = input(true)
highswings = filteredtopf == false ? na : valuewhen(filteredtopf == true, high[2], 2) < valuewhen(filteredtopf == true, high[2], 1) and valuewhen(filteredtopf == true, high[2], 1) > valuewhen(filteredtopf == true, high[2], 0)
lowswings = filteredbotf == false ? na : valuewhen(filteredbotf == true, low[2], 2) > valuewhen(filteredbotf == true, low[2], 1) and valuewhen(filteredbotf == true, low[2], 1) < valuewhen(filteredbotf == true, low[2], 0)
//---------------------------------------------------------------------------------------------------------



//  ||---   V2 : Plot Lines based on the fractals.
showchannel = input(true)
//---------------------------------------------------------------------------------------------------------



//  ||---   ZigZag:
showZigZag = input(true)
//----------------------------------------------------------------------------------------------------------



//  ||---   Fractal computation:
istop = filteredtopf ? true : false
isbot = filteredbotf ? true : false
topcount = barssince(istop)
botcount = barssince(isbot)
vamp = input(title="VolumeMA",  defval=2)
vam = sma(volume, vamp)
fractalup = 0.0
fractaldown = 0.0
up = high[3]>high[4] and high[4]>high[5] and high[2]<high[3] and high[1]<high[2] and volume[3]>vam[3]
down = low[3]<low[4] and low[4]<low[5] and low[2]>low[3] and low[1]>low[2] and volume[3]>vam[3]
fractalup :=  up ? high[3] : fractalup[1] 
fractaldown := down ? low[3] : fractaldown[1]
//----------------------------------------------------------------------------------------------------------



//  ||---   Fractal save:
fractaldown_save = array.new_float(0)
for i = 0 to 4000
    if array.size(fractaldown_save) < 3
        if array.size(fractaldown_save) == 0
            array.push(fractaldown_save, fractaldown[i])
        else 
            if fractaldown[i] != array.get(fractaldown_save, array.size(fractaldown_save)-1)
                array.push(fractaldown_save, fractaldown[i])
if array.size(fractaldown_save) < 3
    array.push(fractaldown_save, fractaldown)
    array.push(fractaldown_save, fractaldown)
fractalup_save = array.new_float(0)
for i = 0 to 4000
    if array.size(fractalup_save) < 3
        if array.size(fractalup_save) == 0
            array.push(fractalup_save, fractalup[i])
        else 
            if fractalup[i] != array.get(fractalup_save, array.size(fractalup_save)-1)
                array.push(fractalup_save, fractalup[i])
if array.size(fractalup_save) < 3
    array.push(fractalup_save, fractalup)
    array.push(fractalup_save, fractalup)
Bottom_1 = array.get(fractaldown_save,  0)
Bottom_2 = array.get(fractaldown_save,  1)
Bottom_3 = array.get(fractaldown_save,  2)
Top_1 = array.get(fractalup_save, 0)
Top_2 = array.get(fractalup_save, 1)
Top_3 = array.get(fractalup_save, 2)
//----------------------------------------------------------------------------------------------------------



//  ||---   Fractal Buy Sell Signal:
bool Signal_Test = false
bool Signal_Test_OUT_TEMP = false
var Signal_Test_TEMP = false
longLossPerc = input(title="Long Stop Loss (%)", minval=0.0, step=0.1, defval=0.01) * 0.01
if filteredbotf and open < Bottom_1 and (Bottom_1 - open) / Bottom_1 >= longLossPerc
    Signal_Test := true
if filteredtopf and open > Top_1
    Signal_Test_TEMP := true
if filteredtopf and Signal_Test_TEMP
    Signal_Test_TEMP := false
    Signal_Test_OUT_TEMP := true
//----------------------------------------------------------------------------------------------------------



//  ||---   Plotting:
//plotshape(filteredtopf, style=shape.triangledown, location=location.abovebar, color=color.red, text="•", offset=0)
//plotshape(filteredbotf, style=shape.triangleup, location=location.belowbar, color=color.lime, text="•", offset=0)
//plotshape(ShowSwingsHL ? highswings : na, style=shape.triangledown, location=location.abovebar, color=color.maroon, text="H", offset=0)
//plotshape(ShowSwingsHL ? lowswings : na, style=shape.triangleup, location=location.belowbar, color=color.green, text="L", offset=0)
plot(showchannel ? (filteredtopf ? high[2] : na) : na, color=color.black, offset=0)
plot(showchannel ? (filteredbotf ? low[2] : na) : na, color=color.black, offset=0)
plot(showchannel ? (highswings ? high[2] : na) : na, color=color.black, offset=-2)
plot(showchannel ? (lowswings ? low[2] : na) : na, color=color.black, offset=-2)
plotshape(Signal_Test, style=shape.flag, location=location.belowbar, color=color.yellow, offset=0)
plotshape(Signal_Test_OUT_TEMP, style=shape.flag, location=location.abovebar, color=color.white, offset=0)
//----------------------------------------------------------------------------------------------------------



//  ||---   Buy And Sell:
strategy.entry(id="Long", long=true, when = Signal_Test and afterStartDate)
strategy.close_all(when = Signal_Test_OUT_TEMP and afterStartDate)
//----------------------------------------------------------------------------------------------------------    
    

مزید