
এই কৌশলটি স্বয়ংক্রিয়ভাবে স্টপ লস এবং স্টপ প্রাইস সেট করার জন্য সিলুয়েট সূচক ব্যবহার করে। এটি ট্রেন্ডিং পরিস্থিতিতে আরও বেশি মুনাফা অর্জন করতে পারে এবং একই সাথে ঝড়ের পরিস্থিতিতে ক্ষতি হ্রাস করতে পারে।
এই কৌশলটি মূলত সিলিং সূচকগুলির উপর ভিত্তি করে মূল্য নির্ধারণ করে। সিলিং সূচকগুলি বাজারের সম্ভাব্য সমর্থন এবং প্রতিরোধের প্রতিফলন করতে পারে। এই কৌশলটি স্টপ লস এবং স্টপ প্রাইস হিসাবে সিলিং সূচকের বিভিন্ন স্তর ব্যবহার করে।
বিশেষত, কৌশলটি উচ্চ এবং নিম্ন পয়েন্টগুলি অনুসরণ করে এবং 10 টি স্ট্রিং মূল্যের পরিসীমা গণনা করে। তারপর কনফিগারেশন অনুযায়ী একটি স্ট্রিং মূল্য নির্বাচন করে একটি প্রবেশের কৌশল হিসাবে। যখন দামটি এই স্ট্রিংটি ভেঙে দেয়, তখন কনফিগারেশন অনুযায়ী লিভারেজটি আরও বেশি করে দেওয়া হয়। একই সাথে, একটি স্টপ-আপ মূল্যও সেট করা হয়, যা গড় প্রবেশের মূল্যের সমান এবং কনফিগারেশনের স্টপ-আপ শতাংশের সমান।
অর্ডার দেওয়ার পরে, কৌশলটি সর্বশেষ ক্লিভের দামটি ট্র্যাক করে চলেছে। যখন কম ক্লিভ আসে, কৌশলটি মূল অর্ডারটি বাতিল করে, পুনরায় অর্ডার করে এবং একটি চলমান স্টপ লস অর্জন করে। যখন দাম বৃদ্ধি বন্ধের মূল্যকে ভেঙে দেয়, তখন কৌশলটি পজিশন বন্ধ করে দেয়।
এই কৌশলটির সবচেয়ে বড় সুবিধা হল যে এটি গতিশীলভাবে স্টপ ও স্টপ-অফ দামগুলিকে সামঞ্জস্য করতে পারে, বিশেষত ট্রেন্ডিংয়ের জন্য। এর নিম্নলিখিত বৈশিষ্ট্য রয়েছেঃ
ট্রেন্ডিংয়ের সময় আরও বেশি মুনাফা অর্জন করতে সক্ষম হবেন। গড় প্রবেশ মূল্যের উপর ভিত্তি করে স্টপ সেটআপের সাথে, আপনি ট্রেন্ডিংয়ের ক্ষেত্রে সর্বাধিক অংশগ্রহণ করতে পারেন এবং উচ্চতর লাভ অর্জন করতে পারেন।
যখন দাম আবার নিম্নতর সেল রেঞ্জ স্পর্শ করে, সময়মতো ক্ষতি বন্ধ করে দেয়, ঝড়ের মধ্যে আটকে যাওয়া এড়াতে পারে।
পজিশনিং সমর্থন পজিশনিং সেটিং কনফিগার করা হয়েছে, যখন দাম একটি নির্দিষ্ট পরিমাণে নেমে যায়, তখন পজিশনের স্থান বাড়ানো হয়, গড় পজিশন হোল্ডিং খরচ কমাতে
সহজ অপারেশন. শুধুমাত্র একটি ভাল সেল এবং স্টপ অনুপাত কনফিগার করা প্রয়োজন, পুরো লেনদেন স্বয়ংক্রিয়ভাবে সম্পন্ন করা হয়, কোন ম্যানুয়াল অপারেশন প্রয়োজন.
এই কৌশলটির কিছু ঝুঁকিও রয়েছে, যার মধ্যে রয়েছেঃ
ঘূর্ণিঝড়ের সময় পুনরাবৃত্ত ক্ষতি বন্ধের ঝুঁকিতে রয়েছে। যখন কোনও ক্রস বা ঘূর্ণিঝড়ের ঘটনা ঘটে তখন দামগুলি একাধিকবার উপরে এবং নীচে যেতে পারে, যা ট্রেডিং ফ্রিকোয়েন্সি এবং প্রক্রিয়াজাতকরণের ব্যয় বাড়িয়ে দেয়।
কোন স্টপ লস সেট নেই। আরো লাভের জন্য, কৌশলটি স্টপ লস সেট করেনি। যদি কোনও গুরুত্বপূর্ণ বিপর্যয় ঘটে তবে বিপুল ক্ষতির মুখোমুখি হতে পারে।
আমানতের সংখ্যা এবং পরিমাণের কোন সীমাবদ্ধতা নেই। একাধিক আমানত নেওয়ার ফলে ক্ষতি আরও বাড়তে পারে।
সমাধানঃ
এই কৌশলটি আরও অনেক উন্নতি করতে পারে, বিশেষ করে নিম্নলিখিত দিকগুলি থেকেঃ
অন্যান্য সূচক সংমিশ্রণ ব্যবহার করে ভর্তি নিশ্চিত করুন। ভর্তির শর্তে ইএমএ, এমএসিডি ইত্যাদি সূচকগুলির নিশ্চিতকরণ অন্তর্ভুক্ত করা যেতে পারে, যাতে ভূমিকম্পের পরিস্থিতিতে ধরা না পড়ে।
স্টপ ম্যানেজমেন্টে যোগদান করুন। স্থায়ী স্টপ বা ট্র্যাকিং স্টপ কনফিগার করা, চরম পরিস্থিতিতে বিশাল ক্ষতি এড়াতে পারে।
অপ্টিমাইজড পজিশনিং লজিক। নির্দিষ্ট বাজারের অবস্থার উপর ভিত্তি করে, পজিশনিংয়ের দামের পরিসীমা এবং সংখ্যাটি অপ্টিমাইজ করা যায়। অতিরিক্ত পজিশনিং এড়ানো যায়।
মেশিন লার্নিং অ্যালগরিদমের সাথে মিলিত। উদাহরণস্বরূপ, এলএসটিএম এর মতো অ্যালগরিদম ব্যবহার করে সম্ভাব্য দামের গতি এবং সমর্থন প্রতিরোধের পূর্বাভাস দেওয়া।
সামগ্রিকভাবে, এই কৌশলটি ট্রেন্ড ট্রেসিংয়ের জন্য উপযুক্ত। এটি স্টপ লস মূল্যের গতিশীল সমন্বয় দ্বারা অতিরিক্ত মুনাফা অর্জন করতে পারে। তবে, এর সাথে কিছু ঝুঁকিও রয়েছে যা আরও জটিল বাজার পরিবেশের সাথে খাপ খাইয়ে নেওয়ার জন্য অন্যান্য প্রক্রিয়াগুলির সাথে মিলিত হয়ে অপ্টিমাইজেশন এবং উন্নতি করা দরকার।
/*backtest
start: 2024-01-06 00:00:00
end: 2024-02-05 00:00:00
period: 1h
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/
// © CryptoRox
//@version=4
//Paste the line below in your alerts to run the built-in commands.
//{{strategy.order.alert_message}}
strategy(title="Fibs limit only", shorttitle="Strategy", overlay=true, precision=8, pyramiding=1000, commission_type=strategy.commission.percent, commission_value=0.04)
//Settings
testing = input(false, "Live")
//Use epochconverter or something similar to get the current timestamp.
starttime = input(1600976975, "Start Timestamp") * 1000
//Wait XX seconds from that timestamp before the strategy starts looking for an entry.
seconds = input(60, "Start Delay") * 1000
testPeriod = true
leverage = input(1, "Leverage")
tp = input(1.0, "Take Profit %") / leverage
dca = input(-1.0, "DCA when < %") / leverage *-1
fibEntry = input("1", "Entry Level", options=["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"])
//Strategy Calls
equity = strategy.equity
avg = strategy.position_avg_price
symbol = syminfo.tickerid
openTrades = strategy.opentrades
closedTrades = strategy.closedtrades
size = strategy.position_size
//Fibs
lentt = input(60, "Pivot Length")
h = highest(lentt)
h1 = dev(h, lentt) ? na : h
hpivot = fixnan(h1)
l = lowest(lentt)
l1 = dev(l, lentt) ? na : l
lpivot = fixnan(l1)
z = 400
p_offset= 2
transp = 60
a=(lowest(z)+highest(z))/2
b=lowest(z)
c=highest(z)
fib0 = (((hpivot - lpivot)) + lpivot)
fib1 = (((hpivot - lpivot)*.21) + lpivot)
fib2 = (((hpivot - lpivot)*.3) + lpivot)
fib3 = (((hpivot - lpivot)*.5) + lpivot)
fib4 = (((hpivot - lpivot)*.62) + lpivot)
fib5 = (((hpivot - lpivot)*.7) + lpivot)
fib6 = (((hpivot - lpivot)* 1.00) + lpivot)
fib7 = (((hpivot - lpivot)* 1.27) + lpivot)
fib8 = (((hpivot - lpivot)* 2) + lpivot)
fib9 = (((hpivot - lpivot)* -.27) + lpivot)
fib10 = (((hpivot - lpivot)* -1) + lpivot)
notna = nz(fib10[60])
entry = 0.0
if fibEntry == "1"
entry := fib10
if fibEntry == "2"
entry := fib9
if fibEntry == "3"
entry := fib0
if fibEntry == "4"
entry := fib1
if fibEntry == "5"
entry := fib2
if fibEntry == "6"
entry := fib3
if fibEntry == "7"
entry := fib4
if fibEntry == "8"
entry := fib5
if fibEntry == "9"
entry := fib6
if fibEntry == "10"
entry := fib7
profit = avg+avg*(tp/100)
pause = 0
pause := nz(pause[1])
paused = time < pause
fill = 0.0
fill := nz(fill[1])
count = 0.0
count := nz(fill[1])
filled = count > 0 ? entry > fill-fill/100*dca : 0
signal = testPeriod and notna and not paused and not filled ? 1 : 0
neworder = crossover(signal, signal[1])
moveorder = entry != entry[1] and signal and not neworder ? true : false
cancelorder = crossunder(signal, signal[1]) and not paused
filledorder = crossunder(low[1], entry[1]) and signal[1]
last_profit = 0.0
last_profit := nz(last_profit[1])
if neworder and signal
strategy.order("New", 1, 0.0001, alert_message='New Order|e=binancefuturestestnet s=btcusdt b=long q=0.0011 fp=' + tostring(entry))
if moveorder
strategy.order("Move", 1, 0.0001, alert_message='Move Order|e=binancefuturestestnet s=btcusdt b=long c=order|e=binancefuturestestnet s=btcusdt b=long q=0.0011 fp=' + tostring(entry))
if filledorder and size < 1
fill := entry
count := count+1
pause := time + 60000
p = close+close*(tp/100)
strategy.entry("Filled", 1, 1, alert_message='Long Filled|e=binancefuturestestnet s=btcusdt b=short c=order|delay=1|e=binancefuturestestnet s=btcusdt b=long c=position q=100% ro=1 fp=' + tostring(p))
if filledorder and size >= 1
fill := entry
count := count+1
pause := time + 60000
strategy.entry("Filled", 1, 1, alert_message='Long Filled|e=binancefuturestestnet s=btcusdt b=short c=order|delay=1|e=binancefuturestestnet s=btcusdt b=long c=position q=100% ro=1 fp=' + tostring(profit))
if cancelorder and not filledorder
pause := time + 60000
strategy.order("Cancel", 1, 0.0001, alert_message='Cancel Order|e=binancefuturestestnet s=btcusdt b=long c=order')
if filledorder
last_profit := profit
closeit = crossover(high, profit) and size >= 1
if closeit
strategy.entry("Close ALL", 0, 0, alert_message='Profit')
count := 0
fill := 0.0
last_profit := 0.0
//Plots
bottom = signal ? color.green : filled ? color.red : color.white
plot(entry, "Entry", bottom)