তিনটি চলমান গড় গোল্ডেন ক্রস ট্রেডিং কৌশল


সৃষ্টির তারিখ: 2024-01-16 18:18:02 অবশেষে সংশোধন করুন: 2024-01-16 18:18:02
অনুলিপি: 0 ক্লিকের সংখ্যা: 724
1
ফোকাস
1617
অনুসারী

তিনটি চলমান গড় গোল্ডেন ক্রস ট্রেডিং কৌশল

ওভারভিউ

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

কৌশল নীতি

ট্রিপলিন গোল্ডেন ক্রস কৌশলটি মূলত ট্রেন্ডের দিকনির্দেশের জন্য তিনটি চলমান গড়ের উপর নির্ভর করে। স্বল্পমেয়াদী চলমান গড়গুলি দামের পরিবর্তনের প্রতি সংবেদনশীলভাবে প্রতিক্রিয়া জানায়; মধ্যমেয়াদী চলমান গড়গুলি আরও স্পষ্ট প্রবণতা বিচার করে; দীর্ঘমেয়াদী চলমান গড়গুলি বাজার শব্দ ফিল্টার করে এবং দীর্ঘমেয়াদী প্রবণতার দিকনির্দেশ দেয়।

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

বিপরীতভাবে, যখন একটি স্বল্পমেয়াদী চলমান গড় মধ্যবর্তী চলমান গড়ের নীচে অতিক্রম করে, তখন দামটি নীচে নামতে শুরু করে; এই মুহুর্তে যদি মধ্যবর্তী চলমান গড়টি দীর্ঘমেয়াদী চলমান গড়ের চেয়ে কম থাকে তবে এটি বর্তমানে একটি পতনের দিকে নির্দেশ করে, তাই এই সময়ে একটি বিক্রয় সংকেত তৈরি হয়।

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

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

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

কৌশলগত ঝুঁকি ও সমাধান

  • ত্রিভুজগুলি যখন একত্রিত হয় তখন ত্রুটিপূর্ণ সংকেত হতে পারে

সমাধানঃ ভুল সংকেত এড়াতে চলমান গড়ের প্যারামিটারগুলি যথাযথভাবে সামঞ্জস্য করুন

  • অতিরিক্ত স্টপ লস স্টপ অনুপাত সেট করুন

সমাধানঃ সঠিকভাবে স্টপ-ড্যাম-স্টপ অনুপাত সামঞ্জস্য করুন, খুব বড় বা খুব ছোট নয়

  • ভুলভাবে সেট করা প্যারামিটার, যার ফলে ট্রেডিং ফ্রিকোয়েন্সি বেশি বা কম হয়

সমাধানঃ বিভিন্ন প্যারামিটার পরীক্ষা করুন এবং সর্বোত্তম প্যারামিটার সমন্বয় খুঁজুন

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

ত্রিভুজীয় গোল্ড ক্রস কৌশলটি নিম্নলিখিত দিকগুলি থেকে অপ্টিমাইজ করা যেতে পারেঃ

  • বিভিন্ন ধরণের এবং দৈর্ঘ্যের পরামিতি পরীক্ষা করে সর্বোত্তম প্যারামিটার খুঁজুন

সর্বোত্তম ট্রেডিংয়ের জন্য বিভিন্ন দৈর্ঘ্য বা বিভিন্ন ধরণের চলমান গড়ের সমন্বয় পরীক্ষা করা যেতে পারে

  • অন্যান্য প্রযুক্তিগত সূচক যুক্ত করুন

KDJ, MACD ইত্যাদি অন্যান্য সূচকগুলিকে কৌশলগুলিতে অন্তর্ভুক্ত করা যেতে পারে, মাল্টি ফ্যাক্টর যাচাইকরণ, ত্রুটিযুক্ত সংকেতগুলি ফিল্টার করা

  • বিভিন্ন জাতের বৈশিষ্ট্য অনুসারে প্যারামিটার নির্বাচন করুন

উচ্চ তরঙ্গতা জাতের জন্য চলমান গড় চক্র সংক্ষিপ্ত করা যেতে পারে; নিম্ন তরঙ্গতা জাতের জন্য চলমান গড় চক্র বৃদ্ধি

  • মেশিন লার্নিং পদ্ধতি ব্যবহার করে সর্বোত্তম প্যারামিটার সমন্বয় খুঁজুন

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

সারসংক্ষেপ

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

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

//@version=3
strategy("Kozlod - 3 MA strategy with SL/PT", shorttitle="kozlod_3ma", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 5)

// 
// author: Kozlod
// date: 2018-03-25
// 

////////////
// INPUTS //
////////////

ma_type        = input(title = "MA Type",            defval = "SMA", options = ['SMA', 'EMA', 'WMA', 'VWMA', 'HMA', 'SMMA', 'DEMA'])
short_ma_len   = input(title = "Short MA Length",    defval = 5,     minval = 1)
short_ma_src   = input(title = "Short MA Source",    defval = close)
medium_ma_len  = input(title = "Medium MA Length",   defval = 20,    minval = 2)
medium_ma_src  = input(title = "Medium MA Source",   defval = close)
long_ma_len    = input(title = "Long MA Length",     defval = 100,   minval = 3)
long_ma_src    = input(title = "Long MA Source",     defval = close)

sl_lev_perc    = input(title = "SL Level % (0 - Off)", type = float,   defval = 0,  minval = 0, step = 0.01)
pt_lev_perc    = input(title = "PT Level % (0 - Off)", type = float,   defval = 0,  minval = 0, step = 0.01)

// Set initial values to 0
short_ma  = 0.0
long_ma   = 0.0
medium_ma = 0.0

// Simple Moving Average (SMA)
if ma_type == 'SMA' 
    short_ma  := sma(short_ma_src,  short_ma_len)
    medium_ma := sma(medium_ma_src, medium_ma_len)
    long_ma   := sma(long_ma_src,   long_ma_len)

// Exponential Moving Average (EMA)
if ma_type == 'EMA'
    short_ma  := ema(short_ma_src,  short_ma_len)
    medium_ma := ema(medium_ma_src, medium_ma_len)
    long_ma   := ema(long_ma_src,   long_ma_len)

// Weighted Moving Average (WMA)
if ma_type == 'WMA'
    short_ma  := wma(short_ma_src,  short_ma_len)
    medium_ma := wma(medium_ma_src, medium_ma_len)
    long_ma   := wma(long_ma_src,   long_ma_len)

// Hull Moving Average (HMA)
if ma_type == 'HMA'
    short_ma  := wma(2*wma(short_ma_src,  short_ma_len  / 2) - wma(short_ma_src,  short_ma_len),  round(sqrt(short_ma_len)))
    medium_ma := wma(2*wma(medium_ma_src, medium_ma_len / 2) - wma(medium_ma_src, medium_ma_len), round(sqrt(medium_ma_len)))
    long_ma   := wma(2*wma(long_ma_src,   long_ma_len   / 2) - wma(long_ma_src,   long_ma_len),   round(sqrt(long_ma_len)))

// Volume-weighted Moving Average (VWMA)
if ma_type == 'VWMA'
    short_ma  := vwma(short_ma_src,  short_ma_len)
    medium_ma := vwma(medium_ma_src, medium_ma_len)
    long_ma   := vwma(long_ma_src,   long_ma_len)

// Smoothed Moving Average (SMMA)    
if ma_type == 'SMMA'
    short_ma  := na(short_ma[1])  ? sma(short_ma_src, short_ma_len)   : (short_ma[1]  * (short_ma_len  - 1) + short_ma_src)  / short_ma_len
    medium_ma := na(medium_ma[1]) ? sma(medium_ma_src, medium_ma_len) : (medium_ma[1] * (medium_ma_len - 1) + medium_ma_src) / medium_ma_len
    long_ma   := na(long_ma[1])   ? sma(long_ma_src,  long_ma_len)    : (long_ma[1]   * (long_ma_len   - 1) + long_ma_src)   / long_ma_len

// Double Exponential Moving Average (DEMA)
if ma_type == 'DEMA'
    e1_short  = ema(short_ma_src , short_ma_len)
    e1_medium = ema(medium_ma_src, medium_ma_len)
    e1_long   = ema(long_ma_src,   long_ma_len)
    
    short_ma  := 2 * e1_short  - ema(e1_short,  short_ma_len)
    medium_ma := 2 * e1_medium - ema(e1_medium, medium_ma_len)
    long_ma   := 2 * e1_long   - ema(e1_long,   long_ma_len)

/////////////
// SIGNALS //
/////////////

long_signal  = crossover( short_ma, medium_ma) and medium_ma > long_ma
short_signal = crossunder(short_ma, medium_ma) and medium_ma < long_ma

// Calculate PT/SL levels 
// Initial values 
last_signal    = 0
prev_tr_price  = 0.0
pt_level       = 0.0
sl_level       = 0.0

// Calculate previous trade price
prev_tr_price := (long_signal[1] and nz(last_signal[2]) != 1) or (short_signal[1] and nz(last_signal[2]) != -1) ? open : nz(last_signal[1]) != 0 ? prev_tr_price[1] : na

// Calculate SL/PT levels 
pt_level := nz(last_signal[1]) == 1 ? prev_tr_price * (1 + pt_lev_perc / 100) : nz(last_signal[1]) == -1 ? prev_tr_price * (1 - pt_lev_perc / 100)  : na
sl_level := nz(last_signal[1]) == 1 ? prev_tr_price * (1 - sl_lev_perc / 100) : nz(last_signal[1]) == -1 ? prev_tr_price * (1 + sl_lev_perc / 100)  : na

// Calculate if price hit sl/pt 
long_hit_pt = pt_lev_perc > 0 and nz(last_signal[1]) ==  1 and close >= pt_level
long_hit_sl = sl_lev_perc > 0 and nz(last_signal[1]) ==  1 and close <= sl_level

short_hit_pt = pt_lev_perc > 0 and nz(last_signal[1]) ==  -1 and close <= pt_level
short_hit_sl = sl_lev_perc > 0 and nz(last_signal[1]) ==  -1 and close >= sl_level

// What is last active trade? 
last_signal := long_signal ? 1 : short_signal ? -1 : long_hit_pt or long_hit_sl or short_hit_pt or short_hit_sl ? 0 : nz(last_signal[1])

//////////////
// PLOTTING //
//////////////

// Plot MAs
plot(short_ma,  color = red,    linewidth = 2)
plot(medium_ma, color = green,  linewidth = 2)
plot(long_ma,   color = yellow, linewidth = 2)


// Plot Levels 
plotshape(prev_tr_price, style = shape.cross, color = gray, location  = location.absolute, size = size.small)


plotshape(sl_lev_perc > 0 ? sl_level : na, style = shape.cross, color = red,   location  = location.absolute, size = size.small)
plotshape(pt_lev_perc > 0 ? pt_level : na, style = shape.cross, color = green, location  = location.absolute, size = size.small)

//////////////
// STRATEGY //
//////////////

strategy.entry("long",  true,  when = long_signal)
strategy.entry("short", false, when = short_signal)

strategy.close("long",  when = long_hit_pt  or long_hit_sl)
strategy.close("short", when = short_hit_pt or short_hit_sl)