উইলিয়ামস অ্যালিগেটর স্প্রেড ট্রেডিং কৌশল


সৃষ্টির তারিখ: 2023-09-25 17:42:27 অবশেষে সংশোধন করুন: 2023-09-25 17:42:27
অনুলিপি: 0 ক্লিকের সংখ্যা: 1616
1
ফোকাস
1617
অনুসারী

ওভারভিউ

এই কৌশলটি বিল উইলিয়ামসের স্কাল্পিং সূচকের উপর ভিত্তি করে তৈরি করা হয়েছে, কিন্তু অন্য একটি মূল্য ইনপুট ব্যবহার করে। এটি একটি শর্ট লাইন স্কাল্পিং কৌশল যা 1 মিনিট থেকে 5 মিনিটের সময় ফ্রেমে কাজ করে।

কৌশল নীতি

এই কৌশলটির প্রধান ট্রেডিং নীতিগুলি হলঃ

  1. দামের ইনপুট হিসেবে স্ট্যান্ডার্ড স্ট্রিংয়ের পরিবর্তে হেইকেন আশি স্ট্রিং ব্যবহার করুন। হেইকেন আশি বাজারের শব্দকে ফিল্টার করতে এবং প্রবণতা সনাক্ত করতে পারে।

  2. বিল উইলিয়ামস মাছ ধরার সূচক থেকে তিনটি গড় লাইন প্রয়োগ করুনঃ নিম্নাংশ লাইন, দাঁত লাইন, এবং ঠোঁট লাইন। এগুলি চলমান গড়ের মতো এবং প্রবণতার দিক নির্ধারণ করতে পারে।

  3. যখন তিনটি সমান্তরাল রেখা নিম্নতম, দাঁত মধ্যম এবং ঠোঁট সর্বোচ্চ হিসাবে সাজানো হয়, তখন এটি একটি মাল্টিহেড প্রবণতা নির্দেশ করে। যখন তিনটি সমান্তরাল রেখা নিম্নতম, দাঁত মধ্যম এবং ঠোঁট সর্বনিম্ন হিসাবে সাজানো হয়, তখন এটি খালি মাথা প্রবণতা নির্দেশ করে।

  4. হেইকেন আশি (Heiken Ashi) এর মতে, একটি বস্তুর দিকনির্দেশনা এবং তার মাছ ধরার রেখার বিন্যাস অনুযায়ী প্রবেশের সিদ্ধান্ত নেওয়া হয়। একটি বস্তুর উপরে এবং তার মাছ ধরার রেখার বিন্যাস অনুসারে, এটি বেশি দেখা যায়। একটি বস্তুর নিচে এবং তার মাছ ধরার রেখার বিন্যাস অনুসারে, এটি খালি দেখা যায়।

  5. যখন মাছ ধরার লাইনের ক্রম পরিবর্তিত হয়, তখন প্রবণতা বিপরীত হয় এবং সময়মতো থামানো উচিত।

  6. স্থির স্টপ, স্টপ লস পয়েন্ট সেট করে ঝুঁকি ব্যবস্থাপনা। প্রতিটি ক্ষতি নিয়ন্ত্রণের জন্য টার্গেট লভ্যাংশ, স্টপ লস পয়েন্ট এবং ট্র্যাকিং স্টপ।

এই কৌশলটি একটি দ্বৈত ফিল্টার যুক্ত করে, যা প্রবণতা সনাক্তকরণের জন্য হেইকেন আশি এবং বিপরীত দিকের জন্য ফিশার লাইন ব্যবহার করে, একটি উচ্চ-সম্ভাব্য সংক্ষিপ্ত লাইন ট্রেডিং কৌশল গঠন করে।

সামর্থ্য বিশ্লেষণ

এই কৌশলটির প্রধান সুবিধাগুলি হলঃ

  1. ডাবল ইন্ডিকেটর ফিল্টারিং মিথ্যা সংকেত কমাতে পারে। হেইকেন আশি এবং ফিশার লাইন সংমিশ্রণ সংকেত মান উন্নত করতে পারে।

  2. স্পষ্ট এবং স্বজ্ঞাত প্রবণতা বিচার করুন। মাছ ধরার লাইনের বিন্যাসটি স্পষ্টভাবে নির্ভরযোগ্য, কোনও অস্পষ্টতা তৈরি করে না।

  3. কার্যকরী শর্ট লাইন ট্রেডিং ক্যাপচার। 1 মিনিট থেকে 5 মিনিটের সময়কালের জন্য উপযুক্ত স্কাল্পিং ট্রেডিং।

  4. সহজ প্যারামিটার সেটিং. জটিল অপ্টিমাইজেশান প্রয়োজন নেই, অল্প সংখ্যক প্যারামিটার ব্যবহার করা যেতে পারে।

  5. কঠোর ঝুঁকি ব্যবস্থাপনা। স্টপ লস পয়েন্ট ব্যবহার করে প্রতিটি ক্ষতি নিয়ন্ত্রণ করুন।

  6. স্পষ্ট প্রবেশ ও প্রস্থান ব্যবস্থা মাছ ধরার লাইনের বিন্যাস পরিবর্তনের উপর ভিত্তি করে পজিশন খোলার

  7. সহজেই প্রতিলিপি করা যায়। এমনকি নতুন ট্রেডাররাও এই কৌশলটি ব্যবহার করতে পারেন।

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

এই কৌশলটির প্রধান ঝুঁকিগুলো হলঃ

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

  2. ঝড়ের ঝুঁকি

  3. ওভার অপ্টিমাইজেশনের ঝুঁকি। অপ্রয়োজনীয় প্যারামিটার অপ্টিমাইজেশনের ফলে কার্ভটি ওভারফিট হতে পারে।

  4. ইন্ডিকেটর ব্যর্থতার ঝুঁকি। বাজারের চরম পরিস্থিতিতে মাছ ধরার লাইন সম্পূর্ণরূপে ব্যর্থ হতে পারে।

  5. স্টপ লস-এর ঝুঁকি রয়েছে। দ্রুত লস-এর ফলে স্টপ লস-এর ক্ষতি হতে পারে।

  6. ট্রেডিং ফ্রিকোয়েন্সির ঝুঁকি বেশি। উচ্চ ফ্রিকোয়েন্সির ট্রেডিং ট্রেডিং খরচ এবং অপ্রয়োজনীয় স্লাইড পয়েন্ট ক্ষতি বাড়ায়।

Expectancy Expectancy পরিচালনা, অপ্টিমাইজ করা স্টপ লস কৌশল, ট্রেডিং ফ্রিকোয়েন্সি নিয়ন্ত্রণ ইত্যাদির মাধ্যমে উপরের ঝুঁকিগুলি প্রশমিত করা যেতে পারে।

অপ্টিমাইজেশান দিক

এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে উন্নত করা যেতে পারেঃ

  1. অন্যান্য সূচকগুলির সাথে সংহত করে সংকেত ফিল্টার করুন, বিজয়ী হার বাড়ান। যেমন RSI এর মতো শক্তিশালী সূচকগুলির সাথে সংযুক্ত।

  2. একক ক্ষতির ঝুঁকি নিয়ন্ত্রণের জন্য ATR গতিশীল স্টপ সেট করুন

  3. পজিশন ম্যানেজমেন্ট মডিউল যুক্ত করুন, প্রতিটি পজিশন খোলার আকার অনুকূলিত করুন। প্রবণতা আরও পরিষ্কার হলে পজিশন বাড়ানো যেতে পারে।

  4. ভর্তির সঠিকতা বাড়ানোর জন্য গ্রাফিকাল আকৃতির মতো প্রযুক্তিগত বিশ্লেষণ পদ্ধতির সাথে মিলিত হয়েছে।

  5. বাজারের ধরন অনুযায়ী (যেমন শেয়ার, ফরেক্স ইত্যাদি) প্যারামিটার অপ্টিমাইজ করা হয়েছে যাতে এটি এই জাতের জন্য আরও উপযুক্ত হয়।

  6. মেশিন লার্নিং মডিউল যোগ করা হয়েছে যাতে প্যারামিটারগুলি স্বনির্ধারিতভাবে অপ্টিমাইজ করা যায়।

  7. Expectancy win-rate গণনা করুন এবং স্টপ-ডাউন-লস অনুপাতটি অপ্টিমাইজ করুন।

ক্রমাগত উন্নতির মাধ্যমে, এই কৌশলটি একটি স্থিতিশীল সংক্ষিপ্ত লাইন ট্রেডিং কৌশল হতে পারে।

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2022-09-18 00:00:00
end: 2023-09-24 00:00:00
period: 4d
basePeriod: 1d
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/
// © 03.freeman
//Scalping strategy based on Bill Williams Alligator technique but applied to heikin ashi candles
//This strategy has to be applied to standard candles and low time frames (1min to 5min)
//@version=4
strategy("Bill Williams Alligator improved", shorttitle="Scalping alligator",overlay=true)
//source = input(close)
useHA = input (true,"Use heikin ashi candle?")

// ----------MA calculation - ChartArt-------------
smoothinput = input(1, minval=1, maxval=5, title='Moving Average Calculation: (1=SMA), (2=EMA), (3=WMA), (4=Linear), (5=VWMA)')

calc_ma(src,l) => 
    smoothinput == 1 ? sma(src, l):smoothinput == 2 ? ema(src, l):smoothinput == 3 ? wma(src, l):smoothinput == 4 ? linreg(src, l,0):smoothinput == 5 ? vwma(src,l):na
//----------------------------------------------

heikinashi_close = security(heikinashi(syminfo.tickerid), timeframe.period, close)
heikinashi_open = security(heikinashi(syminfo.tickerid), timeframe.period, open)
heikinashi_hl2 = security(heikinashi(syminfo.tickerid), timeframe.period, hl2)

direzione=heikinashi_close>heikinashi_open and heikinashi_close[1]>heikinashi_open[1]? 1 : heikinashi_close<heikinashi_open and heikinashi_close[1]<heikinashi_open[1]? -1 : 0

jawLength = input(13, minval=1, title="Jaw Length")
teethLength = input(8, minval=1, title="Teeth Length")
lipsLength = input(5, minval=1, title="Lips Length")
jawOffset = input(8, title="Jaw Offset")
teethOffset = input(5, title="Teeth Offset")
lipsOffset = input(3, title="Lips Offset")
jaw = calc_ma(heikinashi_hl2, jawLength)
teeth = calc_ma(heikinashi_hl2, teethLength)
lips = calc_ma(heikinashi_hl2, lipsLength)
plot(jaw, title="jaw",offset = jawOffset, color=#3BB3E4)
plot(teeth, title="teeth",offset = teethOffset, color=#FF006E)
plot(lips, title="lips",offset = lipsOffset, color=#36C711)

longCondition = direzione[0]==1 and jaw<teeth and jaw<lips and teeth<lips 
shortCondition = direzione[0]==-1 and jaw>teeth and jaw>lips and teeth>lips


//  Strategy: (Thanks to JayRogers)
// === STRATEGY RELATED INPUTS ===
//tradeInvert     = input(defval = false, title = "Invert Trade Direction?")
// the risk management inputs
inpTakeProfit   = input(defval = 0, title = "Take Profit Points", minval = 0)
inpStopLoss     = input(defval = 0, title = "Stop Loss Points", minval = 0)
inpTrailStop    = input(defval = 0, title = "Trailing Stop Loss Points", minval = 0)
inpTrailOffset  = input(defval = 0, title = "Trailing Stop Loss Offset Points", minval = 0)

// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na
useTrailStop    = inpTrailStop   >= 1 ? inpTrailStop   : na
useTrailOffset  = inpTrailOffset >= 1 ? inpTrailOffset : na

// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() => direzione[0]==1 and jaw<teeth and jaw<lips and teeth<lips // functions can be used to wrap up and work out complex conditions
exitLong() => jaw>teeth or jaw>lips or teeth>lips
strategy.entry(id = "Buy", long = true, when = enterLong() )    // use function or simple condition to decide when to get in
strategy.close(id = "Buy", when = exitLong() )                  // ...and when to get out

// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort() => direzione[0]==-1 and jaw>teeth and jaw>lips and teeth>lips
exitShort() => jaw<teeth or jaw<lips or teeth<lips
strategy.entry(id = "Sell", long = false, when = enterShort())
strategy.close(id = "Sell", when = exitShort() )

// === STRATEGY RISK MANAGEMENT EXECUTION ===
// finally, make use of all the earlier values we got prepped
strategy.exit("Exit Buy", from_entry = "Buy", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
strategy.exit("Exit Sell", from_entry = "Sell", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)

// === Backtesting Dates === thanks to Trost

testPeriodSwitch = input(false, "Custom Backtesting Dates")
testStartYear = input(2020, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testStopHour = input(23, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStopHour,0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
isPeriod = true
// === /END

if not isPeriod
    strategy.cancel_all()
    strategy.close_all()