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


تخلیق کی تاریخ: 2023-12-11 11:18:56 آخر میں ترمیم کریں: 2023-12-11 11:18:56
کاپی: 1 کلکس کی تعداد: 727
1
پر توجہ دیں
1621
پیروکار

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

جائزہ

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

حکمت عملی کا اصول

منطق خریدیں

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

منطق بیچنا

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

رسک کنٹرول

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

جمع کرنے کا طریقہ

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

طاقت کا تجزیہ

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

خطرات اور حل

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

اصلاح کی تجاویز

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*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()