TSI ক্রসওভার কৌশল

TSI EMA ATR TEMA
সৃষ্টির তারিখ: 2024-06-07 16:36:24 অবশেষে সংশোধন করুন: 2024-06-07 16:36:24
অনুলিপি: 7 ক্লিকের সংখ্যা: 628
1
ফোকাস
1617
অনুসারী

TSI ক্রসওভার কৌশল

ওভারভিউ

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

কৌশল নীতি

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

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

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

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

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

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

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

সারসংক্ষেপ

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

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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © nikgavalas

//@version=5
strategy("TSI Entries", overlay=true, margin_long=100, margin_short=100)

//
// INPUTS
//

// Define the start and end hours for trading
string sessionInput = input("1000-1530", "Session")

// Day of the week.
string daysInput = input.string("23456", tooltip = "1 = Sunday, 7 = Saturday")

// Minimum number of bar's between entries
requiredBarsBetweenEntries = input.int(12, "Required Bars Between Entries")

// Show debug labels
bool showDebugLabels = input.bool(false, "Show Debug Labels")

//
// FUNCTIONS
//

//@function Define the triple exponential moving average function
tema(src, len) => tema = 3 * ta.ema(src, len) - 3 * ta.ema(ta.ema(src, len), len) + ta.ema(ta.ema(ta.ema(src, len), len), len)

//@function Atr with EMA
atr_ema(length) =>
    trueRange = na(high[1])? high-low : math.max(math.max(high - low, math.abs(high - close[1])), math.abs(low - close[1]))
    //true range can be also calculated with ta.tr(true)
    ta.ema(trueRange, length)

//@function Check if time is in range
timeinrange() => 
    sessionString = sessionInput + ":" + daysInput
    inSession = not na(time(timeframe.period, sessionString, "America/New_York"))

//@function Displays text passed to `txt` when called.
debugLabel(txt, color, y, style) =>
    if (showDebugLabels) 
        label.new(bar_index, y, text = txt, color = color, style = style, textcolor = color.black, size = size.small)


//
// INDICATOR CODE
//

long = input(title="TSI Long Length", defval=8)
short = input(title="TSI Short Length", defval=8)
signal = input(title="TSI Signal Length", defval=3)
lowerLine = input(title="TSI Lower Line", defval=-50)
upperLine = input(title="TSI Upper Line", defval=50)

price = close
double_smooth(src, long, short) =>
	fist_smooth = ta.ema(src, long)
	ta.ema(fist_smooth, short)

pc = ta.change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(math.abs(pc), long, short)
tsiValue = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
signalValue = ta.ema(tsiValue, signal)

//
// COMMON VARIABLES
//

var color trendColor = na
var int lastEntryBar = na

bool tradeAllowed = timeinrange() == true and (na(lastEntryBar) or bar_index - lastEntryBar > requiredBarsBetweenEntries)

// 
// CROSSOVER
//

bool crossOver = ta.crossover(tsiValue, signalValue)
bool crossUnder = ta.crossunder(tsiValue,signalValue)

if (tradeAllowed) 
	if (signalValue < lowerLine and crossOver == true)
		strategy.entry("Up", strategy.long)
		lastEntryBar := bar_index

	else if (signalValue > upperLine and crossUnder == true)

		strategy.entry("Down", strategy.short)
		lastEntryBar := bar_index

// 
// EXITS
// 

if (strategy.position_size > 0 and crossUnder == true)
	strategy.close("Up", qty_percent = 100)

else if (strategy.position_size < 0 and crossOver == true)
	strategy.close("Down", qty_percent = 100)