দুর্ঘটনাক্রমে, আমি ওপেন সোর্স লাভজনক ফরেক্স কৌশল ভাগ করছি। দুর্ঘটনাক্রমে, কারণ এটি খাঁটি শিক্ষামূলক উপাদান হওয়ার লক্ষ্য ছিল। কয়েক দিন আগে ট্রেডিংভিউ পাইনস্ক্রিপ্ট থেকে গতিশীল মানগুলির একটি খুব শক্তিশালী বৈশিষ্ট্য প্রকাশ করেছে যা এখন সতর্কতাগুলিতে পাস করার অনুমতি দেওয়া হচ্ছে। এবং ট্রেডিং কানেক্টরের জন্য ধন্যবাদ, তারা তাত্ক্ষণিকভাবে বিশ্বের যে কোনও ব্রোকারের এমটি 4 বা এমটি 5 প্ল্যাটফর্মে কার্যকর হতে পারে। সুতরাং হ্যাঁ - ট্রেডিং কানেক্টর সূচক এবং পণ্যগুলির সাথেও কাজ করে।
এই ইউরো ইউএসডি 6 ঘন্টা কৌশলটির যুক্তি খুব সহজ - এটি সাম্প্রতিকতম পিভট পয়েন্টের অধীনে স্টপ-লস সেট সহ স্টোকাস্টিক ক্রসওভারের উপর ভিত্তি করে। সতর্কতাগুলিতে গতিশীল মানগুলির অনুমোদনের কারণে অস্ত্রোপচারিক নির্ভুলতার সাথে স্টপ-লস সেট করা সম্ভব। ট্রেডিং কানেক্টরকেও এই গতিশীল মানগুলির সুবিধা নিতে আপগ্রেড করা হয়েছে এবং এটি এখন পূর্ব-গণিত স্টপ-লস, লাভ গ্রহণ, পাশাপাশি স্টপ এবং সীমা অর্ডার সহ বাণিজ্য সম্পাদন করতে সক্ষম করে।
ট্রেডিং কানেক্টরের আরেকটি নতুন বৈশিষ্ট্য হল পজিশনগুলি কেবলমাত্র আংশিকভাবে বন্ধ করা - তবে অবশ্যই ব্রোকার এটির অনুমতি দেয়। একটি পজিশনের প্রবেশের সময় trade_id নির্দিষ্ট করা দরকার, আংশিক বন্ধের সাথে আরও সতর্কতাগুলিতে উল্লেখ করা হয়। সতর্কতা সিনট্যাক্স এবং কার্যকারিতাগুলির বিশদ স্পেসিফিকেশন ট্রেডিং কানেক্টরের ওয়েবসাইটে পাওয়া যাবে। সতর্কতা বার্তাগুলিতে গতিশীল ভেরিয়েবলগুলি কীভাবে অন্তর্ভুক্ত করা যায় তা সতর্কতা শর্তে স্ক্রিপ্টের শেষের দিকে দেখা যায়)) কল।
কৌশলটি কমিশনকেও বিবেচনা করে।
স্লাইপিং ইচ্ছাকৃতভাবে 0 এ ছেড়ে দেওয়া হয়। ট্রেডিং কানেক্টরের 1 সেকেন্ডের বিতরণ সময়ের চেয়ে কম হওয়ার কারণে, স্লাইপিং কার্যত অস্তিত্বহীন। এটি বিশেষত যদি আপনি ভিপিএস সার্ভার ব্যবহার করেন তবে এটি অর্জন করা যেতে পারে, আপনার ব্রোকারদের সার্ভারের মতো একই ডেটাসেন্টারে হোস্ট করা হয়। আমি এই জাতীয় সেটআপ ব্যবহার করছি, এটি সম্ভব। ছোট স্লাইপিং এবং স্প্রেড ইতিমধ্যে কমিশন মানের মধ্যে অন্তর্ভুক্ত রয়েছে।
এই কৌশলটি NON-REPAINTING এবং NO TRAILING-STOP বা ট্রেডিংভিউ ব্যাকটেস্টারে ত্রুটিযুক্ত হিসাবে পরিচিত অন্য কোনও বৈশিষ্ট্য ব্যবহার করে না। এটি কি এই কৌশলটিকে বুলেটপ্রুফ এবং 100% সাফল্যের গ্যারান্টিযুক্ত করে তোলে? নরক না! ব্যাকটেস্টিংয়ের নং 1 নিয়মটি মনে রাখবেন - কোনও স্ক্রিপ্ট কতটা লাভজনক এবং সুন্দর দেখায় না কেন, এটি কেবল অতীত সম্পর্কে বলে। একই কৌশল ভবিষ্যতে অনুরূপ ফলাফল পাবে তার শূন্য গ্যারান্টি রয়েছে।
এই স্ক্রিপ্টটি স্টাডিতে রূপান্তর করতে যাতে সতর্কতা তৈরি করা যায়, 2 টি জিনিস করুনঃ
এই স্ক্রিপ্টটি শুধুমাত্র শিক্ষামূলক উদ্দেশ্যে তৈরি করা হয়েছে।
অবশ্যই এটি আর্থিক পরামর্শ নয়। যে কেউ এই স্ক্রিপ্ট বা এর যে কোন অংশকে কোনভাবে ব্যবহার করে, ট্রেডিংয়ের সাথে যুক্ত উচ্চ ঝুঁকি সম্পর্কে সচেতন হতে হবে।
ধন্যবাদ @LucF এবং @a.tesla2018 আমাকে কোড ফিক্স দিয়ে সাহায্য করার জন্য :)
ব্যাকটেস্ট
/*backtest start: 2022-04-23 00:00:00 end: 2022-05-22 23:59:00 period: 15m basePeriod: 5m 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/ // © Peter_O //@version=5 strategy(title='TradingView Alerts to MT4 MT5 Strategy example', commission_type=strategy.commission.cash_per_order, commission_value=0.00003, overlay=false, default_qty_value=100000, initial_capital=1000) //study(title="TradingView Alerts to MT4 MT5 Strategy example") //uncomment this line and comment previous one to make it a study producing alerts // // This script was created for educational purposes only. // It is showing how to use dynamic variables in TradingView alerts. // And how to execute them in Forex, indices and commodities markets TakeProfitDistance = input(400) TakePartialProfitDistance = input(150) // **** Entries logic **** { periodK = input.int(13, title='K', minval=1) periodD = input.int(3, title='D', minval=1) smoothK = input.int(4, title='Smooth', minval=1) k = ta.sma(ta.stoch(close, high, low, periodK), smoothK) d = ta.sma(k, periodD) plot(k, title='%K', color=color.new(color.blue, 0)) plot(d, title='%D', color=color.new(color.orange, 0)) h0 = hline(80) h1 = hline(20) fill(h0, h1, color=color.new(color.purple, 75)) GoLong = ta.crossover(k, d) and k < 80 GoShort = ta.crossunder(k, d) and k > 20 // } End of entries logic // **** Pivot-points and stop-loss logic **** { piv_high = ta.pivothigh(high, 1, 1) piv_low = ta.pivotlow(low, 1, 1) var float stoploss_long = low var float stoploss_short = high pl = ta.valuewhen(piv_low, piv_low, 0) ph = ta.valuewhen(piv_high, piv_high, 0) if GoLong stoploss_long := low < pl ? low : pl stoploss_long if GoShort stoploss_short := high > ph ? high : ph stoploss_short // } End of Pivot-points and stop-loss logic strategy.entry('Long', strategy.long, when=GoLong) strategy.exit('XPartLong', from_entry='Long', qty_percent=50, profit=TakePartialProfitDistance) strategy.exit('XLong', from_entry='Long', stop=stoploss_long, profit=TakeProfitDistance) strategy.entry('Short', strategy.short, when=GoShort) strategy.exit('XPartShort', from_entry='Short', qty_percent=50, profit=TakePartialProfitDistance) strategy.exit('XShort', from_entry='Short', stop=stoploss_short, profit=TakeProfitDistance) if GoLong alertsyntax_golong = 'long slprice=' + str.tostring(stoploss_long) + ' tp1=' + str.tostring(TakePartialProfitDistance) + ' part1=0.5 tp=' + str.tostring(TakeProfitDistance) alert(message=alertsyntax_golong, freq=alert.freq_once_per_bar_close) if GoShort alertsyntax_goshort = 'short slprice=' + str.tostring(stoploss_short) + ' tp1=' + str.tostring(TakePartialProfitDistance) + ' part1=0.5 tp=' + str.tostring(TakeProfitDistance) alert(message=alertsyntax_goshort, freq=alert.freq_once_per_bar_close) if GoLong strategy.entry("Enter Long", strategy.long) else if GoShort strategy.entry("Enter Short", strategy.short)