এই কৌশলটি মূলত বিটিসিতে স্বয়ংক্রিয় দীর্ঘমেয়াদী বিনিয়োগের জন্য ব্যবহৃত হয়। এটি প্রবণতা দিক নির্ধারণের জন্য দ্বৈত ইএমএ এবং এলএসএমএর ক্রসওভার ব্যবহার করে এবং বিটিসির উত্থান প্রবণতা কার্যকরভাবে ট্র্যাক করার জন্য গতিশীল স্টপ লস গণনা করতে এটিআর সূচক ব্যবহার করে।
একটি দ্বৈত চলমান গড় গঠনের জন্য 25 পিরিয়ড ইএমএ এবং 100 পিরিয়ড এলএসএমএ ব্যবহার করুন। তাদের ক্রসওভার বাজারের প্রবণতা নির্ধারণ করতে ব্যবহৃত হয়। ইএমএ দ্রুত মূল্য পরিবর্তনের প্রতিক্রিয়া জানায় যখন এলএসএমএ মিথ্যা ব্রেকআউটগুলি ফিল্টার করে।
যখন দ্রুত EMA ধীর LSMA এর উপরে অতিক্রম করে, তখন এটি নির্ধারণ করা হয় যে আপট্রেন্ডটি এখনও অক্ষত এবং লং পজিশন নেওয়া হয়। বিপরীতে, যখন দ্রুত EMA ধীর LSMA এর নীচে অতিক্রম করে, তখন এটি নির্ধারণ করা হয় যে একটি ডাউনট্রেন্ড শুরু হয়েছে এবং বিদ্যমান অবস্থানগুলি বন্ধ করা হয়েছে।
লং পজিশন নেওয়ার পরে, এটিআর সূচক ব্যবহার করে গণনা করা গতিশীল স্টপ লস বিটিসির আপট্রেন্ডকে কার্যকরভাবে ট্র্যাক করার জন্য সামঞ্জস্য করে। বিশেষত, স্টপ লস লাইনের প্রাথমিক বিন্দুটি প্রবেশের মূল্য। এর পরে, প্রতিটি সমন্বয় এটিআর ব্যাপ্তির একটি নির্দিষ্ট শতাংশ দ্বারা স্লাইড করবে।
স্টপ লস লাইন কার্যকরভাবে বিটিসি আপট্রেন্ড দ্বারা আনা ভাসমান মুনাফা লক করতে পারে, পাশাপাশি স্টপ লস পয়েন্টটি সাম্প্রতিক মূল্যের খুব কাছাকাছি যেতে বাধা দেয় যাতে ঘন ঘন স্টপ লস এড়ানো যায়। তদতিরিক্ত, কৌশলটি আরও বেশি মুনাফা লক করার জন্য বিভিন্ন অনুপাতের দুটি চলমান স্টপ মুনাফাও সেট করে।
প্রবণতা নির্ধারণের জন্য দ্বৈত চলমান গড় ব্যবহার করা আরো নির্ভরযোগ্য এবং কার্যকরভাবে মিথ্যা সংকেত প্রতিরোধ করতে পারে।
এটিআর ডায়নামিক ট্রেলিং স্টপ লস প্রায়শই ছোট স্টপ লস এড়ানোর সময় বেশিরভাগ লাভকে লক করতে পারে।
যদি চলমান গড়টি একটি প্রস্থান সংকেত দেয়, তবে ঝুঁকি নিয়ন্ত্রণের জন্য পজিশনটি বন্ধ হয়ে যাবে।
এই কৌশলটি কোনও ম্যানুয়াল হস্তক্ষেপ ছাড়াই একটি উচ্চ ডিগ্রি অটোমেশন রয়েছে, যা এটি দীর্ঘমেয়াদী লাইভ ট্রেডিংয়ের জন্য উপযুক্ত করে তোলে।
হঠাৎ বড় বড় খবর এড়ানোর জন্য এখনও মনোযোগ দিতে হবে।
যদিও দ্বৈত চলমান গড়ের সংমিশ্রণটি মিথ্যা সংকেত হ্রাস করতে পারে, তবে ব্যাপ্তিযুক্ত বাজারে এগুলি সম্পূর্ণরূপে এড়ানো এখনও কঠিন।
এটিআর এর ভুল প্যারামিটার সেটিংগুলি স্টপ লস প্রভাবকেও প্রভাবিত করতে পারে। বিভিন্ন পণ্যের উপর ভিত্তি করে সমন্বয় প্রয়োজন।
অযৌক্তিক চলমান গড় সময়কাল বা সময়মতো তাদের আপডেট না করা সিগন্যাল বিলম্বের কারণ হতে পারে।
অটোমেটেড ট্রেডিংকে বাধা দেয় এমন অস্বাভাবিক ক্র্যাশ এড়াতে সার্ভারের স্থিতিশীলতা নিশ্চিত করুন।
প্রবণতা নির্ধারণের জন্য বোলিংজার ব্যান্ডের মতো আরও সূচক যুক্ত করা যেতে পারে। মেশিন লার্নিং মডেলগুলিও দামের পূর্বাভাস দিতে ব্যবহার করা যেতে পারে।
এটিআর ডায়নামিক স্টপ লস গণনার পদ্ধতিটিও স্টপ লসকে আরও মসৃণ করার জন্য সামঞ্জস্য এবং অনুকূলিত করা যেতে পারে।
প্রধান সংবাদের প্রভাব থেকে রক্ষা করার জন্য ট্রেডিং ভলিউমের উপর ভিত্তি করে সতর্কতা ব্যবস্থা এবং ইনট্রা ডে রোটেশন বৈশিষ্ট্য যুক্ত করা যেতে পারে।
প্যারামিটারগুলি বিভিন্ন মুদ্রার জন্য পরিবর্তিত হয়। ব্যক্তিগতকৃত প্যারামিটারগুলি প্রশিক্ষণের জন্য আরও ঐতিহাসিক তথ্য ব্যবহার করা যেতে পারে।
মোটামুটিভাবে, এটি একটি খুব ব্যবহারিক স্বয়ংক্রিয় বিটিসি বিনিয়োগ প্রোগ্রাম। প্রধান প্রবণতা নির্ধারণের জন্য দ্বৈত ইএমএ ব্যবহার করা খুব নির্ভরযোগ্য। এটিআর অনুসরণকারী স্টপ লস সহ, এটি শালীন মুনাফা অর্জন করতে পারে এবং বৈধতার সময়কাল খুব দীর্ঘ হতে পারে। কারণ পরামিতিগুলি অপ্টিমাইজ করা অব্যাহত রয়েছে, এই কৌশলটির কর্মক্ষমতা উন্নত করার জন্য এখনও অনেক জায়গা রয়েছে। এটি লাইভ ট্রেডিং যাচাইয়ের পক্ষে মূল্যবান।
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Wunderbit Trading //@version=4 strategy("Automated Bitcoin (BTC) Investment Strategy", overlay=true, initial_capital=5000,pyramiding = 0, currency="USD", default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent,commission_value=0.1) //////////// Functions Atr(p) => atr = 0. Tr = max(high - low, max(abs(high - close[1]), abs(low - close[1]))) atr := nz(atr[1] + (Tr - atr[1])/p,Tr) //TEMA TEMA(series, length) => if (length > 0) ema1 = ema(series, length) ema2 = ema(ema1, length) ema3 = ema(ema2, length) (3 * ema1) - (3 * ema2) + ema3 else na tradeType = input("LONG", title="What trades should be taken : ", options=["LONG", "SHORT", "BOTH", "NONE"]) /////////////////////////////////////////////////// /// INDICATORS source=close /// TREND trend_type1 = input("TEMA", title ="First Trend Line : ", options=["LSMA", "TEMA","EMA","SMA"]) trend_type2 = input("LSMA", title ="First Trend Line : ", options=["LSMA", "TEMA","EMA","SMA"]) trend_type1_length=input(25, "Length of the First Trend Line") trend_type2_length=input(100, "Length of the Second Trend Line") leadLine1 = if trend_type1=="LSMA" linreg(close, trend_type1_length, 0) else if trend_type1=="TEMA" TEMA(close,trend_type1_length) else if trend_type1 =="EMA" ema(close,trend_type1_length) else sma(close,trend_type1_length) leadLine2 = if trend_type2=="LSMA" linreg(close, trend_type2_length, 0) else if trend_type2=="TEMA" TEMA(close,trend_type2_length) else if trend_type2 =="EMA" ema(close,trend_type2_length) else sma(close,trend_type2_length) p3 = plot(leadLine1, color= #53b987, title="EMA", transp = 50, linewidth = 1) p4 = plot(leadLine2, color= #eb4d5c, title="SMA", transp = 50, linewidth = 1) fill(p3, p4, transp = 60, color = leadLine1 > leadLine2 ? #53b987 : #eb4d5c) //Upward Trend UT=crossover(leadLine1,leadLine2) DT=crossunder(leadLine1,leadLine2) // TP/ SL/ FOR LONG // TAKE PROFIT AND STOP LOSS long_tp1_inp = input(15, title='Long Take Profit 1 %', step=0.1)/100 long_tp1_qty = input(20, title="Long Take Profit 1 Qty", step=1) long_tp2_inp = input(30, title='Long Take Profit 2%', step=0.1)/100 long_tp2_qty = input(20, title="Long Take Profit 2 Qty", step=1) long_take_level_1 = strategy.position_avg_price * (1 + long_tp1_inp) long_take_level_2 = strategy.position_avg_price * (1 + long_tp2_inp) long_sl_input = input(5, title='stop loss in %', step=0.1)/100 long_sl_input_level = strategy.position_avg_price * (1 - long_sl_input) // Stop Loss multiplier = input(3.5, "SL Mutiplier", minval=1, step=0.1) ATR_period=input(8,"ATR period", minval=1, step=1) // Strategy //LONG STRATEGY CONDITION SC = input(close, "Source", input.source) SL1 = multiplier * Atr(ATR_period) // Stop Loss Trail1 = 0.0 Trail1 := iff(SC < nz(Trail1[1], 0) and SC[1] < nz(Trail1[1], 0), min(nz(Trail1[1], 0), SC + SL1), iff(SC > nz(Trail1[1], 0), SC - SL1, SC + SL1)) Trail1_high=highest(Trail1,50) // iff(SC > nz(Trail1[1], 0) and SC[1] > nz(Trail1[1], 0), max(nz(Trail1[1], 0), SC - SL1), entry_long=crossover(leadLine1,leadLine2) and Trail1_high < close exit_long = close < Trail1_high or crossover(leadLine2,leadLine1) or close < long_sl_input_level ///// BACKTEST PERIOD /////// 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(9999, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(31, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0) testPeriod() => time >= testPeriodStart and time <= testPeriodStop ? true : false if testPeriod() if tradeType=="LONG" or tradeType=="BOTH" if strategy.position_size == 0 or strategy.position_size > 0 strategy.entry("long", strategy.long, comment="b8f60da7_ENTER-LONG_BINANCE_BTC/USDT_b8f60da7-BTC-Investment_4H", when=entry_long) strategy.exit("TP1", "long", qty_percent=long_tp1_qty, limit=long_take_level_1) strategy.exit("TP2", "long", qty_percent=long_tp2_qty, limit=long_take_level_2) strategy.close("long", when=exit_long, comment="b8f60da7_EXIT-LONG_BINANCE_BTC/USDT_b8f60da7-BTC-Investment_4H" ) // LONG POSITION plot(strategy.position_size > 0 ? long_take_level_1 : na, style=plot.style_linebr, color=color.green, linewidth=1, title="1st Long Take Profit") plot(strategy.position_size > 0 ? long_take_level_2 : na, style=plot.style_linebr, color=color.green, linewidth=1, title="2nd Long Take Profit") plot(strategy.position_size > 0 ? Trail1_high : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Stop Loss")