
এই কৌশলটি একটি আদর্শ ত্রিভুজ সূচক চলমান গড় ট্রেডিং কৌশল বাস্তবায়ন। এটি একটি দ্রুত 5 দিনের ইএমএ, একটি মাঝারি 20 দিনের ইএমএ এবং একটি ধীর 50 দিনের ইএমএ এর ক্রস দ্বারা একটি ট্রেডিং সংকেত উত্পন্ন করে। একই সময়ে, এটি মিথ্যা সংকেতগুলিকে ফিল্টার করার জন্য বর্তমান কে-লাইন সমাপ্তির দামের আগের দিনের সমাপ্তির দামের উপরে বা নীচে নির্দিষ্ট টিকের সাথে সংযুক্ত করে। উপরন্তু, এই কৌশলটি লাভের জন্য লকিংয়ের জন্য স্টপ লস ট্র্যাকিং ব্যবহার করে।
যখন 5 দিনের ইএমএ 20 দিনের ইএমএ অতিক্রম করে, এবং তিনটি ইএমএ একটি মাল্টিহেড সারি রয়েছে ((5 দিনের ইএমএ > 20 দিনের ইএমএ > 50 দিনের ইএমএ), এবং বর্তমান কে লাইন সমাপ্তির দাম পূর্ববর্তী দিনের সমাপ্তির দামের চেয়ে বেশি বৃদ্ধি পেয়েছে নির্দিষ্ট টিক, আরও বেশি করুন; যখন 5 দিনের ইএমএ 20 দিনের ইএমএ অতিক্রম করে, এবং তিনটি ইএমএ শূন্য সারি রয়েছে ((5 দিনের ইএমএ < 20 দিনের ইএমএ < 50 দিনের ইএমএ), এবং বর্তমান কে লাইন সমাপ্তির দাম পূর্ববর্তী দিনের সমাপ্তির দামের চেয়ে বেশি কমেছে নির্দিষ্ট টিক, খালি করুন।
প্রবেশের পরে, যদি দামটি নির্দিষ্ট টিকের চেয়ে বেশি চালিত হয়, তবে ট্র্যাকিং স্টপ মেকানিজম চালু করুন, দামের ওঠানামা অনুসারে স্টপ লাইনটি ক্রমাগত সামঞ্জস্য করুন, যাতে আরও লাভজনক টিকগুলি লক করা যায়।
ট্রিপল ইএমএ ব্যবহার করে ট্রেডিং সিগন্যাল তৈরি করা হয়, যা কার্যকরভাবে বাজার শব্দ ফিল্টার করে এবং প্রবণতা সনাক্ত করে। দ্রুত ইএমএ সাম্প্রতিক পরিবর্তনগুলি প্রতিফলিত করে, মাঝারি ইএমএ প্রবণতার দিকনির্দেশ নির্ধারণ করে এবং ধীর ইএমএ ফিল্টার করা হয়।
বর্তমান K-লাইন বন্ধের মূল্যকে আগের দিনের বন্ধের মূল্যের সাথে তুলনা করা যায়, যা অপ্রয়োজনীয় লেনদেন হ্রাস করার জন্য ভুয়া সংকেতগুলিকে আরও পরিস্রাবণ করতে পারে।
ট্র্যাকিং স্টপ মেকানিজম ব্যবহার করে, আপনি আপনার স্টপ লাইনকে গতিশীলভাবে সামঞ্জস্য করতে পারেন এবং আপনার মুনাফা সর্বাধিক করতে পারেন।
এই কৌশলটির প্যারামিটারগুলি নমনীয়ভাবে সেট করা হয়েছে এবং বিভিন্ন জাত এবং সময়কালের জন্য অপ্টিমাইজ করা যেতে পারে, যা সূর্য থেকে মিনিট লাইন পর্যন্ত প্রযোজ্য।
অস্থিরতার সময়, ইএমএ ক্রস সিগন্যালগুলি ঘন ঘন হয়, যা খুব বেশি লেনদেনের কারণ হতে পারে, যার ফলে লেনদেনের ফি এবং স্লাইড পয়েন্টের ব্যয় বৃদ্ধি পায়।
ট্র্যাকিং স্টপ একটি বড় ধাক্কা সময় একটি অপ্রত্যাশিত স্টপ হতে পারে, যা পুরো প্রবণতা ধরে রাখতে পারে না।
EMA-এর বিলম্বিত বৈশিষ্ট্যটি ট্রেন্ডের বিপরীত দিকটি মিস করতে পারে এবং ক্ষতি করতে পারে।
ইএমএ চক্রের দৈর্ঘ্য, স্টপ লস টিকস ট্র্যাকিং ইত্যাদির মতো প্যারামিটারগুলিকে অপ্টিমাইজ করার প্রয়োজন, বিভিন্ন জাত এবং চক্রের মধ্যে কার্যকারিতা ব্যাপকভাবে পরিবর্তিত হয়।
অন্যান্য সূচক যেমন MACD, KD ইত্যাদির সাথে মিলিত হয়ে ট্রেডিং সিগন্যাল ফিল্টার করতে সহায়তা করতে পারে।
বিভিন্ন জাতের এবং সময়কালের পরামিতিগুলির উপর ভিত্তি করে পরীক্ষার এবং অপ্টিমাইজেশনের মাধ্যমে সর্বোত্তম প্যারামিটার সমন্বয় খুঁজে পাওয়া যায়।
প্যারামিটারগুলিকে ম্যানুয়াল হস্তক্ষেপ বা মেশিন লার্নিংয়ের মাধ্যমে গতিশীলভাবে সামঞ্জস্য করা যেতে পারে।
নির্দিষ্ট পরিস্থিতিতে ট্র্যাকিং স্টপ বন্ধ করা, সম্পূর্ণ পজিশন রাখা প্রবণতা বিবেচনা করা যেতে পারে।
অটোস্টপ ব্যবহার করে ট্র্যাকিং স্টপকে প্রতিস্থাপন করা যায়।
এই কৌশলটি তিনটি সাধারণ প্রযুক্তিগত বিশ্লেষণের পদ্ধতিগুলিকে সংহত করে, যেমন ইএমএ ক্রস, দামের ব্রেকআপ এবং স্টপ লস ট্র্যাকিং, একটি বিস্তৃত এবং নির্ভরযোগ্য ট্রেডিং ট্রেডিং সিস্টেম তৈরি করে। প্যারামিটার অপ্টিমাইজেশনের মাধ্যমে, এটি বিভিন্ন জাত এবং সময়কালের সাথে খাপ খাইয়ে নিতে পারে এবং প্রবণতা বিশিষ্ট বাজারে ভাল কাজ করে। তবে এই কৌশলটিতে কিছু সাধারণ প্রযুক্তিগত বিশ্লেষণ কৌশল দুর্বলতা রয়েছে, যা আরও বাজারের পরিস্থিতি মোকাবেলায় আরও অপ্টিমাইজ করা দরকার। সামগ্রিকভাবে, এই কৌশলটি পরিমাণযুক্ত ব্যবসায়ের জন্য একটি সহজ ব্যবহারিক ধারণা সরবরাহ করে যা সাধারণ কৌশলগত চিন্তার একটি ভাল অনুশীলন এবং প্রদর্শন।
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-02 12:00:00
period: 1m
basePeriod: 1m
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/
// © Matt Dearden - IndoPilot
// @version=4
/////////////////////////////////////////////////////// Initial Parameters ///////////////////////////////////////////////////////
SystemName = "Triple EMA Strategy"
ShortSystemName = "TEMA"
InitPosition = 0
InitCapital = 50000
InitCommission = 0.004 //approx value to compensate for Oanda spreads
InitPyramidMax = 0
CalcOnorderFills = true
strategy(title=SystemName, shorttitle=ShortSystemName, overlay=true, pyramiding=InitPyramidMax,
default_qty_type=strategy.cash, default_qty_value=InitPosition, commission_type=strategy.commission.percent,
commission_value=InitCommission, initial_capital=InitCapital, max_lines_count=500,
max_labels_count=500, process_orders_on_close=false, calc_on_every_tick=false)
///////////////////////////////////////////////////////////// Inputs /////////////////////////////////////////////////////////////
DateFilter = input(false, "═════ Data Filtering ═════")
InitYear = input(title="Year", type=input.integer, defval=2021, minval=2000, maxval=2021)
InitMonth = input(title="Month (0=ALL)", type=input.integer, defval=0, minval=0, maxval=12)
InitStopLoss = input(title="Stop Loss (ticks)", type=input.integer, defval=100, minval=0, maxval=1000)
TrailingStopLoss = input(title="Trailing S/L (ticks)", type=input.integer, defval=130, minval=0, maxval=1000)
InitBuffer = input(title="Buffer (ticks)", type=input.integer, defval=15, minval=0, maxval=1000)
InitEMA1 = input(title="EMA 1", type=input.integer, defval=5, minval=0, maxval=1000)
InitEMA2 = input(title="EMA 2", type=input.integer, defval=20, minval=0, maxval=1000)
InitEMA3 = input(title="EMA 3", type=input.integer, defval=50, minval=0, maxval=1000)
//////////////////////////////////////////////////////////// Variables ///////////////////////////////////////////////////////////
var StopLoss = float(0.0)
var StartPrice = float(0.0)
//setup multipliers and catch JPY difference
Multiplier = syminfo.currency == "JPY" ? 10 : 1000
//get the daily exchange rate from yesterday
//X_rate = security(AccountCurrency+syminfo.currency, "D", close[1])
OrderQty = 1
Buffer = InitBuffer / (Multiplier * 100)
/////////////////////////////////////////////////////// Triple EMA Strategy //////////////////////////////////////////////////////
EMA1 = ema(close, InitEMA1)
EMA2= ema(close, InitEMA2)
EMA3 = ema(close, InitEMA3)
//entry conditions
longCondition = crossover(EMA1, EMA2) and close > EMA3 and EMA1 > EMA3 and EMA2 > EMA3 and close > (close[1] + Buffer)
shortCondition = crossunder(EMA1, EMA2) and close < EMA3 and EMA1 < EMA3 and EMA2 < EMA3 and close < (close[1] - Buffer)
/////////////////////////////////////////////////////// Trailing Stoploss ////////////////////////////////////////////////////////
if (strategy.position_size > 0 and (close > (StartPrice + (TrailingStopLoss / (100 * Multiplier)))))
StopLoss := max(StopLoss, close - (TrailingStopLoss / (100 * Multiplier)))
strategy.exit("Long Stoploss", "Long")
if (strategy.position_size < 0 and (close < (StartPrice - (InitStopLoss / (100 * Multiplier)))))
StopLoss := min(StopLoss, close + (TrailingStopLoss / (100 * Multiplier)))
strategy.exit("Short Stoploss", "Short")
///////////////////////////////////////////////////////// Setup entries /////////////////////////////////////////////////////////
if (longCondition)
StartPrice := close
StopLoss := StartPrice - (InitStopLoss / (100 * Multiplier))
strategy.entry("Long", strategy.long, qty=OrderQty)
strategy.exit("Long Stoploss", "Long")
if (shortCondition)
StartPrice := close
StopLoss := StartPrice + (InitStopLoss / (100 * Multiplier))
strategy.entry("Short", strategy.short, qty=OrderQty)
strategy.exit("Short Stoploss", "Short")
///////////////////////////////////////////////////////// Draw the EMAs /////////////////////////////////////////////////////////
plot(EMA1, "EMA1", color=#00FF00)
plot(EMA2, "EMA2", color=#FF0000)
plot(EMA3, "EMA3", color=#4040FF)