পরিমাণগত জিগজ্যাগ কৌশল

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

img

সারসংক্ষেপ

এই কৌশলটির উদ্দেশ্য হ'ল মোমবাতি রঙ, ভলিউম এবং এলোমেলো পদ্ধতির মতো বিভিন্ন ইনপুট ভেরিয়েবলগুলি সাইনস ওয়েভের আকারে দামের পরিবর্তনগুলি পূর্বাভাস দেওয়ার জন্য ব্যবহার করা যেতে পারে কিনা তা পরীক্ষা করা। কৌশলটি এই ভেরিয়েবলগুলিকে সাইনস ওয়েভের আকারে রূপান্তর করে। যখন শিখর বা নীচে সেট সংখ্যক বার পৌঁছে যায়, তখন কেনা বা বিক্রয় সিদ্ধান্ত নেওয়া হয়।

কৌশল নীতি

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

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

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

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

সুতরাং এই কৌশলটির একটি সুবিধা হ'ল "বাজারটি পূর্বাভাসযোগ্য" এই ভুল ধারণাটি অস্বীকার করা। বাজারের পরিবর্তনশীলগুলি দামগুলিকে প্রভাবিত করে, তবে তারা অনির্দেশ্য, এবং এলোমেলো সিদ্ধান্তগুলিও অনুরূপ ফলাফল পেতে পারে।

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

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

এছাড়াও, সাইনস ওয়েভ পূর্বাভাস তত্ত্ব নিজেই ভুল। বাজার পরিবর্তনগুলি সহজ চক্রীয়তার সাথে সিমুলেট করার জন্য খুব জটিল। সুতরাং এই কৌশলটি প্রকৃত ট্রেডিংয়ের জন্য ব্যবহার করা যায় না।

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

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

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

  1. নমুনা স্থান প্রসারিত করতে তরঙ্গ রূপান্তরিত আরো ভেরিয়েবল বৃদ্ধি
  2. সেরা ট্রাভার্সাল সমন্বয় খুঁজে পেতে তিনটি বর্তমান তরঙ্গ একত্রিত করুন
  3. স্টপ লস পদ্ধতি সেট করুন, যেমন শতাংশ স্টপ লস
  4. অনুকূল পরামিতি খুঁজে পেতে প্রবেশ এবং প্রস্থান লজিক এবং ব্যাকটেস্ট অপ্টিমাইজ করুন

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

বিভিন্ন সাইনস তরঙ্গ পরীক্ষা করে, এই কৌশলটি বাজারের অনির্দেশ্য প্রকৃতিকে চিত্রিত করে। একই সময়ে, এটি পূর্বাভাস দেওয়ার জন্য তরঙ্গ চক্র ব্যবহার করার ভুল তত্ত্বকে অস্বীকার করে।

পরবর্তী, কৌশলটির ব্যবহারিকতা ভেরিয়েবল বৃদ্ধি, তরঙ্গ রূপগুলি একত্রিত করে, স্টপ সেট করে এবং পরামিতিগুলি অনুকূল করে উন্নত করা যেতে পারে। তবে মূল বিষয়টি এখনও বুঝতে হবে যে বাজারের পরিবর্তনগুলি জটিল এবং অনির্দেশ্য। আমাদের যা করতে হবে তা হ'ল বাজারটি পূর্বাভাস দেওয়ার পরিবর্তে এলোমেলো ঝুঁকি হ্রাস করা।


/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
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/
// © Gentleman-Goat

//@version=5
strategy("Sine Wave Theory",overlay=false, precision = 2, initial_capital = 1000,shorttitle = "SINE_W_T")

var bar_change_wave_direction = input.int(defval=1,title="Starting Wave Direction",group="Bar Change")
bar_change_sine_wave_number = input.int(defval=28,title="Sine Wave #",group="Bar Change")
bar_change_sine_wave_res = input.timeframe(defval="D",title="Resolution",group="Bar Change")
bar_change_trade = input.bool(defval=true,title="Trade",group="Bar Change")

var volume_wave_direction = input.int(defval=1,title="Starting Wave Direction",group="Volume")
avg_volume_length = input.int(7,title="Lookback Length",group="Volume")
volume_sine_wave_number = input.int(defval=28,title="Sine Wave #",group="Volume")
volume_sine_wave_res = input.timeframe(defval="D",title="Resolution",group="Volume")
volume_trade = input.bool(defval=false,title="Trade",group="Volume")

var coin_flip_wave_direction = input.int(defval=1,title="Starting Wave Direction",group="Coin Flip")
coin_flip_sine_wave_number = input.int(defval=28,title="Sine Wave #",group="Coin Flip")
coin_flip_seed = input.int(defval=1,title="Seed #",group="Coin Flip")
coin_flip_trade = input.bool(defval=false,title="Trade",group="Coin Flip")

avg_volume = ta.sma(volume,avg_volume_length)

//Green or Red Candle
bar_color = close>open ? color.green : color.red
bar_color_time_adj = request.security(syminfo.tickerid, bar_change_sine_wave_res, bar_color)

//Above or Below Average
volume_state = (volume>avg_volume) ? color.blue : color.purple
volume_state_time_adj = request.security(syminfo.tickerid, volume_sine_wave_res, volume_state)
 
//Coinflip
coin_flip = math.random(0,100,coin_flip_seed)>=50 ? color.teal : color.yellow

var bar_change_wave_count = 0
var volume_wave_count = 0
var coin_flip_wave_count = 0

//Wave Counters
if(volume_state_time_adj[1] != volume_state_time_adj)
    volume_wave_count := volume_wave_count + volume_wave_direction

if(bar_color_time_adj[1] != bar_color_time_adj)
    bar_change_wave_count := bar_change_wave_count + bar_change_wave_direction

if(coin_flip[1] != coin_flip)
    coin_flip_wave_count := coin_flip_wave_count + coin_flip_wave_direction

//Direction changers
if(math.abs(bar_change_wave_count) == bar_change_sine_wave_number and bar_color_time_adj[1] != bar_color_time_adj)
    bar_change_wave_direction := bar_change_wave_direction * -1

if(math.abs(volume_wave_count) == volume_sine_wave_number and volume_state_time_adj[1] != volume_state_time_adj)
    volume_wave_direction := volume_wave_direction * -1

if(math.abs(coin_flip_wave_count) == coin_flip_sine_wave_number and coin_flip[1] != coin_flip)
    coin_flip_wave_direction := coin_flip_wave_direction * -1

//Entry positions
if(bar_change_wave_count==bar_change_sine_wave_number and bar_change_trade==true)
    strategy.entry(id="short",direction=strategy.short)
if(bar_change_wave_count==bar_change_sine_wave_number*-1 and bar_change_trade==true)
    strategy.entry(id="long",direction=strategy.long)

if(volume_wave_count==volume_sine_wave_number and volume_trade==true)
    strategy.entry(id="short-volume",direction=strategy.short)
if(volume_wave_count==volume_sine_wave_number*-1 and volume_trade==true)
    strategy.entry(id="long-volume",direction=strategy.long)

if(coin_flip_wave_count==coin_flip_sine_wave_number and coin_flip_trade==true)
    strategy.entry(id="short-coinflip",direction=strategy.short)
if(coin_flip_wave_count==coin_flip_sine_wave_number*-1 and coin_flip_trade==true)
    strategy.entry(id="long-coinflip",direction=strategy.long)

hline(0, title='Center', color=color.white, linestyle=hline.style_dashed, linewidth=1)
plot(bar_change_wave_count,title="Bar Change", color=bar_color, linewidth=2)
plot(volume_wave_count,title="Volume Average Change", color=volume_state, linewidth=2)
plot(coin_flip_wave_count,title="Coin Flip Change", color=coin_flip, linewidth=2)


আরো