STC MA ATR ইন্টিগ্রেটেড ট্রেন্ড ট্রেডিং কৌশল

লেখক:চাওঝাং, তারিখ: ২০২৩-১০-১৭ ১৪ঃ৩৪ঃ১০
ট্যাগঃ

img

সারসংক্ষেপ

এই কৌশলটি প্রবণতা মূল্যায়ন এবং তুলনামূলকভাবে স্থিতিশীল প্রবণতা ট্র্যাকিং ট্রেডিং বাস্তবায়নের জন্য STC, Moving Average MA এবং Average True Range ATR প্রযুক্তিগত সূচকগুলিকে একত্রিত করে।

কৌশল নীতি

  1. এসটিসি সূচক প্রবণতা বিপরীত মূল্যায়ন করে। এটি ধীর রেখা বিয়োগ দ্রুত লাইন ব্যবহার করে, তারপর দ্বিতীয় মসৃণীকরণ প্রক্রিয়া, ধারাবাহিক প্রবণতা সংকেত গঠন। ক্রয় সংকেত আসে যখন সূচক 0 অক্ষের উপরে অতিক্রম করে, এবং 0 অক্ষের নীচে বিক্রয় সংকেত।

  2. মুভিং এভারেজ এমএ প্রবণতা দিক বিচার করে। যখন স্টক মূল্য এমএ এর উপরে অতিক্রম করে, এটি একটি আপট্রেন্ডের সংকেত দেয়, একটি দীর্ঘ অবস্থান হোল্ডিং সংকেত দেয়। যখন মূল্য এমএ এর নীচে অতিক্রম করে, এটি একটি ডাউনট্রেন্ডের সংকেত দেয়, একটি শর্ট অবস্থান হোল্ডিং সংকেত দেয়।

  3. এটিআর সূচকটি স্টপ লস এবং লাভ গ্রহণ করে। এটিআর বাজারের অস্থিরতার উপর ভিত্তি করে স্টপ লস এবং লাভ পয়েন্টগুলি গতিশীলভাবে সামঞ্জস্য করতে পারে। এবং এটিআর নিজেই ট্রেডিং দিকের জন্য একটি সংকেত হিসাবে কাজ করে, আপট্রেন্ডে বৃদ্ধি এবং ডাউনট্রেন্ডে হ্রাস করে। এটিআর সূচকটি হ'ল একটি স্টপ লস এবং লাভের সূচক।

  4. কৌশলটি প্রবেশের প্রধান সময় হিসাবে এসটিসি সংকেত গ্রহণ করে, সহায়ক প্রবণতা বিচার হিসাবে এমএ এবং স্টপ লস এবং লাভ নেওয়ার জন্য এটিআর ব্যবহার করে। যখন এসটিসি একটি ক্রয় সংকেত দেয়, যদি এমএও আপট্রেন্ড দেখায় এবং এটিআর বৃদ্ধি পায়, এটি একটি দীর্ঘ অবস্থান খোলে; যখন এসটিসি একটি বিক্রয় সংকেত দেয়, যদি এমএ ডাউনট্রেন্ড দেখায় এবং এটিআর পড়ে, এটি একটি শর্ট অবস্থান খোলে।

সুবিধা বিশ্লেষণ

  1. কৌশলটি ট্রেডিং সংকেতগুলির নির্ভুলতা উন্নত করে প্রবণতা এবং বিপরীত পয়েন্টগুলি বিচার করার জন্য একাধিক সূচককে একত্রিত করে।

  2. এসটিসি বিপরীতমুখী সংকেতগুলি ক্যাপচার করতে পারে এবং প্রবণতার ফাঁদে পড়া এড়াতে পারে। প্রধান প্রবণতা অনুসরণ নিশ্চিত করার জন্য এমএ অনিশ্চিত বিপরীতমুখী সংকেতগুলি ফিল্টার করে।

  3. এটিআর বাজারের অস্থিরতার উপর ভিত্তি করে গতিশীল স্টপ লস এবং লাভ গ্রহণ করে, বিশাল ক্ষতি এড়াতে। এবং এটিআর প্রবণতা বিচার করার জন্য একটি সহায়ক সংকেত হিসাবে কাজ করে।

  4. একাধিক সূচকের সংমিশ্রণ একটি শক্তিশালী প্রবণতা ট্র্যাকিং ক্ষমতা গঠন করে। ঐতিহাসিক ব্যাকটেস্টগুলি তুলনামূলকভাবে স্থিতিশীল মুনাফা দেখায়।

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

  1. এসটিসিতে সময় বিলম্ব রয়েছে, যা মূল্য বিপরীতের জন্য সর্বোত্তম সময়টি মিস করতে পারে।

  2. দামের তীব্র ওঠানামা চলাকালীন এএম পিছিয়ে থাকে, যা ভুল সংকেত তৈরি করতে পারে।

  3. এটিআর স্টপ লস কয়েক সেকেন্ডের মধ্যে আঘাত করা যেতে পারে। বড় প্রবণতার সময় এটিআর মাল্টিপ্লায়ারটি শিথিল করা উচিত, বা সাময়িকভাবে নিষ্ক্রিয় করা উচিত।

  4. আরো সূচক মানে স্টপ লস আঘাত করার সম্ভাবনা বেশি। অপ্রয়োজনীয় স্টপ লস এড়ানোর জন্য পরামিতিগুলি সামঞ্জস্য করা উচিত।

অপ্টিমাইজেশান নির্দেশাবলী

  1. এসটিসি পরামিতি সামঞ্জস্য করুন দ্রুত প্রতিক্রিয়াশীল সংমিশ্রণের জন্য বিপরীতের জন্য।

  2. ট্রেন্ড ট্র্যাকিংয়ের জন্য এমএ পিরিয়ড প্যারামিটারকে অপ্টিমাইজ করুন।

  3. বিভিন্ন ATR মাল্টিপল এর পরীক্ষার প্রভাব।

  4. এসটিসিকে অন্য সূচক দিয়ে প্রতিস্থাপন করে দেখুন।

  5. মাল্টি-প্যারামিটার অটো অপ্টিমাইজেশনের জন্য মেশিন লার্নিং অ্যালগরিদম চালু করা।

  6. বড় চক্রের প্রবণতা বিবেচনা করুন এবং বিভিন্ন পর্যায়ে পার্থক্য করুন।

সংক্ষিপ্তসার

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


/*backtest
start: 2023-09-16 00:00:00
end: 2023-10-16 00:00:00
period: 4h
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/
// © Romedius

//@version=5
strategy("My Strategy", overlay=true, margin_long=100, margin_short=100)

// STC
EEEEEE=input(12,"Length",group="STC")
BBBB=input(26,"FastLength",group="STC")
BBBBB=input(50,"SlowLength",group="STC")

AAAA(BBB, BBBB, BBBBB) =>
    fastMA = ta.ema(BBB, BBBB)
    slowMA = ta.ema(BBB, BBBBB)
    AAAA = fastMA - slowMA
    AAAA
    
AAAAA(EEEEEE, BBBB, BBBBB) => 
    //AAA=input(0.5)
    var AAA = 0.5
    var CCCCC = 0.0
    var DDD = 0.0
    var DDDDDD = 0.0
    var EEEEE = 0.0
    BBBBBB = AAAA(close,BBBB,BBBBB)     
    CCC = ta.lowest(BBBBBB, EEEEEE)
    CCCC = ta.highest(BBBBBB, EEEEEE) - CCC    
    CCCCC := (CCCC > 0 ? ((BBBBBB - CCC) / CCCC) * 100 : nz(CCCCC[1])) 
    DDD := (na(DDD[1]) ? CCCCC : DDD[1] + (AAA * (CCCCC - DDD[1]))) 
    DDDD = ta.lowest(DDD, EEEEEE) 
    DDDDD = ta.highest(DDD, EEEEEE) - DDDD     
    DDDDDD := (DDDDD > 0 ? ((DDD - DDDD) / DDDDD) * 100 : nz(DDDDDD[1])) 
    EEEEE := (na(EEEEE[1]) ? DDDDDD : EEEEE[1] + (AAA * (DDDDDD - EEEEE[1])))
    EEEEE

mAAAAA = AAAAA(EEEEEE,BBBB,BBBBB)
stc = mAAAAA > mAAAAA[1] ? true : false
stc_sig = stc == true and stc[1] == false ? 1 : stc == false and stc[1] == true ? -1 : 0
stc_long = stc_sig == 1
stc_short = stc_sig == -1
// STC end

// ATR stops
nATRPeriod = input(5,group="ATR Stops")
nATRMultip = input(3.5,group="ATR Stops")

xATR = ta.atr(nATRPeriod)
nLoss = nATRMultip * xATR

xATRTrailingStop = 0.0
xATRTrailingStop := close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), close - nLoss) : close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), close + nLoss) : close > nz(xATRTrailingStop[1], 0) ? close - nLoss : close + nLoss

pos = 0
pos := close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0) ? 1 : close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0)

atr_sig = pos == -1 ? false : true
// ATR stops end

// ma
ma_len = input(200, title="MA Length", group="Moving Average")
ma = ta.sma(close, 200)
ma_sig = close < ma ? false : true
// ma end

// strategy entries
tp_mult = input(2, title="Take Profit ATR Multiplier", group="Strategy")
sl_mult = input(1, title="Stop Loss ATR Multiplier", group="Strategy")
early_stop = input(true, title="Close position when ATR changes color")

atr_stop = if close < xATRTrailingStop
    close - (close - xATRTrailingStop) * sl_mult
else
    close + (xATRTrailingStop - close) * sl_mult

longCondition = atr_sig == true and stc_sig == 1 and ma_sig == true
shortCondition = atr_sig == false and stc_sig == -1 and ma_sig == false

if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", "Long", limit=close + xATR * tp_mult, stop=atr_stop)
else if atr_sig == false and early_stop
    strategy.close("Long")

if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.exit("Exit Short", "Short", limit=close - xATR * tp_mult, stop=atr_stop)
else if atr_sig == true and early_stop
    strategy.close("Short")
    
// plot stuff
atr_color = pos == -1 ? color.red: pos == 1 ? color.green : color.blue
plot(atr_stop, title="ATR Stop", color=atr_color)

ma_color = ma_sig ? color.green : color.red
plot(ma, title="Moving Average", color=ma_color)

stc_color = stc_long ? color.green : color.red
plotshape(stc_long, style=shape.triangleup, color=stc_color, title="STC Long Signal", size=size.tiny)
plotshape(stc_short, style=shape.triangledown, color=stc_color, title="STC Short Signal", size=size.tiny)
// plot stuff end

আরো