ক্রস-সাইকেল নির্দেশমূলক কৌশল


সৃষ্টির তারিখ: 2023-09-27 16:30:51 অবশেষে সংশোধন করুন: 2023-09-27 16:30:51
অনুলিপি: 0 ক্লিকের সংখ্যা: 684
1
ফোকাস
1617
অনুসারী

ওভারভিউ

এই কৌশলটি প্রবণতার দিকনির্দেশনা সনাক্ত করতে ক্রস-সাইক্লিক প্রযুক্তিগত সূচক ব্যবহার করে, প্রবণতা ফিল্টারিং এবং ওঠানামা ফিল্টারিংয়ের সাথে মিলিত করে, কম ঝুঁকিপূর্ণ প্রবণতা ট্র্যাকিংয়ের ব্যবসায়ের জন্য।

কৌশল নীতি

  1. উচ্চ নিম্ন ব্রেকিং ব্যবহার করে ক্রয়-বিক্রয় সংকেত নির্ধারণ করুন। দাম 7 চক্রের উচ্চ ব্রেকিংয়ের সময় কম দেখায় এবং 7 চক্রের নিম্ন ব্রেকিংয়ের সময় বেশি দেখায়।

  2. ট্রেন্ডফ্লেক্স সূচক মূল প্রবণতার দিক নির্ধারণ করে। এই সূচকটি দ্বৈত মসৃণকরণ প্রযুক্তির সাথে মিলিত হয়, যা প্রবণতার মধ্যবর্তী অংশকে কার্যকরভাবে সনাক্ত করতে পারে। 1 এর উপরে মানটি একটি উত্থান প্রবণতা নির্দেশ করে এবং -1 এর নীচে মানটি হ্রাস প্রবণতা নির্দেশ করে। এখানে আমরা ট্রেন্ডফ্লেক্সের জন্য 1 ঘন্টা দীর্ঘ হতে চাই এবং < -1 ঘন্টা সংক্ষিপ্ত হতে চাই, যাতে এটি সামগ্রিক অবস্থা ফিল্টার করে।

  3. Bollinger Bands-এর ওঠানামার ফলে অস্থিরতা চিহ্নিত করা যায়। close মূল্য যখন band-এর মধ্যে থাকে, তখন অতিরিক্ত shorting করা এড়ানো যায়।

  4. পজিশন পরিচালনার জন্য মোবাইল স্টপ লস এবং মোবাইল স্টপস্টপ ব্যবহার করা হয়।

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

  1. ক্রস-সাইক্লিক সূচকগুলি ডাবল-স্লিপিং প্রযুক্তির সাথে মিলিত হয় যা ট্রেন্ডের দিকনির্দেশকে কার্যকরভাবে সনাক্ত করতে এবং বাজারের ঝাঁকুনির দ্বারা বিরক্ত হওয়া এড়াতে পারে।

  2. ট্রেডিং সিগন্যালকে আরো নির্ভরযোগ্য করে তোলার জন্য ট্রেডিং সিগন্যালের দিকনির্দেশনা এবং ওঠানামা সংক্রান্ত নিয়মগুলো বিবেচনা করা হয়।

  3. স্টপ লস স্টপ যুক্তিসঙ্গতভাবে সেট করা হয়েছে, যা মুনাফা লক করতে এবং ক্ষতির বিস্তার রোধ করতে পারে।

  4. এই কৌশলটি সহজ এবং সহজেই বাস্তবায়ন করা যায়।

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

  1. ব্রেকিং সিগন্যালের ক্ষেত্রে মিথ্যা ব্রেকিং ঘটতে পারে, যার ফলে ভুল লেনদেন হতে পারে। আরো কিছু শর্ত যুক্ত করার কথা বিবেচনা করা যেতে পারে।

  2. স্থির চক্রের পরামিতিগুলি বাজারের পরিবর্তনের সাথে খাপ খাইয়ে নিতে পারে না, গতিশীল অপ্টিমাইজেশান পরামিতিগুলি বিবেচনা করা যেতে পারে।

  3. এর অর্থ হল, এই ধরনের চরম পরিস্থিতির ফলে যে বিপুল পরিমাণ লোকসান হতে পারে, তা প্রতিরোধ করা সম্ভব নয়।

  4. স্টপ স্টপ লস পয়েন্ট স্থির, মার্কেটের ওঠানামা অনুযায়ী বুদ্ধিমানভাবে সামঞ্জস্য করা যায় না।

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

  1. আরও কিছু প্রবণতা নির্ণয়ের সূচক যুক্ত করা, কৌশলগত সমন্বয় তৈরি করা এবং সঠিকতা বৃদ্ধি করা বিবেচনা করা যেতে পারে।

  2. ভূমিকম্প সনাক্তকরণ মডিউল যুক্ত করা হয়েছে, ভূমিকম্পের তীব্রতার সময় লেনদেন স্থগিত করা হয়েছে এবং ঝুঁকি হ্রাস করা হয়েছে।

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

  4. দামের স্টপ লস মডিউল যোগ করুন, যখন ক্ষতি একটি নির্দিষ্ট অবমূল্যায়ন পৌঁছায় তখন ক্ষতি বন্ধ করে দেওয়া যেতে পারে।

  5. বাজারের ওঠানামার উপর ভিত্তি করে স্টপ লস অনুপাত গণনা করে, স্টপ লস স্মার্ট অ্যাডজাস্টমেন্টের জন্য।

সারসংক্ষেপ

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

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

//@version=4
strategy("Eltrut", shorttitle="Eltrut Strat", overlay=true, pyramiding=0, default_qty_type= strategy.percent_of_equity,calc_on_order_fills=false, slippage=25,commission_type=strategy.commission.percent,commission_value=0.075)

testStartYear = input(2016, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)


// R E F L E X / T R E N D F L E X

f_supersmoother(_src,_len)=>
    pi = 2 * asin(1)
    _a = exp(-sqrt(2) * pi / _len)
    _c2 = 2 * _a * cos(sqrt(2) * pi / _len)
    _c3 = -_a * _a
    _c1 = 1 - _c2 - _c3
    _out = 0.0
    _out := _c1 * _src + _c2 * nz(_out[1],nz(_src[1],_src)) + _c3 * nz(_out[2],nz(_src[2],nz(_src[1],_src)))

f_IQIFM(_src1,_max)=>
    _src = _src1 < 0.001 ? _src1 * 10000 : _src1
    _imult = 0.635, _qmult = 0.338 , _inphase = 0.0, _quad = 0.0
    _re = 0.0, _im = 0.0, _deltaphase = 0.0, _instper = 0.0, _per = 0.0, _v4 = 0.0
    _v1 = _src - nz(_src[7])
    _inphase := 1.25 * (nz(_v1[4]) - _imult * _v1[2]) + _imult * nz(_inphase[3])
    _quad := _v1[2] - _qmult * _v1 + _qmult * nz(_quad[2])
    _re := 0.2 * (_inphase * _inphase[1] + _quad * _quad[1]) + 0.8 * nz(_re[1])
    _im := 0.2 * (_inphase * _quad[1] - _inphase[1] * _quad) + 0.8 * nz(_im[1])
    if _re != 0.0
        _deltaphase := atan(_im / _re)
    for i = 0 to _max
        _v4 := _v4 + _deltaphase[i]
        if _v4 > 4 * asin(1) and _instper == 0.0
            _instper := i
    if _instper == 0.0
        _instper := nz(_instper[1])
    _per := 0.25 * _instper + 0.75 * nz(_per[1])
    _per

f_flex(_src1, _fixed_len, _reflex) =>
    _src = _src1
    _len = _fixed_len 
    _ss1 = f_supersmoother(_src, _len)
    _ss = _ss1
    _slope = (_ss[_len] - _ss) / _len
    _sum = 0.0
    for _i = 1 to _len
        _c1 = _reflex ? _ss + _i * _slope - _ss[_i] : _ss - _ss[_i]
        _sum := _sum + _c1
    _sum := _sum / _len
    _ms = 0.0
    _ms := 0.04 * pow(_sum,2) + 0.96 * nz(_ms[1])
    _flex1 = _ms != 0 ? _sum / sqrt(nz(_ms)) : 0.0
    _flex = _flex1
    _flex

rflx = f_flex(close, 20, true)  
trndflx = f_flex(close, 20, false)   

// S I G N A L
hi7 = highest(7)
lo7 = lowest(7)
long_cond = crossunder(close, lo7[1])
short_cond = crossover(close, hi7[1])

// F I L T E R S

long_filter1 = trndflx < 1
short_filter1 = trndflx > -1

basis = sma(close, 35)
dev = 3 * stdev(close, 35)
long_filter2 = close > basis - dev
short_filter2 = close < basis + dev

// S T R A T E G Y

long = long_cond and long_filter1 and long_filter2
short = short_cond and short_filter1 and short_filter2

if( true)
    strategy.entry("Long", strategy.long, when = long)
    strategy.entry("Long", strategy.long, when = short)


// User Options to Change Inputs (%)
stopPer = input(3, title='Stop Loss %', type=input.float) / 100
takePer = input(9, title='Take Profit %', type=input.float) / 100

// Determine where you've entered and in what direction
longStop = strategy.position_avg_price * (1 - stopPer)
shortStop = strategy.position_avg_price * (1 + stopPer)
shortTake = strategy.position_avg_price * (1 - takePer)
longTake = strategy.position_avg_price * (1 + takePer)

if strategy.position_size > 0 
    strategy.exit(id="Exit Long", stop=longStop, limit=longTake)
if strategy.position_size < 0 
    strategy.exit(id="Exit Short", stop=shortStop, limit=shortTake)


// P L O T 

plotshape(long, color = #1e90ff, text = "", style=shape.triangleup, location=location.belowbar, size=size.tiny)
plotshape(short, color = #ff69b4, text = "", style=shape.triangledown, location=location.abovebar, size=size.tiny)

alertcondition(long, "Long", "Enter Long")
alertcondition(short, "Short", "Enter S")