
سمندری طوفان ٹریڈنگ ڈیسیشن سسٹم ایک ٹریڈنگ حکمت عملی ہے جس میں رجحانات کی پیروی کی جاتی ہے جس میں بریک تھیوری پر مبنی ہے۔ اس میں ٹریڈنگ کی اقسام کی اعلی ترین اور کم ترین قیمتوں کی متحرک اوسط کے ذریعہ ٹریڈنگ سگنل پیدا کیے جاتے ہیں ، جس سے ممکنہ رجحانات کی نشاندہی کی جاسکتی ہے۔ جب قیمت کسی مخصوص دورانیے میں اعلی ترین قیمت یا کم ترین قیمت کو توڑ دیتی ہے تو اس میں ٹریڈنگ سگنل پیدا ہوتے ہیں۔ اس حکمت عملی میں ایک ہی وقت میں موبائل اسٹاپ نقصان ، انوینٹری مینجمنٹ اور فنڈ مینجمنٹ ماڈیول شامل ہیں ، جس سے یہ ایک زیادہ مکمل فیصلہ ساز نظام بن جاتا ہے۔
ساحل سمندر کے تجارتی فیصلے کے نظام کے بنیادی حکمت عملی سگنل قیمتوں کے ساتھ N1 سائیکل کی اعلی ترین قیمت اور N2 سائیکل کی کم ترین قیمت کے مابین بڑے پیمانے پر تعلقات کا موازنہ کرکے پیدا کیے جاتے ہیں۔ جب قیمت N1 سائیکل کی اعلی ترین قیمت کو عبور کرتی ہے تو خریدنے کا سگنل پیدا ہوتا ہے۔ جب قیمت N2 سائیکل کی کم ترین قیمت کو عبور کرتی ہے تو فروخت کا سگنل پیدا ہوتا ہے۔
پوزیشن کھولنے کے بعد ، قیمت اور اسٹاپ قیمت کے مابین بڑے پیمانے پر تعلقات کا اصل وقت میں موازنہ کیا جائے گا ، جس سے موبائل اسٹاپ سگنل پیدا ہوگا۔ اس کے ساتھ ساتھ ، قیمت اور اسٹاپ لائن کے مابین تعلقات کا موازنہ کیا جائے گا ، جس سے اسٹاپ سگنل پیدا ہوگا۔ اسٹاپ قیمت اور اسٹاپ لائن دونوں اے ٹی آر سے متعلق ہیں۔
ہر پوزیشن کھولنے پر پوزیشن ہولڈنگ یونٹ کا حساب لگایا جاتا ہے ، ابتدائی فنڈ کا ایک خاص تناسب لے کر مجموعی سرمایہ پر انفرادی نقصان کے اثرات سے بچنے کے لئے۔ انفرادی نقصانات کو ایک خاص حد تک محدود کردیا گیا ہے۔
سمندری سیلاب کے بعد سے ، سمندری سیلاب کے بعد سے ، سمندری سیلاب کے بعد سے ، سمندری سیلاب کے بعد سے ، سمندری سیلاب کے بعد سے۔
ممکنہ رجحانات کو پکڑیں: ممکنہ قیمتوں کے رجحانات کو پہلے سے پکڑنے کے لئے ، قیمتوں کے مقابلے میں اعلی ترین اور کم سے کم قیمتوں کے مابین تعلقات کا اندازہ لگانے کے لئے ممکنہ رجحانات کی سمت کا تعین کریں۔
رسک مینجمنٹ: فنڈ مینجمنٹ اور اسٹاپ نقصان کو استعمال کرکے انفرادی اور مجموعی طور پر نقصان کے خطرے کو کنٹرول کریں۔
ذخیرہ اندوزی کا انتظام: مناسب ذخیرہ اندوزی سے رجحان میں اضافی منافع حاصل ہوتا ہے۔
سالمیت: فنڈ مینجمنٹ ، اسٹاپ نقصان کے انتظام اور ذخیرہ اندوزی کے انتظام کے ساتھ مل کر ، فیصلہ سازی کا نظام زیادہ مکمل ہوتا ہے۔
سادہ اور واضح: سگنل جنریشن کے قواعد سادہ اور براہ راست ہیں، آسانی سے سمجھنے اور توثیق کرنے کے لئے.
اس کے علاوہ، کچھ خطرات بھی ہیں جو کہ سمندری غذا کی تجارت کے فیصلے کے نظام میں موجود ہیں:
جھوٹی توڑنے کا خطرہ: قیمتوں میں جھوٹی توڑ کی اعلی ترین قیمت یا کم ترین قیمت ہوسکتی ہے ، جس سے غلط سگنل پیدا ہوتا ہے۔ کچھ جھوٹی توڑ کو فلٹر کرنے کے لئے پیرامیٹرز کو مناسب طریقے سے ایڈجسٹ کیا جاسکتا ہے۔
رجحان کی تبدیلی کا خطرہ: ذخیرہ اندوزی کے بعد قیمتوں میں ردوبدل سے نقصان میں اضافے کا خطرہ ہے۔ ذخیرہ اندوزی کی تعداد کو مناسب طریقے سے محدود کیا جانا چاہئے ، اور نقصان کو وقت پر روکنا چاہئے۔
پیرامیٹرز کو بہتر بنانے کا خطرہ: مختلف مارکیٹ پیرامیٹرز کی ترتیب میں بہت زیادہ فرق ہوسکتا ہے ، خطرے کو کم کرنے کے لئے مارکیٹ کو بہتر بنانے کے پیرامیٹرز کو تقسیم کرنا چاہئے۔
اس کے علاوہ، سمندری سمندروں کی تجارت کے فیصلے کے نظام کو مندرجہ ذیل طریقوں سے بہتر بنایا جاسکتا ہے:
اضافی فلٹرز: قیمتوں میں اضافے کی شدت کا پتہ لگانے کے لئے ، کچھ جعلی ٹوٹ پھوٹ کو فلٹر کریں۔
اسٹاپ نقصان کی حکمت عملی کو بہتر بنائیں: منافع کو بچانے اور غیر ضروری نقصانات کو کم کرنے کے درمیان توازن تلاش کرنے کے لئے کس طرح معقول طور پر اسٹاپ نقصانات کا سراغ لگانا ہے۔
مارکیٹنگ کے پیرامیٹرز کو بہتر بنانا: مختلف اقسام کی خصوصیات کے لئے پیرامیٹرز کو بہتر بنانے کا مجموعہ
مشین لرننگ میں اضافہ: مشین لرننگ الگورتھم کا استعمال کرتے ہوئے رجحانات کی سمت کا تعین کرنے میں معاون۔
ساحل ٹریڈنگ فیصلہ سازی نظام قیمتوں اور مخصوص مدت کے دوران سب سے کم قیمتوں کے درمیان تعلقات کا موازنہ کرکے ممکنہ رجحانات کی سمت کا فیصلہ کرتا ہے ، اور خطرے کے انتظام کے ماڈیول کے ساتھ مل کر پورے فیصلہ سازی نظام کی تعمیر کرتا ہے۔ اس میں رجحانات کی مضبوط پیروی کرنے کی صلاحیت ہے ، لیکن اس کے ساتھ ہی کچھ غلط بریک خطرہ اور پیرامیٹرز کی اصلاح کا مسئلہ بھی موجود ہے۔ اس حکمت عملی کو ایک بنیادی ماڈل کے طور پر استعمال کیا جاسکتا ہے جس کی مقدار میں تجارت کی جاسکتی ہے ، اور اس کی بنیاد پر توسیع اور اصلاح کی جاسکتی ہے ، تاکہ اپنے فیصلے کے نظام کو تیار کیا جاسکے۔
/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-28 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/
// © 李和邪
// 本脚本所有内容只适用于交流学习,不构成投资建议,所有后果自行承担。
//@version=5
strategy(title='Turtle Trading Strategy@lihexie',
shorttitle='OKX-海龟交易系统@李和邪',
overlay=true,
pyramiding=4,
initial_capital = 1000,
default_qty_type = strategy.percent_of_equity,
default_qty_value=100,
slippage = 0,
commission_type = strategy.commission.percent,
commission_value = 0.05)
// 输入参数
from_date = input(timestamp("2013-01-01T00:00:00+08:00"), "From Date/开始日期")
end_date = input(timestamp("2024-08-01T00:00:00+08:00"), "To Date/结束日期")
valid_date() => true
current_mode = input.string("Mode 1", "Enter Mode/进场系统",['Mode 1','Mode 2'])
// mode 1
entry_length = input.int(20, 'Entry Length/系统1进场长度', minval=1) // 进场长度
exit_length = input.int(10, 'Exit Length/系统2出场长度', minval=1) // 出场长度
// mode 2
entry_length_mode2 = input.int(55, 'Mode2 Entry Length/系统2进场长度', minval=1) // 进场长度
exit_length_mode2 = input.int(20, 'Mode2 Exit Length/系统2出场长度', minval=1)
atr_period = input.int(14, "ATR Period/计算ATR的周期", minval=1) // ATR周期
risk_per_trade = input.float(0.02, "Risk Per Trade/每笔交易的风险,0.02就是2%", minval=0.001, maxval=1) // 每笔交易的风险
initial_stop_atr_multiple = input.float(2, "Initial Stop ATR Multiple/止损使用的ATR倍数", minval=0.1, maxval=10) // 初始止损ATR倍数
pyramid_atr_multiple = input.float(0.5, "Pyramid ATR Multiple/加仓使用的ATR倍数", minval=0.1, maxval=10) // 加仓ATR倍数
max_units = input.int(4, "Max Units/最大头寸单位数", minval=1, maxval=10) // 最大头寸单位数
highlighting = input(title='Highlighter On/Off ?/是否高亮显示', defval=true) // 是否高亮显示
// 初始化变量
var int units = 0
var float trailing_stop_long = na
var float trailing_stop_short = na
var float real_entry_price_long = na
var float real_entry_price_short = na
var float add_unit_price_long = na
var float add_unit_price_short = na
var bool last_trade_win = false
// 计算ATR
atr = ta.atr(atr_period)
// 计算单位大小
unit_size = (strategy.equity * risk_per_trade) / (initial_stop_atr_multiple * atr)
// 切换模式
mode_signal = current_mode == "Mode 1" ? (last_trade_win==false?true:false) : true
float entry_price_long = na
float entry_price_short = na
float exit_price_long = na
float exit_price_short = na
// 计算进场和出场价格
if current_mode == "Mode 1"
entry_price_long := ta.highest(entry_length)
entry_price_short := ta.lowest(entry_length)
exit_price_long := ta.lowest(exit_length)
exit_price_short := ta.highest(exit_length)
else
entry_price_long := ta.highest(entry_length_mode2)
entry_price_short := ta.lowest(entry_length_mode2)
exit_price_long := ta.lowest(exit_length_mode2)
exit_price_short := ta.highest(exit_length_mode2)
// 计算止损价格
stop_price_long = entry_price_long - (initial_stop_atr_multiple * atr)
stop_price_short = entry_price_short + (initial_stop_atr_multiple * atr)
// 交易逻辑
// 生成买入和卖出信号
long_signal = ta.crossover(close, entry_price_long[1]) and strategy.position_size==0 and valid_date()
short_signal = ta.crossunder(close, entry_price_short[1]) and strategy.position_size==0 and valid_date()
// 生成出场信号
exit_long_signal = ta.crossunder(close, exit_price_long[1]) and strategy.position_size > 0 and valid_date()
exit_short_signal = ta.crossover(close, exit_price_short[1]) and strategy.position_size < 0 and valid_date()
if long_signal
if mode_signal
strategy.entry("Long", strategy.long, qty=unit_size, stop=stop_price_long)
units := 1
trailing_stop_long := stop_price_long
real_entry_price_long := close
add_unit_price_long := real_entry_price_long+pyramid_atr_multiple*atr
else
last_trade_win:=false
if short_signal
if mode_signal
strategy.entry("Short", strategy.short, qty=unit_size, stop=stop_price_short)
units := 1
trailing_stop_short := stop_price_short
real_entry_price_short := close
add_unit_price_short := real_entry_price_short-pyramid_atr_multiple*atr
else
last_trade_win:=false
// 出场逻辑
if exit_long_signal
last_trade_win := strategy.position_avg_price<close?true:false
strategy.close_all("SL")
units := 0
real_entry_price_long := na
add_unit_price_long := na
trailing_stop_long := na
if exit_short_signal
last_trade_win := strategy.position_avg_price>close?true:false
strategy.close_all("SS")
units := 0
real_entry_price_short := na
add_unit_price_short := na
trailing_stop_short := na
// 生成加仓信号
add_unit_signal = (close > add_unit_price_long or close < add_unit_price_short) and units[1] < max_units and valid_date()
// 加仓逻辑
if add_unit_signal
if strategy.position_size > 0
strategy.entry("AL", strategy.long, qty=unit_size)
real_entry_price_long := close
add_unit_price_long := real_entry_price_long+pyramid_atr_multiple*atr
trailing_stop_long := real_entry_price_long - (initial_stop_atr_multiple * atr)
if strategy.position_size < 0
strategy.entry("AS", strategy.short, qty=unit_size)
real_entry_price_short := close
add_unit_price_short := real_entry_price_short-pyramid_atr_multiple*atr
trailing_stop_short := real_entry_price_short + (initial_stop_atr_multiple * atr)
units := units + 1
// 移动止损逻辑
trailing_stop_long_signal = ta.crossunder(close, trailing_stop_long) and strategy.position_size > 0 and valid_date()
trailing_stop_short_signal = ta.crossover(close, trailing_stop_short) and strategy.position_size < 0 and valid_date()
if trailing_stop_long_signal
last_trade_win := strategy.position_avg_price<close?true:false
strategy.close_all("TSL")
units := 0
real_entry_price_long := na
add_unit_price_long := na
trailing_stop_long := na
if trailing_stop_short_signal
last_trade_win := strategy.position_avg_price>close?true:false
strategy.close_all("TSS")
units := 0
real_entry_price_short := na
add_unit_price_short := na
trailing_stop_short := na
// 美化图表
plot_entry_lowest = plot(entry_price_short, 'Lower', color=color.new(#0094FF, 0)) // 绘制进场最低线
plot_entry_highest = plot(entry_price_long, 'Upper', color=color.new(#0094FF, 0)) // 绘制进场最高线
entry_line = ta.barssince(short_signal) <= ta.barssince(long_signal) ? entry_price_short : entry_price_long // 进场线
exit_line = ta.barssince(short_signal) <= ta.barssince(long_signal) ? exit_price_short : exit_price_long // 出场线
plot(entry_line, title='Trend Line', color=color.new(#ff52f1, 0), linewidth=2) // 绘制趋势线
plot_exit = plot(exit_line, title='Exit Line', color=color.new(color.blue, 0), linewidth=1, style=plot.style_circles) // 绘制出场线
entry_long_color = highlighting and strategy.position_size>0 ? color.new(color.green, transp = 88) : na
entry_short_color = highlighting and strategy.position_size<0 ? color.new(color.red, transp = 88) : na
fill(plot_entry_highest, plot_exit, color=entry_long_color, title='Background') // 高亮多头趋势
fill(plot_entry_lowest, plot_exit, color=entry_short_color, title='Background') // 高亮空头趋势