قیمتوں میں تبدیلی اور مقداری اشارے پر مبنی اوسط قیمتوں کا تعین کی حکمت عملی

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

img

جائزہ

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

اصول

لمبی انٹری منطق

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

طویل قریبی منطق

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

خطرے کا کنٹرول

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

اہرام سازی

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

فوائد

  1. خرید و فروخت کے سگنل کو درست طریقے سے تلاش کرنے کے لئے شرح تبدیلی (ROC) اشارے کو اپنائیں۔ ROC قیمت کی تبدیلیوں کے لئے بہت حساس ہے۔
  2. غلط وقفے سے بچنے کے لئے داخلہ اور باہر نکلنے کے سگنل کی مزید تصدیق کے لئے حد کی لائنیں استعمال کریں۔
  3. اہرام سازی کا طریقہ خطرہ کو کنٹرول کرتے ہوئے مارکیٹ ویلیو کو ٹریک کرتا ہے۔
  4. بلٹ میں سٹاپ نقصان اور منافع لے سختی سے ہر پوزیشن کے لئے خطرات کو کنٹرول.

خطرات اور حل

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

اصلاحات

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

نتیجہ

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


/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 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/
// @version=4
// © A3Sh

// Rate of price change / Price averaging strategy //
// When the price drops to a specified percentage, a Long Entry Threshold is setup.
// The Long Entry Threshold is only active for a specified number of bars and will de-activate when not crossed. 
// When the price drops further and crosses the Entry Threshold with a minimum of a specified percentage, a Long Position is entered. 
// The same reverse logic used to close the Long Position.
// Stop loss and take profit are active by default. With proper tweaking of the settings it is possible to de-activate SL and TP.

// The strategy is inspired by the following strategies:
// Price Change Scalping Strategy developed by Prosum Solutions, https://www.tradingview.com/script/ue7Uc3sN-Price-Change-Scalping-Strategy-v1-0-0/
// Scalping Dips On Trend Strategy developed by Coinrule, https://www.tradingview.com/script/iHHO0PJA-Scalping-Dips-On-Trend-by-Coinrule/

strategy(title = "ROC_PA_Strategy_@A3Sh", overlay = true )

// Portfolio & Leverage Example
// credit: @RafaelZioni, https://www.tradingview.com/script/xGk5K4DE-BTC-15-min/
ge(value, precision) => round(value * (pow(10, precision))) / pow(10, precision)

port     = input(25, group = "Risk", title = "Portfolio Percentage", type = input.float, step = 0.1, minval = 0.1, maxval = 200)
leverage = input(1,  group = "Risk", title = "Leverage", minval = 1, maxval = 100)
mm       = input(5,  group = "Risk", title = "Broker Maintenance Margin Percentage", type = input.float, step = 0.1, minval = 0.1, maxval = 200)

c = ge((strategy.equity * leverage / open) * (port  / 100), 4)

// Take Profit
tpa = input(true, type = input.bool,  title = "Take Profit", group = "Risk", inline = "Take Profit")
tpp = input(5.6,    type = input.float, title = "Percentage" , group = "Risk", step = 0.1, minval = 0.1, inline = "Take Profit")
tp  = strategy.position_avg_price + (strategy.position_avg_price / 100 * tpp)
plot (tpa and strategy.position_size > 0 ? tp : na, color = color.gray, title = "take profit", style= plot.style_linebr, linewidth = 1)

// Stop Loss
sla = input(true, type = input.bool, title = "Stop Lossss ", group = "Risk", inline = "Stop Loss")
slp = input(2.5,   type = input.float, title = "Percentage",   group = "Risk", step = 0.1, minval = 0.1, inline = "Stop Loss")
sl  = strategy.position_avg_price - (strategy.position_avg_price / 100 *slp)
plot (sla and strategy.position_size > 0 ? sl : na, color = color.red, title = "stopp loss", style= plot.style_linebr, linewidth = 1)

stopLoss = sla ? sl : na

// Long position entry layers. Percentage from the entry price of the the first long
ps2 = input(2, group = "Price Averaging Layers", title = "2nd Layer Long Entry %", step = 0.1)
ps3 = input(5, group = "Price Averaging Layers", title = "3rd Layer Long Entry %", step = 0.1)
ps4 = input(9, group = "Price Averaging Layers", title = "4th Layer Long Entry %", step = 0.1)

// ROC_Trigger Logic to open Long Position
rocLookBack  = input(3,   group = "ROC Logic to OPEN Long Entry", title="Rate of Change bar lookback")
rocThreshold = input(0.5, group = "ROC Logic to OPEN Long Entry", title="ROC Threshold % to Setup Long Entry", step = 0.1)
entryLimit   = input(0.5, group = "ROC Logic to OPEN Long Entry", title="Price Drop Threshold % to OPEN Long Entry", step = 0.1)
entryTime    = input(3,   group = "ROC Logic to OPEN Long Entry", title="Duration of Long Entry Threshold Line in bars")
minLimit     = input(0.8, group = "ROC Logic to OPEN Long Entry", title="Min % of Price Drop to OPEN Long Entry", step = 0.1)

//ROC calculation based to the price level of previous X bars
roc = close[rocLookBack]  - (close / 100 * rocThreshold)
plot (roc, color = color.gray, title = "roc threshold", linewidth = 1 , transp = 20)

rocT1      = open > roc and close < roc ? 1 : 0 // When the price CROSSES the Entry Limit
rocT2      = (open < roc) and (close < roc) ? 1 : 0 // When the price is BELOW the Entry Limit
rocTrigger = rocT1 or rocT2

// Condition for Setting Up a Long Entry Thershold Line
rocCrossed    = false
var SetUpLong = false

if rocTrigger and not SetUpLong

    rocCrossed := true
    SetUpLong  := true

// Defining the Value of the Long Entry Thershold
condforValue = rocCrossed and (open - low) / (open / 100) > 0 or (open < roc and close < roc) ? low - (close / 100 * entryLimit) : roc - (close / 100 * entryLimit)
openValue    = valuewhen (rocCrossed, condforValue, 0)

// Defining the length of the Long Entry Thershold in bars, specified with an input parameter
sincerocCrossed = barssince (rocCrossed)
plotLineOpen    = (sincerocCrossed <= entryTime) ? openValue : na
endLineOpen     = sincerocCrossed == entryTime  ? 1 : 0

// Set the conditions back to false when the Entry Limit Threshold Line ends after specied number of bars
if endLineOpen and SetUpLong
    
    rocCrossed := false
    SetUpLong  := false    

// Set minimum percentage of price drop to open a Long Position.
minThres = (open - close) / (open / 100) > minLimit ? 1 : 0

// Open Long Trigger
openLong = crossunder (close, plotLineOpen) and strategy.position_size == 0 and minThres

plot (strategy.position_size == 0 ? plotLineOpen : na, title = "Long Entry Threshold", color= color.yellow, style= plot.style_linebr, linewidth = 2)

// Show vertical dashed line when long condition is triggered 
// credit: @midtownsk8rguy, https://www.tradingview.com/script/EmTkvfCM-vline-Function-for-Pine-Script-v4-0/
vline(BarIndex, Color, LineStyle, LineWidth) => 
    return = line.new(BarIndex, low - tr, BarIndex, high + tr, xloc.bar_index, extend.both, Color, LineStyle, LineWidth) 
// if (openLong)
//     vline(bar_index, color.blue, line.style_dashed, 1)

// ROC_Trigger Logic to close Long Position
rocLookBackL    = input(3,   group = "ROC Logic to CLOSE Long Entry", title = "Rate of Change bar lookback")
entryThresholdL = input(0.8, group = "ROC Logic to CLOSE Long Entry", title = "ROC Threshold % to Setup Close Threshold", step = 0.1) // Percentage from close price
entryLimit_CL   = input(1.7, group = "ROC Logic to CLOSE Long Entry", title = "Price Rise Threshold % to CLOSE Long Entry", step = 0.1) // Percentage from roc threshold
entryTime_CL    = input(3,   group = "ROC Logic to CLOSE Long Entry", title = "Duration of Entry Limit in bars")

roc_CL = close[rocLookBackL]  + (close/100 *entryThresholdL)
//plot(rocL, color=color.gray, linewidth=1, transp=20)

rocT1_CL = open < roc_CL and close > roc_CL ? 1 : 0
rocT2_CL = (open > roc_CL) and (close > roc_CL)  ? 1 : 0 
rocTrigger_CL = rocT1_CL or rocT2_CL

// Condition for Setting Up a Long CLOSE Thershold Line
rocCrossed_CL  = false

var SetUpClose = false

if rocTrigger_CL and not SetUpClose
    // The trigger for condA occurs and the last condition set was condB.
    rocCrossed_CL := true
    SetUpClose    := true

// Defining the Value of the Long CLOSE Thershold
condforValue_CL= rocCrossed_CL and (high - open) / (open / 100) > 0 or (open > roc_CL and close > roc_CL) ? high + (close / 100 * entryLimit_CL) : roc_CL + (close / 100 * entryLimit_CL)
closeValue = valuewhen (rocCrossed_CL, condforValue_CL, 0)

// Defining the length of the Long CLOSE Thershold in bars, specified with an input parameter
sincerocCrossed_CL = barssince(rocCrossed_CL)
plotLineClose = (sincerocCrossed_CL <= entryTime_CL) ? closeValue : na
endLineClose = (sincerocCrossed_CL == entryTime_CL)  ? 1 : 0

// Set the conditions back to false when the CLOSE Limit Threshold Line ends after specied number of bars
if endLineClose and SetUpClose

    rocCrossed_CL := false
    SetUpClose := false    

plot(strategy.position_size > 0 ? plotLineClose : na, color = color.white, title = "Close Long Threshold", style = plot.style_linebr, linewidth = 2)

// ROC Close + Take Profit combined
closeCondition = close < tp ? plotLineClose : tpa ? tp : plotLineClose

// Store values to create and plot the different PA layers
long1 = valuewhen(openLong, close, 0)
long2 = valuewhen(openLong, close - (close / 100 * ps2), 0)
long3 = valuewhen(openLong, close - (close / 100 * ps3), 0)
long4 = valuewhen(openLong, close - (close / 100 * ps4), 0)

eps1 = 0.00
eps1 := na(eps1[1]) ? na : eps1[1]

eps2 = 0.00
eps2 := na(eps2[1]) ? na : eps2[1]

eps3 = 0.00
eps3 := na(eps3[1]) ? na : eps3[1]

eps4 = 0.00
eps4 := na(eps4[1]) ? na : eps4[1]

plot (strategy.position_size > 0 ? eps1 : na, title = "Long 1 Layer", style = plot.style_linebr)
plot (strategy.position_size > 0 ? eps2 : na, title = "Long 2 Layer", style = plot.style_linebr)
plot (strategy.position_size > 0 ? eps3 : na, title = "Long 3 Layer", style = plot.style_linebr)
plot (strategy.position_size > 0 ? eps4 : na, title = "Long 4 Layer", style = plot.style_linebr)

// Ener Long Positions
if (openLong and strategy.opentrades == 0) 
    eps1 := long1
    eps2 := long2
    eps3 := long3
    eps4 := long4
    strategy.entry("Long1", strategy.long, c, comment = "a=binance2 e=binance s=bnbusdt b=buy q=20% t=market")

if (strategy.opentrades == 1)
    strategy.entry("Long2", strategy.long, c, limit = eps2, comment = "a=binance2 e=binance s=bnbusdt b=buy q=25% t=market")

if (strategy.opentrades == 2)
    strategy.entry("Long3", strategy.long, c, limit = eps3, comment = "a=binance2 e=binance s=bnbusdt b=buy q=33.3% t=market")

if (strategy.opentrades == 3)
    strategy.entry("Long4", strategy.long, c, limit = eps4, comment = "a=binance2 e=binance s=bnbusdt b=buy q=50% t=market")

// Setup Limit Close / Take Profit / Stop Loss order 
strategy.exit("Exit", stop = stopLoss, limit = closeCondition, when =(rocTrigger_CL and strategy.position_size > 0), comment= "a=binance2 e=binance s=bnbusdt b=sell q=100% t=market")

// Make sure that all open limit orders are canceled after exiting all the positions 
longClose = strategy.position_size[1] > 0 and strategy.position_size == 0 ? 1 : 0   

if longClose
    strategy.cancel_all()




مزید