এই কৌশলটি এমএসিডি সূচকের গোল্ডেন ফর্ক ড্যাড ফর্ক সংকেত, কে লাইনের সমাপ্তির দামের মধ্যবর্তী লাইনের সাথে সম্পর্ক এবং মূল্যের অস্থিরতার বৈশিষ্ট্যগুলি ব্যবহার করে প্রবেশের এবং বেরিয়ে যাওয়ার সময় নির্ধারণ করে এবং পুনরায় প্রবেশের এবং প্রবেশের সংশোধন করার প্রক্রিয়াটি সেট করে যাতে আরও ব্যবসায়ের সুযোগ পাওয়ার জন্য ঝুঁকি নিয়ন্ত্রণ করা যায় এবং স্থিতিশীল উপার্জন করা যায়।
এই কৌশলটি মূলত নিম্নলিখিত নীতিগুলির উপর ভিত্তি করে তৈরি করা হয়েছেঃ
MACD-এর বিশ্লেষণের সাহায্যে ফাস্টলাইন এবং লো লিন্ডের গোল্ডেন ফোর্ক ডেডফোর্ক ব্যবহার করে মাল্টি-হেড বা শূন্য-হেড বাজার এবং নির্দিষ্ট প্রবেশের পয়েন্ট নির্ধারণ করা হয়।
K-রেখার সমাপ্তি মূল্য এবং মধ্যম রেখার সম্পর্ক ব্যবহার করে, একটি বহুমুখী প্রবণতা শেষ হয়েছে কিনা তা নির্ধারণ করা যায়, এবং একটি প্রারম্ভিক পয়েন্ট।
পুনরায় প্রবেশের ব্যবস্থা করা হয়েছে যাতে MACD-এর বর্তমান রাউন্ডের শেষে ট্রেন্ড অনুযায়ী পুনরায় প্রবেশ করা যায় এবং মুনাফা অর্জনের সুযোগ বাড়ানো যায়।
একটি সংশোধিত প্রবেশের প্রক্রিয়া সেট করুন, যদি দামের আংশিক সমন্বয় ঘটে তবে এটি এখনও বিপরীত হয় না, তবে পজিশন যুক্ত করা হবে, এটি প্রবণতার অভ্যন্তরীণ সমন্বয়।
ট্রেন্ডিংয়ের সময় যতটা সম্ভব বেশি মুনাফা পেতে এবং ট্রেন্ডিং শেষ হলে দ্রুত চলে যেতে পজিশনের অবস্থানকে গতিশীলভাবে সামঞ্জস্য করুন
বিশেষত, কৌশলটি প্রথমে নির্ধারণ করে যে MACD এর দ্রুত এবং ধীর লাইনটি গোল্ডফোর্ক বা ডেডফোর্কের ঘটনা ঘটেছে কিনা, যদি গোল্ডফোর্কটি বেশি হয় এবং যদি ডেডফোর্কটি শূন্য হয়; তারপরে সিদ্ধান্ত নেওয়া হয় যে কে লাইনটি মধ্যবর্তী বিট লাইনটি স্পর্শ করে কিনা, যদি এটি স্পর্শ করে তবে ট্রেন্ডের সমাপ্তি হিসাবে স্থির করা হয়।
এছাড়াও, কৌশলটি পুনরায় প্রবেশের প্রক্রিয়াটি সেট করে, অর্থাৎ, মূল দিকের প্রবণতা শেষ হওয়ার পরে, যদি ম্যাকড একই দিকের সংকেত প্রদর্শন করে, তবে কৌশলটি আবার ট্রেন্ড ট্র্যাকিং পজিশন খুলবে; একই সাথে, একটি সংশোধন প্রবেশের প্রক্রিয়াও সেট করা হয়েছে, যদি দামের সামান্য সংশোধন হয় তবে পুরোপুরি বিপরীত হয় না, তবে কৌশলটি যথাযথভাবে পজিশন বাড়িয়ে তুলবে, যা প্রবণতার মধ্যে স্বাভাবিক পুনর্নির্মাণের আচরণ।
এই সেটিংসের মাধ্যমে, কৌশলটি প্রবণতার মধ্যে গতিশীলভাবে অবস্থান পরিবর্তন করতে পারে, আরো বেশি প্রবেশ এবং প্রস্থান করতে পারে এবং ঝুঁকি নিয়ন্ত্রণের উপর ভিত্তি করে উচ্চতর আয় অর্জন করতে পারে।
এই সমন্বিত কৌশলটি বেশ কয়েকটি সূচক ব্যবহার করে এবং এর প্রধান সুবিধাগুলি হলঃ
MACD প্রবণতা এবং বিপরীত পয়েন্টগুলি সনাক্ত করতে পারে এবং নির্দিষ্ট প্রবেশের পয়েন্টগুলি নির্ধারণ করতে পারে।
প্রবণতার সমাপ্তি নির্ধারণের জন্য মধ্যম রেখার সাথে সমাপ্তি মূল্যের সম্পর্ক নির্ধারণ করা হয়।
পুনরায় প্রবেশের প্রক্রিয়াটি পজিশন খোলার সংখ্যা বৃদ্ধি করে এবং তহবিলের ব্যবহারের দক্ষতা বাড়ায়।
এই প্রবণতাগুলিকে সঠিকভাবে ধরার জন্য, প্রবেশের প্রক্রিয়াটি সংশোধন করা হয়েছে।
কৌশলগত অপারেশন উচ্চ ফ্রিকোয়েন্সি কিন্তু ঝুঁকি নিয়ন্ত্রিত, সহজেই উচ্চ মুনাফা ফ্যাক্টর পেতে।
প্যারামিটারগুলি সামঞ্জস্যযোগ্য এবং বিভিন্ন জাত এবং পরিস্থিতির জন্য অনুকূলিতকরণ করা যায়।
কৌশলগুলি পরিষ্কার এবং সহজে বোঝা যায়, কোডটি সংক্ষিপ্ত এবং হার্ডডিস্কের কাজ সহজ।
রিটার্নিং ডেটা যথেষ্ট, উচ্চ নির্ভরযোগ্যতা, এবং বাস্তব ডিভাইসগুলি কার্যকরভাবে যাচাই করা সহজ।
এই কৌশলটি নিম্নলিখিত প্রধান ঝুঁকির সাথেও জড়িতঃ
MACD-এ মিথ্যা সংকেত প্রেরণের সম্ভাবনা যা যাচাই করার জন্য অন্যান্য সূচকগুলির সমন্বয় প্রয়োজন।
বড় স্তরের স্টপ ড্যামেজ সেটিংটি খুব ছোট হলে, এটি একটি বড় পরিস্থিতিতে আউট হয়ে যেতে পারে।
পুনরায় প্রবেশ এবং সংশোধিত প্রবেশের ফলে অপারেশনের ফ্রিকোয়েন্সি বৃদ্ধি পেয়েছে এবং তহবিলের ব্যবহার নিয়ন্ত্রণ করা প্রয়োজন।
বিপর্যয়কর পরিস্থিতিতে সংশোধিত প্রবেশাধিকার বড় ক্ষতির কারণ হতে পারে।
ট্রেডিং প্রজাতি এবং প্যারামিটার সেটিং অপ্টিমাইজেশন প্রয়োজন, সব প্রজাতির জন্য প্রযোজ্য নয়।
ক্রমাগত পর্যবেক্ষণ এবং অপ্টিমাইজেশান প্রয়োজন, বাজারের সাথে সামঞ্জস্যপূর্ণ প্যারামিটার।
ভৌগলিক কক্ষের মধ্যে স্লাইড পয়েন্ট খরচ প্রভাব বিবেচনা করা প্রয়োজন।
ঝুঁকি ব্যবস্থাপনার ব্যবস্থাগুলির মধ্যে রয়েছেঃ স্টপ লস স্টপ সেট করুন যাতে একক ক্ষতির পরিমাণ সীমিত থাকে; তহবিলের ব্যবহারের মূল্যায়ন করুন এবং নগদ রিজার্ভের যুক্তিসঙ্গত পরিমাণ বজায় রাখুন; প্রজাতি নির্বাচন করার জন্য উপযুক্ত প্যারামিটারগুলির সমন্বয় নিয়ে পুনর্বিবেচনা করুন; প্যারামিটারগুলিকে অনুকূলিত করার জন্য বাজারের বৈশিষ্ট্যগুলির পরিবর্তনগুলিকে ক্রমাগত নজর রাখুন; পুনর্বিবেচনা এবং সিমুলেশনগুলিতে স্লাইড কোস্টের প্রভাব বিবেচনা করুন।
এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে আরও উন্নত করা যেতে পারেঃ
সংকেত যাচাইকরণের জন্য অন্যান্য সূচকগুলির সাথে সংমিশ্রণ, যেমন কেডিজে সূচক ইত্যাদি।
অ্যাক্টিভ ডায়নামিক স্টপ-ড্যামেজ স্ট্যান্ডার্ড সেট করুন।
পুনরায় ভর্তি এবং সংশোধিত ভর্তির শর্তাদির লজিক অনুকূলিত করুন।
শ্রেণিবদ্ধকরণ পরামিতি অপ্টিমাইজ করা হয়েছে, সর্বোত্তম প্যারামিটার সমন্বয় সেট করা হয়েছে।
পুনরায় ভর্তি এবং সংশোধিত ভর্তির জন্য তহবিলের সীমাবদ্ধতা নির্ধারণ করে তহবিলের ব্যবহারের অনুপাত অনুকূলিত করুন।
সংযুক্ত পরিমাণের সূচক, বিপর্যয় পরিস্থিতিতে পজিশনের ক্ষতি এড়াতে।
খেলার বাইরে যাওয়ার ব্যবস্থা যেমন মোবাইল স্টপ ইত্যাদি যোগ করা।
ট্রেডিং রোবট হিসেবে কৌশল মোড়কে বিবেচনা করুন, স্বয়ংক্রিয় ট্রেডিংয়ের জন্য।
ভার্চুয়াল ডিভাইসগুলির জন্য, যেমন স্লাইড পয়েন্টের খরচ।
এই অপ্টিমাইজেশানগুলি কৌশলগুলির স্থিতিশীলতা, অভিযোজনযোগ্যতা, স্বয়ংক্রিয়তা এবং কার্যকারিতা আরও উন্নত করতে পারে।
এই কৌশলটি MACD সূচকের ট্রেডিং সিগন্যাল, কে-লাইন ক্লোজিং প্রাইস অ্যানালিসিস এবং মাল্টিপল ইনপুট মেশিন ব্যবহার করে ট্রেডিং সিগন্যালকে একত্রিত করে, প্রবণতা ধরে রাখার সময় ঝুঁকি নিয়ন্ত্রণ করে, এটি একটি উচ্চ দক্ষতাযুক্ত পরিমাণগত ট্রেডিং কৌশল ধারণা। এই কৌশলটি উচ্চ অপারেশন ফ্রিকোয়েন্সি, ভাল তহবিল ব্যবহার এবং কম অসুবিধা অর্জন করে, তবে ঝুঁকি নিয়ন্ত্রণ এবং কৌশল অপ্টিমাইজেশনের দিকেও মনোযোগ দেওয়া দরকার, এটির ব্যবহারিক মূল্য এবং প্রসারণের জায়গা রয়েছে। যদি রোবোটিক প্রযুক্তির সাথে অটোমেশন বাস্তবায়িত হয় তবে এটি একটি খুব কার্যকর পরিমাণগত ট্রেডিং সমাধান হতে পারে।
/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 2h
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/
// © Puckapao
//@version=4
// strategy(title="MACD", shorttitle="MACD", overlay=true, initial_capital=10000.00, currency="USD", default_qty_type=strategy.cash, default_qty_value=10000.00)
// Getting inputs
reenter_delay = input(title="Re-enter Delay", type=input.integer, defval=2)
sculp_delay = input(title="Sculp Delay", type=input.integer, defval=4)
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=true)
ema_period = input(title="EMA Period", type=input.integer, defval=21)
// Get date
startDate = input(title="Start Date", type=input.integer,
defval=19, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer,
defval=09, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer,
defval=2017, minval=1800, maxval=2100)
endDate = input(title="End Date", type=input.integer,
defval=31, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer,
defval=3, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer,
defval=2021, minval=1800, maxval=2100)
// STEP 2:
// Look if the close time of the current bar
// falls inside the date range
inDateRange = true
reenter_cnt = 0
reenter_cnt := nz(reenter_cnt[1])
sculp_cnt = 0
sculp_cnt := nz(sculp_cnt[1])
close_cnt = 0
close_cnt := nz(close_cnt[1])
on_long = false
on_long := nz(on_long[1])
on_short = false
on_short := nz(on_short[1])
sculp = false
reenter = false
slowdown = false
ema = ema(close, ema_period)
// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00
// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
// plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
// plot(macd, title="MACD", color=col_macd, transp=0)
// plot(signal, title="Signal", color=col_signal, transp=0)
cross_up = crossover(macd, signal)
cross_down = crossunder(macd, signal)
if (inDateRange)
over_macd = macd > 0 and signal > 0 ? true : false
under_macd = macd < 0 and signal < 0 ? true : false
over_water = close > ema ? true : false
under_water = close < ema ? true : false
slowdown := hist >= 0 ? (hist[1] > hist ? true : false) : (hist[1] > hist ? false : true)
reenter := hist >= 0 ? (hist[1] < hist ? true : false) : (hist[1] > hist ? true : false)
sculp := (hist >= 0 ? (hist[1] > hist ? true : false) : (hist[1] < hist ? true : false))
if(reenter == true)
if(reenter_cnt < reenter_delay)
reenter_cnt := reenter_cnt + 1
else
if(reenter_cnt > 0)
reenter_cnt := reenter_cnt - 1
if(sculp == true)
if(sculp_cnt < sculp_delay)
sculp_cnt := sculp_cnt + 1
else
if(sculp_cnt > 0)
sculp_cnt := sculp_cnt - 1
if(slowdown == false)
if(close_cnt < 2)
close_cnt := close_cnt + 1
else
close_cnt := 0
// plotchar(fork_cnt, "fork count", "")
// plotchar(spoon_cnt, "spoon count", "")
// Entry
if (cross_up == true)
strategy.entry("long", strategy.long, comment = "long", alert_message = "long")
on_long := true
on_short := false
if (cross_down == true)
strategy.entry("short", strategy.short, comment = "short", alert_message = "short")
on_short := true
on_long := false
// Sculp bottom / top
if (sculp == true and sculp_cnt >= sculp_delay)
if (hist >= 0)
strategy.entry("sculp-short", strategy.short, comment = "sculp-short", alert_message = "sculp-short")
else
strategy.entry("sculp-long", strategy.long, comment = "sculp-long", alert_message = "sculp-long")
sculp_cnt := 0
sculp := false
// Re-Entry
if (reenter == true and reenter_cnt >= reenter_delay)
if (hist >= 0)
strategy.entry("re-long", strategy.long, comment = "re-long", alert_message = "re-long")
else
strategy.entry("re-short", strategy.short, comment = "re-short", alert_message = "re-short")
reenter_cnt := 0
reenter := false
// Close
strategy.close("long", when = slowdown, comment = "close long", alert_message = "close long")
strategy.close("short", when = slowdown, comment = "close short", alert_message = "close short")
strategy.close("re-long", when = slowdown, comment = "close re-long", alert_message = "close re-long")
strategy.close("re-short", when = slowdown, comment = "close re-short", alert_message = "close re-short")
strategy.close("sculp-long", when = slowdown, comment = "close sculp-long", alert_message = "close sculp-long")
strategy.close("sculp-short", when = slowdown, comment = "close sculp-short", alert_message = "close sculp-short")
if (slowdown)
if (hist >= 0)
on_long := false
else
on_short := false
plotchar(slowdown, "close", "")
plotchar(reenter, "reenter", "")
plotchar(reenter_cnt, "reenter count", "")
plotchar(sculp, "sculp", "")
plotchar(sculp_cnt, "sculp count", "")