রোবট হোয়াইট বক্স আইসবার্গ কৌশল

লেখক:চাওঝাং, তারিখ: ২০২৩-০৯-২৬ ২১ঃ২২ঃ২১
ট্যাগঃ

সারসংক্ষেপ

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

কৌশলগত যুক্তি

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

লং এবং শর্ট অর্ডারের সংখ্যা ধীরে ধীরে বৃদ্ধি পায়। অপেক্ষমান অর্ডার সেট করে, এটি ব্যাচ খোলার অবস্থানগুলি বাস্তবায়ন করে। উদাহরণস্বরূপ, এন্ট্রি লাইন 1 1 চুক্তি দীর্ঘ / সংক্ষিপ্ত খোলার ট্রিগার করে, এন্ট্রি লাইন 2 1 চুক্তি যোগ করে এবং এন্ট্রি লাইন 3 অন্য 1 চুক্তি যোগ করে। এটি এন্ট্রি খরচ বৈচিত্র্য এবং একটি একক আদেশের ঝুঁকি হ্রাস করতে সাহায্য করে।

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

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

সুবিধা বিশ্লেষণ

এই কৌশলটির সুবিধাগুলো হল:

  1. প্রবণতা দিক নির্ধারণের জন্য চলমান গড় ব্যবহার করা স্পষ্ট এবং কার্যকর। চলমান গড় কার্যকরভাবে বাজার গোলমাল ফিল্টার করতে পারে এবং প্রধান প্রবণতা দিক নির্ধারণ করতে পারে।

  2. একাধিক এন্ট্রি লাইন ট্রেন্ড রান ব্যবহারকে সর্বাধিক করে তোলে। একাধিক এন্ট্রি লাইন সহ, এটি প্রবণতার পুরো রান পরিসীমা যতটা সম্ভব ক্যাপচার করতে পারে এবং লাভের স্থান প্রসারিত করতে পারে।

  3. ব্যাচে পজিশন খোলার ফলে একক অর্ডারের ঝুঁকি হ্রাস পায়। একাধিকবার বাজারে প্রবেশের ফলে অর্ডারের ঝুঁকি বৈচিত্র্যময় হয় এবং গড় হোল্ডিং খরচ হ্রাস পায়।

  4. হেজিং স্টপ লস প্রক্রিয়া কার্যকরভাবে ঝুঁকি নিয়ন্ত্রণ করে। হেজিং স্টপ লস অর্ডার দ্রুত স্টপ লস উপলব্ধি করে যখন দাম আবার চলমান গড়কে ভেঙে দেয়, বিশাল ক্ষতি এড়ায়।

  5. কৌশল যুক্তি স্পষ্ট এবং সহজেই বোঝা যায়, নমনীয় পরামিতি সেটিং যা বিভিন্ন বাজারের জন্য অপ্টিমাইজ করা যেতে পারে।

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

এই কৌশল কিছু ঝুঁকি আছেঃ

  1. চলমান গড় থেকে ভুল সংকেতের সম্ভাবনা। চলমান গড়গুলির বিলম্ব রয়েছে এবং ভুল সংকেত দিতে পারে।

  2. প্রবণতা বিপরীত ঝুঁকি ক্ষতির দিকে পরিচালিত করে। কৌশল একটি প্রবণতা অনুমান করে, তাই প্রবণতা বিপরীত বিপুল ক্ষতি হতে পারে।

  3. খুব ঘন ঘন এন্ট্রি লাইন ট্রেডিং ফ্রিকোয়েন্সি এবং স্লিপিং খরচ বৃদ্ধি করে।

  4. প্যাচ খোলার পজিশন যখন পজিশনের আকার খুব বড় হয় তখন ঘনত্বের ঝুঁকি বাড়ায়।

  5. ভুল স্টপ লস পয়েন্ট সেটিংগুলি অকাল স্টপ লস বা স্টপ লস পয়েন্ট খুব ছোট হতে পারে।

সংশ্লিষ্ট ঝুঁকি ব্যবস্থাপনা ব্যবস্থাঃ

  1. চলমান গড় প্যারামিটারগুলি অপ্টিমাইজ করুন এবং উপযুক্ত সময়কাল নির্বাচন করুন।

  2. প্রবণতা বিপরীত হওয়ার সংকেত চিহ্নিত করতে এবং সময়মতো হ্রাস বন্ধ করতে মূল প্রযুক্তিগত সূচকগুলিতে মনোযোগ দিন।

  3. ট্রেডিং ফ্রিকোয়েন্সি কমাতে এন্ট্রি লাইনের মধ্যে দূরত্ব সামঞ্জস্য করুন।

  4. কনসেন্ট্রেশনের ঝুঁকি নিয়ন্ত্রণের জন্য অবস্থানের আকার এবং অনুপাত অনুকূল করা।

  5. স্টপ লস ঝুঁকি কমাতে স্টপ লস পয়েন্টগুলি ব্যাকটেস্ট এবং অপ্টিমাইজ করুন।

অপ্টিমাইজেশান নির্দেশাবলী

কৌশলটি নিম্নলিখিত দিক থেকে অপ্টিমাইজ করা যেতে পারেঃ

  1. প্রবণতা নির্ধারণের জন্য সর্বোত্তম পারফরম্যান্সের চলমান গড় সূচক খুঁজে পেতে বিভিন্ন চলমান গড় পরামিতি এবং ডেটা উত্স পরীক্ষা করুন।

  2. সর্বোত্তম পরামিতি খুঁজে পেতে দীর্ঘ এবং সংক্ষিপ্ত এন্ট্রি লাইনগুলির ব্যবধান দূরত্ব এবং অবস্থান আকার অনুপাত অনুকূল করুন।

  3. চলমান গড় থেকে ভুল সংকেত এড়াতে ফিল্টার শর্ত হিসাবে অন্যান্য সূচক যোগ করুন, যেমন এমএসিডি, আরএসআই ইত্যাদি।

  4. স্টপ লস লাইন অবস্থান অপ্টিমাইজ করুন, অথবা এটিআর এর উপর ভিত্তি করে গতিশীলভাবে স্টপ লস পয়েন্ট সেট করুন।

  5. সমস্ত পজিশন বন্ধ করার জন্য প্রবণতা বিপরীত সিদ্ধান্ত যোগ করুন।

  6. বিভিন্ন বাজারের সময়ের জন্য প্যারামিটার অপ্টিমাইজ করুন।

  7. অ্যাকাউন্ট ব্যবহারের শতাংশের উপর ভিত্তি করে অবস্থানের আকারের গতিশীল সমন্বয় যোগ করুন।

সংক্ষিপ্তসার

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


/*backtest
start: 2022-09-19 00:00:00
end: 2023-09-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=4
strategy(title = "Robot WhiteBox Iceberg", shorttitle = "Robot WhiteBox Iceberg", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)

//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
len = input(3, minval = 1, title = "MA Length")
s = input(defval = "7. OHLC4", options = ["1. Open", "2. High", "3. Low", "4. Close", "5. HL2", "6. HLC3", "7. OHLC4", "8. OC2", "9. PCMA"], title = "Data")
short3 = input(true, title = "short 3")
short2 = input(true, title = "short 2")
short1 = input(true, title = "short 1")
long1 = input(true, title = "long 1")
long2 = input(true, title = "long 2")
long3 = input(true, title = "long 3")
shortlevel3 = input(15.0, title = "Short line 3")
shortlevel2 = input(10.0, title = "Short line 2")
shortlevel1 = input(5.0, title = "Short line 1")
longlevel1 = input(-5.0, title = "Long line 1")
longlevel2 = input(-10.0, title = "Long line 2")
longlevel3 = input(-15.0, title = "Long line 3")
needoffset = input(true, title = "Offset")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Variables
lots = 0.0
size = strategy.position_size
mult = 1 / syminfo.mintick
needtime = true

//MA
oc2 = (open + close) / 2
pcma = (highest(high, len) + lowest(low, len)) / 2
src = s == "1. Open" ? open : s == "2. High" ? high : s == "3. Low" ? low : s == "4. Close" ? close : s == "5. HL2" ? hl2 : s == "6. HLC3" ? hlc3 : s == "7. OHLC4" ? ohlc4 : s == "8. OC2" ? oc2: close
sma = sma(src, len)
ma = s == "9. PCMA" ? round(pcma * mult) / mult : round(sma * mult) / mult

//Levels
longline1 = 0.0
longline2 = 0.0
longline3 = 0.0
shortline1 = 0.0
shortline2 = 0.0
shortline3 = 0.0
longline1 := long1 ? round(ma * ((100 + longlevel1) / 100) * mult) / mult : close
longline2 := lots[1] == 0 ? long2 ? round(ma * ((100 + longlevel2) / 100) * mult) / mult : close : longline2[1]
longline3 := lots[1] == 0 ? long3 ? round(ma * ((100 + longlevel3) / 100) * mult) / mult : close : longline3[1]
shortline1 := short1 ? round(ma * ((100 + shortlevel1) / 100) * mult) / mult : close
shortline2 := lots[1] == 0 ? short2 ? round(ma * ((100 + shortlevel2) / 100) * mult) / mult : close : shortline2[1]
shortline3 := lots[1] == 0 ? short3 ? round(ma * ((100 + shortlevel3) / 100) * mult) / mult : close : shortline3[1]

//Lines
colorlong1 = long1 ? color.lime : na
colorlong2 = long2 ? color.lime : na
colorlong3 = long3 ? color.lime : na
colorshort1 = short1 ? color.red : na
colorshort2 = short2 ? color.red : na
colorshort3 = short3 ? color.red : na
offset = needoffset ? 1 : 0
plot(shortline3, offset = offset, color = colorshort3, title = "Short line 3")
plot(shortline2, offset = offset, color = colorshort2, title = "Short line 2")
plot(shortline1, offset = offset, color = colorshort1, title = "Short line 1")
plot(ma, offset = offset, color = color.blue, title = "MA line")
plot(longline1, offset = offset, color = colorlong1, title = "Long line 1")
plot(longline2, offset = offset, color = colorlong2, title = "Long line 2")
plot(longline3, offset = offset, color = colorlong3, title = "Long line 3")

//Trading
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if ma > 0
    lots := round(size / lot)
    strategy.entry("L1", strategy.long, lot, limit = longline1, when = (lots == 0 and long1 and needtime))
    lots := round(size / lot)
    strategy.entry("L2", strategy.long, lot, limit = longline2, when = (lots <= 1 and long2 and needtime))
    lots := round(size / lot)
    strategy.entry("L3", strategy.long, lot, limit = longline3, when = (lots <= 2 and long3 and needtime))
    lots := round(size / lot)
    strategy.entry("S1", strategy.short, lot, limit = shortline1, when = (lots == 0 and short1 and needtime))
    lots := round(size / lot)
    strategy.entry("S2", strategy.short, lot, limit = shortline2, when = (lots >= -1 and short2 and needtime))
    lots := round(size / lot)
    strategy.entry("S3", strategy.short, lot, limit = shortline3, when = (lots >= -2 and short3 and needtime))
if size > 0
    strategy.entry("TPL", strategy.short, 0, limit = ma, when = needtime)
if size < 0
    strategy.entry("TPS", strategy.long, 0, limit = ma, when = needtime)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("L1")
    strategy.cancel("L2")
    strategy.cancel("L3")
    strategy.cancel("S1")
    strategy.cancel("S2")
    strategy.cancel("S3")
    strategy.cancel("TPL")
    strategy.cancel("TPS")

আরো