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

دو مرحلے کی سٹاپ نقصان کی حکمت عملی

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

img

جائزہ

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

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

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

خاص طور پر، انٹری منطق یہ ہے:

  1. جب بند Bollinger کی کم بینڈ سے نیچے ہے اور اسٹوکاسٹک K D سے نیچے عبور کرتا ہے تو لانگ درج کریں۔

  2. مختصر میں داخل ہوں جب بند بولنگر کے اوپری بینڈ سے اوپر ہو اور اسٹوکاسٹک K D سے اوپر ہو۔

حکمت عملی میں دو منافع حاصل کرنے کے اہداف مقرر کیے گئے ہیں، TP1 200 پوائنٹس اور TP2 500 پوائنٹس پر مقرر کیا گیا ہے.

جب قیمت چلتی ہے اور ٹی پی 1 کو متحرک کیا جاتا ہے تو ، حکمت عملی اسٹاپ نقصان کو انٹری قیمت پر منتقل کرے گی۔ اس سے پہلے مرحلے سے منافع میں قفل ہوجاتا ہے اور اسٹاپ نقصان کے شکار کو روکتا ہے۔

یہ حکمت عملی TP2 یا سٹاپ نقصان کو چالو کرنے پر تمام پوزیشنوں کو بند کرتی ہے۔

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

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

ایک اور فائدہ بولنگر بینڈ کا امتزاج ہے جو اتار چڑھاؤ کی حد اور اسٹوکاسٹک کو زیادہ خرید / فروخت کے لئے زیادہ درست اندراجات کے لئے کرتا ہے.

خطرے کا تجزیہ

اہم خطرات بولنگر بینڈ اور اسٹوکاسٹک اشارے سے ممکنہ غلط سگنلز سے پیدا ہوتے ہیں۔ غلط بولنگر رینج کی وجہ سے اندراجات یا خراب سگنل غائب ہوسکتے ہیں۔ اسٹوکاسٹک غلط بریک آؤٹ بھی غلط اندراجات کا سبب بنتے ہیں۔

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

ان خطرات کو دونوں اشارے کے لئے پیرامیٹرز کو بہتر بنانے اور سٹاپ نقصانات کے درمیان فاصلے کو بڑھانے سے کم کیا جا سکتا ہے.

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

اس حکمت عملی کے لیے مزید اصلاحات:

  1. بہترین بولنگر اور اسٹوکاسٹک پیرامیٹرز تلاش کرنے کے لئے مختلف پیرامیٹر مجموعے کی جانچ کریں۔

  2. مثالی ترتیب تلاش کرنے کے لئے مختلف منافع / نقصان کے اہداف کا تجربہ کریں.

  3. زیادہ درستگی کے لئے کثیر اشارے کے نظام بنانے کے لئے چلتی اوسط جیسے دوسرے اشارے شامل کریں.

  4. تحقیق متبادل سٹاپ نقصان پوزیشننگ منطق، داخلہ کی قیمت کے بجائے داخلہ سے مقررہ فاصلے کی طرح.

  5. سٹاپ نقصان کی تحریک کے واقعات کو 3 یا اس سے زیادہ مراحل تک بڑھانا۔

نتیجہ

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


/*backtest
start: 2022-10-18 00:00:00
end: 2023-10-24 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/
// © fpsd4ve

//@version=5

// Add Bollinger Bands indicator (close, 20, 2) manually to visualise trading conditions
strategy("2xTP, SL to entry", 
     overlay=false,
     pyramiding=0,
     calc_on_every_tick=false,
     default_qty_type=strategy.percent_of_equity,
     default_qty_value=25,
     initial_capital=1000,
     commission_type=strategy.commission.percent,
     commission_value=0.01
     )

// PARAMETERS
// Assumes quote currency is FIAT as with BTC/USDT pair
tp1=input.float(200, title="Take Profit 1")
tp2=input.float(500, title="Take Profit 2")
sl=input.float(200, title="Stop Loss")
stOBOS = input.bool(true, title="Use Stochastic overbought/oversold threshold")

// Colors
colorRed = #FF2052
colorGreen = #66FF00


// FUNCTIONS
// Stochastic
f_stochastic() =>
    stoch = ta.stoch(close, high, low, 14)
    stoch_K = ta.sma(stoch, 3)
    stoch_D = ta.sma(stoch_K, 3)
    stRD = ta.crossunder(stoch_K, stoch_D)
    stGD = ta.crossover(stoch_K, stoch_D)
    [stoch_K, stoch_D, stRD, stGD]


// VARIABLES
[bbMiddle, bbUpper, bbLower] = ta.bb(close, 20, 2)
[stoch_K, stoch_D, stRD, stGD] = f_stochastic()


// ORDERS
// Active Orders
// Check if strategy has open positions
inLong = strategy.position_size > 0
inShort = strategy.position_size < 0
// Check if strategy reduced position size in last bar
longClose = strategy.position_size < strategy.position_size[1]
shortClose = strategy.position_size > strategy.position_size[1]

// Entry Conditions
// Enter long when during last candle these conditions are true:
// Candle high is greater than upper Bollinger Band
// Stochastic K line crosses under D line and is oversold
longCondition = stOBOS ?
     low[1] < bbLower[1] and stGD[1] and stoch_K[1] < 25 :
     low[1] < bbLower[1] and stGD[1]

// Enter short when during last candle these conditions are true:
// Candle low is lower than lower Bollinger Band
// Stochastic K line crosses over D line and is overbought
shortCondition = stOBOS ?
     high[1] > bbUpper[1] and stRD[1] and stoch_K[1] > 75 :
     high[1] > bbUpper[1] and stRD[1]

// Exit Conditions
// Calculate Take Profit 
longTP1 = strategy.position_avg_price + tp1
longTP2 = strategy.position_avg_price + tp2
shortTP1 = strategy.position_avg_price - tp1
shortTP2 = strategy.position_avg_price - tp2

// Calculate Stop Loss
// Initialise variables
var float longSL = 0.0
var float shortSL = 0.0

// When not in position, set stop loss using close price which is the price used during backtesting
// When in a position, check to see if the position was reduced on the last bar
// If it was, set stop loss to position entry price. Otherwise, maintain last stop loss value
longSL := if inLong and ta.barssince(longClose) < ta.barssince(longCondition)
    strategy.position_avg_price
else if inLong
    longSL[1]
else
    close - sl

shortSL := if inShort and ta.barssince(shortClose) < ta.barssince(shortCondition)
    strategy.position_avg_price
else if inShort
    shortSL[1]
else
    close + sl

// Manage positions
strategy.entry("Long", strategy.long, when=longCondition)
strategy.exit("TP1/SL", from_entry="Long", qty_percent=50, limit=longTP1, stop=longSL)
strategy.exit("TP2/SL", from_entry="Long", limit=longTP2, stop=longSL)

strategy.entry("Short", strategy.short, when=shortCondition)
strategy.exit("TP1/SL", from_entry="Short", qty_percent=50, limit=shortTP1, stop=shortSL)
strategy.exit("TP2/SL", from_entry="Short", limit=shortTP2, stop=shortSL)


// DRAW
// Stochastic Chart
plot(stoch_K, color=color.blue)
plot(stoch_D, color=color.orange)

// Circles
plot(stOBOS ? stRD and stoch_K >= 75 ? stoch_D : na : stRD ? stoch_D : na, color=colorRed, style=plot.style_circles, linewidth=3)
plot(stOBOS ? stGD and stoch_K <= 25 ? stoch_D : na : stGD ? stoch_K : na, color=colorGreen, style=plot.style_circles, linewidth=3)

// Levels
hline(75, linestyle=hline.style_dotted)
hline(25, linestyle=hline.style_dotted)

مزید