মূল্য ব্যবধানের উপর ভিত্তি করে ট্রেইলিং স্টপ লস কৌশল


সৃষ্টির তারিখ: 2023-11-28 13:53:16 অবশেষে সংশোধন করুন: 2023-11-28 13:53:16
অনুলিপি: 0 ক্লিকের সংখ্যা: 655
1
ফোকাস
1617
অনুসারী

মূল্য ব্যবধানের উপর ভিত্তি করে ট্রেইলিং স্টপ লস কৌশল

ওভারভিউ

এই কৌশলটি সর্বনিম্ন মূল্যের স্টপ লস ট্র্যাক করতে এবং মুনাফা অর্জনের জন্য সর্বনিম্ন মূল্যের স্টপ লস এবং স্টপ লস কার্ড সেট করে।

কৌশল নীতি

যখন দাম N ঘন্টার মধ্যে সর্বনিম্ন পয়েন্ট থেকে পড়ে যায় তখন অবস্থান ব্যবধান, সেট করা শতাংশ অনুসারে আরও বেশি প্রবেশ করুন, একই সাথে স্টপ লস এবং স্টপ ওয়ারেন্ট সেট করুন। তারপরে স্টপ লাইন এবং স্টপ লাইনটি বাজারের অবস্থার সাথে সামঞ্জস্য রেখে সরানো হবে। নির্দিষ্ট যুক্তিটি নিম্নরূপঃ

  1. N ঘন্টার মধ্যে সর্বনিম্ন পয়েন্টকে বাঁধাই মূল্য হিসাবে গণনা করুন
  2. রিয়েল-টাইম দামের চেয়ে কম দামের বিনিময়ে ক্রয়-বিক্রয় সেট শতাংশের মাধ্যমে অতিরিক্ত প্রবেশ করুন
  3. সেট স্টপ কমান্ডটি প্রবেশের মূল্যের দ্বারা বিক্রয়ের সেট শতাংশ হিসাবে গুণিত হয়
  4. সেট করুন স্টপ লস একক প্রবেশ মূল্য বিয়োগ প্রবেশ মূল্য গুণ স্টপ লস শতাংশ
  5. কৌশলগত স্বার্থের শতকরা হার
  6. সর্বনিম্ন মূল্যের চলমান স্টপ লিন অনুসরণ করুন
  7. স্টপ-অফ বা স্টপ-অফ পজিশন

কৌশলগত শক্তি বিশ্লেষণ

এই কৌশলটির সুবিধাগুলো হলঃ

  1. দামের ব্যবধানের চিন্তাভাবনা ব্যবহার করে, কম দামে প্রবেশ করুন এবং জয়ী হবার হার বাড়ান
  2. স্বয়ংক্রিয় ট্র্যাকিং স্টপ লস, বেশিরভাগ মুনাফা লক করা যায়
  3. কনফিগারযোগ্য স্টপ লস শতাংশ, বিভিন্ন বাজারে অভিযোজিত
  4. যেসব জাতের ঘূর্ণায়মান বৈশিষ্ট্য রয়েছে
  5. সহজ এবং কার্যকর

কৌশলগত ঝুঁকি বিশ্লেষণ

এই কৌশলটির কিছু ঝুঁকিও রয়েছেঃ

  1. গ্রিপ ব্রেকিং সফল হতে পারে না, আবারও হতে পারে
  2. ভুলভাবে স্টপ বা স্টপ সেট করা অকাল স্টপ বা স্টপ ক্ষতির কারণ হতে পারে
  3. বাজার পরিবর্তনের সাথে সামঞ্জস্য রেখে নিয়মিত প্যারামিটারগুলি অপ্টিমাইজ করা প্রয়োজন
  4. সীমিত প্রজাতি, কিছু প্রজাতির জন্য অকার্যকর
  5. কিছু মানুষের হস্তক্ষেপ প্রয়োজন

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

এই কৌশলটি নিম্নলিখিত দিকগুলি থেকেও উন্নত করা যেতে পারেঃ

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

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2022-11-21 00:00:00
end: 2023-11-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy(title="Squeeze Backtest by Shaqi v1.0", overlay=true, pyramiding=0, currency="USD", process_orders_on_close=true, commission_type=strategy.commission.percent, commission_value=0.075, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100, backtest_fill_limits_assumption=0)
strategy.risk.allow_entry_in(strategy.direction.long)

R0 = "6 Hours"
R1 = "12 Hours"
R2 = "24 Hours"
R3 = "48 Hours"
R4 = "1 Week"
R5 = "2 Weeks"
R6 = "1 Month"
R7 = "Maximum"


buyPercent = input( title="Buy, %",         type=input.float,   defval=3,       minval=0.01,                        step=0.01,  inline="Percents",  group="Squeeze Settings") * 0.01
sellPercent = input(title="Sell, %",        type=input.float,   defval=1,       minval=0.01,                        step=0.01,  inline="Percents",  group="Squeeze Settings") * 0.01
stopPercent = input(title="Stop Loss, %",   type=input.float,   defval=1,       minval=0.01,        maxval=100,     step=0.01,  inline="Percents",  group="Squeeze Settings") * 0.01
isMaxBars = input(  title="Max Bars To Sell",               type=input.bool,    defval=true ,                                   inline="MaxBars",   group="Squeeze Settings")
maxBars = input(    title="",       type=input.integer, defval=2,     minval=0,           maxval=1000, step=1,                  inline="MaxBars",   group="Squeeze Settings")
bind = input(       title="Bind",           type=input.source,  defval=close,                                                                       group="Squeeze Settings")
isRange = input(    title="Fixed Range",               type=input.bool,    defval=true,                                         inline="Range",     group="Backtesting Period")
rangeStart = input( title="",                       defval=R4,      options=[R0, R1, R2, R3, R4, R5, R6, R7],                   inline="Range",     group="Backtesting Period")
periodStart = input(title="Backtesting Start", type=input.time,    defval=timestamp("01 Aug 2021 00:00 +0000"),                                     group="Backtesting Period")
periodEnd = input(  title="Backtesting End",   type=input.time,    defval=timestamp("01 Aug 2022 00:00 +0000"),                                     group="Backtesting Period")

int startDate = na
int endDate = na
if isRange
    if rangeStart == R0
        startDate := timenow - 21600000
        endDate := timenow
    else if rangeStart == R1
        startDate := timenow - 43200000
        endDate := timenow
    else if rangeStart == R2
        startDate := timenow - 86400000
        endDate := timenow
    else if rangeStart == R3
        startDate := timenow - 172800000
        endDate := timenow
    else if rangeStart == R4
        startDate := timenow - 604800000
        endDate := timenow
    else if rangeStart == R5
        startDate := timenow - 1209600000
        endDate := timenow
    else if rangeStart == R6
        startDate := timenow - 2592000000
        endDate := timenow
    else if rangeStart == R7
        startDate := time
        endDate := timenow
else 
    startDate := periodStart
    endDate := periodEnd

afterStartDate = (time >= startDate)
beforeEndDate = (time <= endDate)
notInTrade = strategy.position_size == 0
inTrade = strategy.position_size > 0

barsFromEntry = barssince(strategy.position_size[0] > strategy.position_size[1])
entry = strategy.position_size[0] > strategy.position_size[1]
entryBar = barsFromEntry == 0
notEntryBar = barsFromEntry != 0
buyLimitPrice = bind - bind * buyPercent
buyLimitFilled = low <= buyLimitPrice
sellLimitPriceEntry = buyLimitPrice * (1 + sellPercent)
sellLimitPrice = strategy.position_avg_price * (1 + sellPercent)

stopLimitPriceEntry = buyLimitPrice - buyLimitPrice * stopPercent
stopLimitPrice = strategy.position_avg_price - strategy.position_avg_price * stopPercent

if afterStartDate and beforeEndDate and notInTrade
    strategy.entry("BUY", true, limit = buyLimitPrice)
    strategy.exit("INSTANT", limit = sellLimitPriceEntry, stop = stopLimitPriceEntry)
strategy.cancel("INSTANT", when = inTrade)
if isMaxBars
    strategy.close("BUY", when = barsFromEntry >= maxBars, comment = "Don't Sell")
strategy.exit("SELL", limit = sellLimitPrice, stop = stopLimitPrice)

showStop = stopPercent <= 0.03

plot(showStop ? stopLimitPrice : na, title="Stop Loss Limit Order", style=plot.style_linebr, color=color.red, linewidth=1)
plot(sellLimitPrice, title="Take Profit Limit Order", style=plot.style_linebr, color=color.purple, linewidth=1)
plot(strategy.position_avg_price, title="Buy Order Filled Price", style=plot.style_linebr, color=color.blue, linewidth=1)
plot(buyLimitPrice, title="Trailing Buy Limit Order", style=plot.style_stepline, color=color.new(color.blue, 30), offset=1)