জোকার মুভিং লাভের কৌশল


সৃষ্টির তারিখ: 2023-09-23 15:04:20 অবশেষে সংশোধন করুন: 2023-09-23 15:04:20
অনুলিপি: 0 ক্লিকের সংখ্যা: 786
1
ফোকাস
1617
অনুসারী

ওভারভিউ

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

কৌশল নীতি

এই কৌশলটি দ্রুত চলমান গড় এবং ধীর চলমান গড় ব্যবহার করে একটি প্রবণতা ফিল্টার তৈরি করে। যখন দ্রুত চলমান গড়ের উপরে ধীর চলমান গড় অতিক্রম করে, তখন আরও কিছু করুন; যখন দ্রুত চলমান গড়ের নীচে ধীর চলমান গড় অতিক্রম করে, তখন খালি করুন।

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

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

সামর্থ্য বিশ্লেষণ

  • মুভিং এভারেজ ব্যবহার করে মূল ট্রেন্ডের দিকনির্দেশনা নির্ধারণ করুন, যাতে মার্কেট নয়েজ আপনার কৌশলকে খুব বেশি ব্যাহত না করে।

  • মুভিং স্টপ সক্রিয় করার পরে, স্টপ অবস্থানটি বাজারের গতির সাথে সামঞ্জস্য করা যেতে পারে, যাতে স্টপ অবস্থানটি সর্বদা দামের সাথে সংযুক্ত থাকে। এটি একটি নির্দিষ্ট স্টপ মূল্য সেট করার চেয়ে আরও নমনীয় এবং কার্যকর।

  • মুভিং স্টপগুলি আরও বেশি মুনাফা লক করতে পারে এবং কৌশলগত পলস হওয়ার ঝুঁকি হ্রাস করতে পারে। এটি কেবলমাত্র স্থির স্টপগুলি সেট করার সাথে সাথে স্টপ অবস্থানগুলি খুব রক্ষণশীল এবং মুনাফা লক করার সমস্যাগুলি এড়াতে পারে।

  • মোবাইল স্টপ-এর সুবিধা হল যে, স্টপ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ।

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

  • মুভিং এভারেজগুলি যখন দামের তীব্র ওঠানামা করে তখন ভুল সংকেত বা সংকেত বিলম্বিত হতে পারে। এটি কৌশলগত বিপরীত পজিশনিং ক্ষতির কারণ হতে পারে। আপনি মুভিং এভারেজ প্যারামিটারগুলি যথাযথভাবে সামঞ্জস্য করতে পারেন বা অপ্টিমাইজেশনের জন্য ফিল্টার যুক্ত করতে পারেন।

  • স্টপ রেসিপি সেট করা খুব বড় হলে, কৌশলগত পজিশনের সময় বাড়তে পারে এবং প্রকৃত স্টপ মূল্যের সাথে তাত্ত্বিক মূল্যের পার্থক্য বাড়তে পারে। স্টপ রেসিপি যথাযথভাবে হ্রাস করা এই ঝুঁকি কমাতে পারে।

  • মোবাইল স্টপ এর ধাপ অনুপাত খুব ছোট সেট করা হয়েছে, যার ফলে মোবাইল ফ্রিকোয়েন্সি খুব বেশি হতে পারে, ট্রেডিং ফি এবং স্লাইড পয়েন্ট ঝুঁকি বাড়ায়। মোবাইল স্টপ ধাপটি যথাযথভাবে সামঞ্জস্য করতে এবং অনুকূলিত করতে পারে।

  • মুভিং স্টপগুলি কেবলমাত্র একতরফা মুভিং বিবেচনা করে এবং প্রত্যাহারকে বিবেচনা করে না। এর অর্থ হল দাম আবার ফিরে যায় এবং মুভিং স্টপগুলি হ্রাস পায় না। এর ফলে স্টপগুলি চূড়ান্তভাবে কার্যকর করা দামটি তাত্ত্বিক দাম থেকে বিচ্যুত হয়। দ্বিপাক্ষিক মুভিং স্টপিং প্রক্রিয়াটি অনুকূলিতকরণের জন্য বিবেচনা করা যেতে পারে।

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

  • বাজারের অস্থিরতার গতিশীলতার উপর ভিত্তি করে চলমান গড়ের প্যারামিটারগুলি সামঞ্জস্য করার কথা বিবেচনা করা যেতে পারে, যখন অস্থিরতা বৃদ্ধি পায় তখন চক্র বাড়ানো হয় এবং যখন অস্থিরতা হ্রাস পায় তখন চক্র হ্রাস করা হয়।

  • বিভিন্ন প্রজাতি এবং বাজারের বৈশিষ্ট্যগুলি অধ্যয়ন করতে পারে, বিভিন্ন ডিফল্ট স্ট্রিং অনুপাত সেট করতে পারে, স্ট্রিং বিচ্যুতির ঝুঁকি হ্রাস করতে পারে।

  • দ্বিপাক্ষিক চলমান স্টপিং প্রক্রিয়াটি অধ্যয়ন করা যেতে পারে, যখন দাম নতুন উচ্চতায় পৌঁছে যায় তখন স্টপ আপ করে এবং যখন প্রত্যাহার ঘটে তখন স্টপ ডাউন করে, যাতে স্টপটি দামের কাছাকাছি থাকে।

  • প্রবণতা শক্তির সূচকগুলির সাথে একত্রিত হয়ে, প্রবণতা শক্তি দুর্বল হলে স্টপ রেট হ্রাস করা এবং প্রবণতা শক্তি শক্তিশালী হলে স্টপ রেট বৃদ্ধি করা বিবেচনা করা যেতে পারে।

  • মেশিন লার্নিং মডেলের সাথে একত্রে, মডেলের দ্বারা পূর্বাভাসিত মূল্যের ব্যাপ্তি ব্যবহার করে স্টপস্টপ অনুপাতটি গতিশীলভাবে সেট করার বিষয়টি বিবেচনা করা যেতে পারে।

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2023-08-23 00:00:00
end: 2023-09-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title='Joker Trailing TP Bot', shorttitle='Joker TTP Bot', overlay=true, pyramiding=0, process_orders_on_close=false, close_entries_rule='ANY', calc_on_every_tick=false, calc_on_order_fills=false, commission_type=strategy.commission.percent, commission_value=0.07, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=1000, currency=currency.USD) //, max_labels_count=500)

fromDate = input(timestamp('01 Jan 2021 00:00 UTC'), 'From Date')
toDate = input(timestamp('31 Dec 2121 23:59 UTC'), 'To Date')
fastMALen = input.int(23, 'Fast SMA Length')
slowMALen = input.int(50, 'Slow SMA Length')
longTakeProfitPerc = input.float(0.5, 'Long Take Profit %', minval=0.05, step=0.05) * 0.01
shortTakeProfitPerc = input.float(0.5, 'Short Take Profit %', minval=0.05, step=0.05) * 0.01
enableTrailing = input.bool(true, 'Enable Trailing')
trailingTakeProfitPerc = input.float(0.01, 'Trailing Take Profit %', minval=0.01, maxval=100, step=0.01) * 0.01

float fastMA = ta.sma(close, fastMALen)
float slowMA = ta.sma(close, slowMALen)
bool isWithinPeriod = true
bool openLongPosition = isWithinPeriod and ta.crossover(fastMA, slowMA)
bool openShortPosition = isWithinPeriod and ta.crossunder(fastMA, slowMA)
bool longIsActive = openLongPosition or strategy.position_size > 0
bool shortIsActive = openShortPosition or strategy.position_size < 0

float longTakeProfitPrice = na
longTakeProfitPrice := if longIsActive
    if openLongPosition and not (strategy.position_size > 0)
        close * (1 + longTakeProfitPerc)
    else
        nz(longTakeProfitPrice[1], close * (1 + longTakeProfitPerc))
else
    na

float shortTakeProfitPrice = na
shortTakeProfitPrice := if shortIsActive
    if openShortPosition and not (strategy.position_size < 0)
        close * (1 - shortTakeProfitPerc)
    else
        nz(shortTakeProfitPrice[1], close * (1 - shortTakeProfitPrice))
else
    na

float longTrailingTakeProfitStepTicks = longTakeProfitPrice * trailingTakeProfitPerc / syminfo.mintick
float shortTrailingTakeProfitStepTicks = shortTakeProfitPrice * trailingTakeProfitPerc / syminfo.mintick

strategy.entry(id = 'Long Entry', direction = strategy.long, when = openLongPosition, alert_message = 'Long(' + syminfo.ticker + '): Started')
strategy.entry(id = 'Short Entry', direction = strategy.short, when = openShortPosition, alert_message = 'Short(' + syminfo.ticker + '): Started')
strategy.exit(id = 'Long Take Profit', from_entry = 'Long Entry', limit = enableTrailing ? na : longTakeProfitPrice, trail_price = enableTrailing ? longTakeProfitPrice : na, trail_offset = enableTrailing ? longTrailingTakeProfitStepTicks : na, when = longIsActive, alert_message = 'Long(' + syminfo.ticker + '): Take Profit activated')
strategy.exit(id = 'Short Take Profit', from_entry = 'Short Entry', limit = enableTrailing ? na : shortTakeProfitPrice, trail_price = enableTrailing ? shortTakeProfitPrice : na, trail_offset = enableTrailing ? shortTrailingTakeProfitStepTicks : na, when = shortIsActive, alert_message = 'Short(' + syminfo.ticker + '): Take Profit activated')

plot(series = fastMA, title='Fast SMA', color = color.blue, linewidth = 1, style = plot.style_line)
plot(series = slowMA, title='Slow SMA', color = color.orange, linewidth = 1, style = plot.style_line)
plot(series = longTakeProfitPrice, title='Long Take Profit', color = color.green, linewidth = 1, style = plot.style_cross, offset = 1)
plot(series = shortTakeProfitPrice, title='Short Take Profit', color = color.red, linewidth = 1, style = plot.style_cross, offset = 1)
plot(series = strategy.position_avg_price, title='Position', color = color.white, linewidth = 1, style = plot.style_linebr)