ডায়নামিক ট্রেইলিং স্টপ লস কৌশল


সৃষ্টির তারিখ: 2023-12-29 10:42:27 অবশেষে সংশোধন করুন: 2023-12-29 10:42:27
অনুলিপি: 0 ক্লিকের সংখ্যা: 872
1
ফোকাস
1617
অনুসারী

ডায়নামিক ট্রেইলিং স্টপ লস কৌশল

ওভারভিউ

ডায়নামিক ট্র্যাকিং স্টপ লস কৌশল হল একটি পরিমাণগত ট্রেডিং কৌশল যা ট্র্যাকিং স্টপ মেশিন ব্যবহার করে। এই কৌশলটি ট্রেন্ড ট্র্যাকিং তত্ত্বের উপর ভিত্তি করে, স্টপ লস লাইন সেট করে, স্টপ লস নিশ্চিতকরণ এবং ট্র্যাকিং স্টপ লস অ্যাডজাস্টমেন্ট বাস্তবায়ন করে। এটি মূলত একক লেনদেনের ক্ষতি নিয়ন্ত্রণ করতে, লাভের জন্য লকিংকে সর্বাধিকতর করতে এবং লেনদেনের ঝুঁকি হ্রাস করতে ব্যবহৃত হয়।

কৌশল নীতি

ডায়নামিক ট্র্যাকিং স্টপ স্ট্র্যাটেজির মূল বিষয় হল তিনটি মূল প্যারামিটার সেট করাঃ প্রাথমিক স্টপ দূরত্ব, ট্র্যাকিং স্টপ দূরত্ব এবং ট্র্যাকিং স্টপ ট্রিগার দূরত্ব। ক্রয় সংকেতটি ট্রিগার হওয়ার পরে, ক্রয় মূল্য এবং সেট করা প্রাথমিক স্টপ দূরত্বের উপর ভিত্তি করে প্রাথমিক স্টপ মূল্য গণনা করা হয়। প্রতিটি কে লাইন পরবর্তী সময়ে বিচার করে যে ট্র্যাকিং স্টপ ট্রিগার শর্ত পূরণ হয়েছে কিনা। যদি তা পূরণ হয় তবে একটি নতুন ট্র্যাকিং স্টপ মূল্য সেট করা হবে।

এই কৌশলটি একই সাথে একটি নিম্ন স্তরের স্টপ রয়েছে, ট্র্যাকিং স্টপ চালু করা হোক বা না হোক, যদি দামটি নিম্ন স্তরের স্টপ অতিক্রম করে তবে তা সরাসরি বন্ধ হয়ে যায়। নিম্ন স্তরের স্টপটি এমন একটি ঘটনাকে প্রতিরোধ করার জন্য ব্যবহার করা হয় যা হঠাৎ করে ঘটে। সুতরাং, গতিশীল ট্র্যাকিং স্টপ কৌশলটি ডাবল লাইন আপ এবং ডাউন ফর্মের গতিশীল স্টপিংয়ের মাধ্যমে স্টপ লাইনকে স্বয়ংক্রিয়ভাবে লাভজনক গতির ট্র্যাক করতে সক্ষম করে, পাশাপাশি অত্যধিক ক্ষতি রোধ করে।

কৌশলগত সুবিধা

  1. স্টপ লস ট্র্যাকিংয়ের মাধ্যমে লাভের উপর লকিং করুন এবং অতিরিক্ত সুযোগ প্রদান করা এড়িয়ে চলুন।

  2. একটি ডাবল লাইন স্টপ স্ট্রাকচার ব্যবহার করা হয়েছে যাতে স্টপ লাইনগুলি সময়মতো অনুসরণ করা যায় এবং অতিরিক্ত ক্ষতি প্রতিরোধ করা যায়।

  3. ক্রমাগত বিচারের প্রক্রিয়া ব্যবহার করে ক্ষতির অবসান, অপারেশন সহজ, বাস্তবায়ন করা সহজ।

  4. মার্কেট এবং স্বতন্ত্র শেয়ারের বৈশিষ্ট্য অনুসারে প্যারামিটারগুলি সামঞ্জস্য করা যায় যাতে ক্ষতির প্রভাবকে অপ্টিমাইজ করা যায়।

  5. মার্কেটের গতিবিধি সম্পর্কে ধারণা না রেখে, আপনি ট্রেন্ড অনুসরণ করতে পারেন।

কৌশলগত ঝুঁকি

  1. প্যারামিটার সেট না করা হলে স্টপ লস বা স্ট্রেন হতে পারে। স্টপ লস হলে স্টপ লস কার্যকর হয় না এবং স্ট্রেন হলে স্টপ লস বা স্ট্রেন হয় না।

  2. হঠাৎ কোনো ঘটনার ফলে দামের পতন ঘটে, যা স্টপ লসকে অকার্যকর করে তোলে এবং অন্যান্য প্রতিরক্ষামূলক ব্যবস্থা গ্রহণ করা উচিত।

  3. লেনদেনের ফি এবং স্লাইড পয়েন্টগুলি স্টপ লিনের পরে প্রকৃত বিক্রয় মূল্যের উপর প্রভাব ফেলতে পারে।

  4. এটির অভিযোজনশীলতা খুব ভাল নয় এবং নির্দিষ্ট সময়ে, যেমন ভূমিকম্পের সময়, এটি খুব ভাল কাজ করে না।

প্রতিকারঃ

  1. এই প্যারামিটারগুলিকে পুনর্নির্মাণ এবং রিয়েল-ডিস্কের ফলাফলের উপর ভিত্তি করে অপ্টিমাইজ করার পরামর্শ দেওয়া হচ্ছে।
  2. একটি বৃহত্তর নিম্ন স্তরের স্টপ ক্ষতি প্রতিরোধী উড়ন্ত সেট করা যেতে পারে।
  3. স্টপ লস মূল্য গণনা করার সময় লেনদেনের খরচ এবং স্লাইড পয়েন্ট প্রভাব বিবেচনা করুন।
  4. প্রবণতা এবং ওঠানামা বিচার সূচক ব্যবহার করা যেতে পারে।

কৌশল অপ্টিমাইজেশনের দিকনির্দেশনা

  1. স্টপ লিনের ট্র্যাকিং শতাংশের পরিবর্তনের সাথে সামঞ্জস্য করা হয়েছে যাতে বিভিন্ন মূল্য স্তরের অধীনে শেয়ারের দামের পরিবর্তনগুলি আরও ভালভাবে ট্র্যাক করা যায়।

  2. স্টপ ট্র্যাকিং স্থগিত করার জন্য, স্টপ ট্র্যাকিং বন্ধ করার জন্য, স্টপ ট্র্যাকিং বন্ধ করার জন্য, স্টপ ট্র্যাকিং বন্ধ করার জন্য, স্টপ ট্র্যাকিং বন্ধ করার জন্য, স্টপ ট্র্যাকিং বন্ধ করার জন্য, স্টপ ট্র্যাকিং বন্ধ করার জন্য।

  3. মেশিন লার্নিং পদ্ধতি ব্যবহার করে প্যারামিটারগুলিকে স্বয়ংক্রিয়ভাবে অপ্টিমাইজ করুন। প্রশিক্ষণ নমুনাটি সাম্প্রতিক সময়ের মধ্যে প্যারামিটারগুলির সমন্বয়ের হারকে বেছে নেয়।

  4. প্রবণতা, সমর্থন এবং প্রতিরোধের মতো সূচকগুলির সাথে পোজিশন খোলার শর্তগুলি বাড়ান, শঙ্কাজনক পরিস্থিতিতে পোজিশন খোলার এড়াতে।

সারসংক্ষেপ

ডায়নামিক ট্র্যাকিং স্টপ স্ট্র্যাটেজি দ্বি-লাইন স্টপ মেশিনের মাধ্যমে, ট্র্যাকিং স্টপ লাইন সেট করুন, স্টপ নিশ্চিতকরণ এবং ট্র্যাকিং স্টপ অ্যাডজাস্টমেন্ট অর্জন করুন। মুনাফা লকিং, রিটার্ন হ্রাস এবং ক্ষতি নিয়ন্ত্রণের জন্য দামের পরিবর্তনের সাথে স্টপ আউট দূরত্বটি স্বয়ংক্রিয়ভাবে সামঞ্জস্য করা যেতে পারে। এই কৌশলটি পরিচালনা করা সহজ, বাস্তবায়ন করা সহজ, প্যারামিটারগুলি বাজারের অবস্থার উপর নির্ভর করে অনুকূলিত করা যেতে পারে এবং অন্যান্য কৌশল সমন্বয়গুলির সাথে ব্যবহারের জন্য আরও কার্যকর। তবে কিছু সীমাবদ্ধতা রয়েছে, এটি সম্পূর্ণরূপে সামঞ্জস্য করার পরামর্শ দেওয়া হয় এবং তারপরে রিয়েল-অপারেটরিতে প্রয়োগ করা হয়।

কৌশল সোর্স কোড
/*backtest
start: 2023-11-28 00:00:00
end: 2023-12-17 00:00:00
period: 1h
basePeriod: 15m
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/
// © Thumpyr
//@version=5

/////////////////////////////////////////////////////////////////////////////////////////////
// Comment out Strategy Line and remove // from Indicator line to turn into Indicator  //////
// Do same for alertConidction at bottom                                               //////
/////////////////////////////////////////////////////////////////////////////////////////////
strategy("PCT Trailing Stoploss-Strategy", shorttitle="PCT Trailing Stoploss- Strategy", overlay=true)
//indicator(title="PCT Trailing Stoploss- Indicator", shorttitle="PCT Trailing Stoploss - Indicator", timeframe="", timeframe_gaps=true, overlay=true)//

sellLow=input.float(.035, minval=0, title="Stop Loss Loss: 1% = .01", group="Sell Settings")
trailStopArm=input.float(.0065, minval=0, title="Trailing Stop Arm: 1%=.01", group="Sell Settings")
trailStopPct=input.float(.003, minval=0, title="Trailing Stop Trigger: 1%=.01 ", group="Sell Settings")

/////////////////////////////////////////////////
//               Indicators                    //
/////////////////////////////////////////////////
ema1Len = input.int(14, minval=1, title=" ema 1 Length", group="Trend Line Settings")
ema1Src = input(close, title="ema 1 Source", group="Trend Line Settings")
ema1 = ta.ema(ema1Src, ema1Len)
plot(ema1, title="EMA", color=color.blue)

ema2Len = input.int(22, minval=1, title=" ema 2 Length", group="Trend Line Settings")
ema2Src = input(close, title="ema 2 Source", group="Trend Line Settings")
ema2 = ta.ema(ema2Src, ema2Len)
plot(ema2, title="EMA", color=color.orange)

ema3Len = input.int(200, minval=1, title=" ema 3 Length", group="Trend Line Settings")
ema3Src = input(close, title="ema 2 Source", group="Trend Line Settings")
ema3 = ta.ema(ema3Src, ema3Len)
plot(ema3, title="EMA", color=color.gray)


/////////////////////////////
////   Buy Conditions    ////
/////////////////////////////

alertBuy = ta.crossover(ema1,ema2) and close>ema3

////////////////////////////////////////////////////////////////////
////   Filter redundant Buy Signals if Sell has not happened    ////
////////////////////////////////////////////////////////////////////
var lastsignal = 0
showAlertBuy = 0
if(alertBuy and lastsignal !=1)
    showAlertBuy  := 1
    lastsignal      := 1
buyAlert= showAlertBuy > 0


//////////////////////////////////////////////////////////////////
////          Track Conditions at buy Signal                  ////
//////////////////////////////////////////////////////////////////

alertBuyValue = ta.valuewhen(buyAlert, close,0)
alertSellValueLow = alertBuyValue - (alertBuyValue*sellLow)

////////////////////////////////////////////////////////////
/////            Trailing Stop                         /////
////////////////////////////////////////////////////////////
var TSLActive=0         //Check to see if TSL has been activated
var TSLTriggerValue=0.0 //Initial and climbing value of TSL
var TSLStop = 0.0       //Sell Trigger
var TSLRunning =0       //Continuously check each bar to raise TSL or not

//  Check if a Buy has been triggered and set initial value for TSL //
if buyAlert
    TSLTriggerValue := alertBuyValue+(alertBuyValue*trailStopArm)
    TSLActive := 0
    TSLRunning :=1
    TSLStop := TSLTriggerValue - (TSLTriggerValue*trailStopPct)
    

//  Check that Buy has triggered and if Close has reached initial TSL//  
//  Keeps from setting Sell Signal before TSL has been armed w/TSLActive//
beginTrail=TSLRunning==1 and TSLActive==0 and close>alertBuyValue+(alertBuyValue*trailStopArm) and ta.crossover(close,TSLTriggerValue)
if beginTrail
    TSLTriggerValue :=close
    TSLActive :=1
    TSLStop :=TSLTriggerValue - (TSLTriggerValue*trailStopPct)
    
//  Continuously check if TSL needs to increase and set new value //    
runTrail= TSLActive==1 and (ta.crossover(close,TSLTriggerValue) or close>=TSLTriggerValue)
if runTrail
    TSLTriggerValue :=close
    TSLStop :=TSLTriggerValue - (TSLTriggerValue*trailStopPct)
    
//  Verify that TSL is active and trigger when close cross below TSL Stop//
TSL=TSLActive==1 and (ta.crossunder(close,TSLStop) or (close[1]>TSLStop and close<TSLStop)) 

// Plot point of inital arming of TSL//
TSLTrigger=TSLActive==1 and TSLActive[1]==0
plotshape(TSLTrigger, title='TSL Armed', location=location.abovebar, color=color.new(color.blue, 0), size=size.small, style=shape.cross, text='TSL Armed')


////////////////////////////////////////////////////////////
// Plots used for troubleshooting and verification of TSL //
////////////////////////////////////////////////////////////
//plot(TSLActive,"Trailing Stop", color=#f48fb1)
//plot(TSLRunning,"Trailing Stop", color=#f48fb1)
//plot(TSLTriggerValue,"Trailing Stop Trigger", color.new(color=#ec407a, transp = TSLRunning==1 ? 0 : 100))
//plot(TSLStop,"Trailing Stop", color.new(color=#f48fb1, transp = TSLRunning==1 ? 0 : 100))//


////////////////////////////////////////////////////////////
/////             Sell Conditions                    ///////
////////////////////////////////////////////////////////////
Sell1 = TSL
Sell2 = ta.crossunder(close,alertSellValueLow)

alertSell= Sell1 or Sell2
////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////
////        Remove Redundant Signals                    ////
////////////////////////////////////////////////////////////
showAlertSell = 0
if(alertSell and lastsignal != -1)
    showAlertSell := 1
    lastsignal      := -1
sellAlert= showAlertSell > 0

if sellAlert
    TSLActive :=0
    TSLRunning :=0

/////////////////////////////////////////
//  Plot Buy and Sell Shapes on Chart  //
/////////////////////////////////////////
plotshape(buyAlert, title='Buy', location=location.belowbar, color=color.new(color.green, 0), size=size.small, style=shape.triangleup, text='Buy')
plotshape(sellAlert, title='Sell', location=location.abovebar, color=color.new(color.red, 0), size=size.small, style=shape.triangledown, text='Sell')

/////////////////////////////////////////////////////////////////////////////////////////////
//                        Remove // to setup for Indicator                                 //
/////////////////////////////////////////////////////////////////////////////////////////////
//Alerts
//alertcondition(title='Buy Alert', condition=buyAlert, message='Buy Conditions are Met')
//alertcondition(title='Sell Alert', condition=sellAlert, message='Sell Conditions are Met')
/////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////
////  Comment out this section if setup as Indicator    ////
////////////////////////////////////////////////////////////
longCondition = buyAlert
if (longCondition)
    strategy.entry("Buy", strategy.long)
    alert(message='Buy', freq=alert.freq_once_per_bar_close)
    
shortCondition = sellAlert
if (shortCondition)
    strategy.close_all(sellAlert,"Sell")
    alert(message='Sell', freq=alert.freq_once_per_bar_close)
/////////////////////////////////////////////////////////////