
میں تھوڑی دیر سے مقداری تجارت کر رہا ہوں۔ سچ پوچھیں تو، زیادہ تر وقت میں صرف دوسروں کے اشتراک کردہ حکمت عملیوں کو پڑھتا ہوں اور پھر پیرامیٹرز میں ترمیم کرنے کی کوشش کرتا ہوں۔ میرے پاس واقعی شروع سے حکمت عملی شروع کرنے کے بہت سے مواقع نہیں ہیں، بنیادی طور پر اس لیے کہ میرے پاس کوئی اچھے آئیڈیاز نہیں ہیں، اور آئیڈیاز سے کوڈ تک کا فاصلہ کافی دور محسوس ہوتا ہے۔
میں کچھ عرصہ پہلے فارغ تھا، اس لیے میں نے B اسٹیشن کو دوبارہ براؤز کرنا شروع کیا۔ میں نے اتفاق سے برادر زیڈ کا اسٹاک لائیو براڈکاسٹ دیکھا۔ میں اسے محض اتفاق سے دیکھ رہا تھا، لیکن مجھے امید نہیں تھی کہ یہ مجھے غیر متوقع طور پر متاثر کرے گا۔
جب برادر زیڈ KDJ اشارے کے بارے میں بات کر رہے تھے، تبصرے کے علاقے میں ایک نیٹیزن نے ایک جملہ پوسٹ کیا جو مجھے خاصا دلچسپ لگا:

“اگر قیمت میں قدرے کمی آتی ہے تو، ہک تیزی سے گرتا ہے، جو مستقبل میں تیزی کے رجحان کی نشاندہی کر سکتا ہے۔ اگر قیمت میں تیزی سے کمی آتی ہے، تو ہک آہستہ آہستہ گرتا ہے، جو مستقبل میں مزید گراوٹ کی نشاندہی کر سکتا ہے۔ اگر قیمت میں قدرے اضافہ ہوتا ہے تو، نالی تیزی سے بڑھ جاتی ہے، جو مستقبل میں مندی کے رجحان کی نشاندہی کر سکتی ہے۔ مستقبل.”
میں اس وقت دنگ رہ گیا۔ یہ خلاصہ بہت بصیرت انگیز ہے! اگرچہ یہ صرف ایک جملہ ہے، ایسا لگتا ہے کہ یہ KDJ کی J قدر کے بدلتے ہوئے اصولوں کی واضح طور پر وضاحت کرتا ہے۔
میں نے اپنے آپ سے سوچا، بھائی Z اسٹاک مارکیٹ میں ہے، لیکن یہ منطق cryptocurrencies پر بھی لاگو ہونی چاہیے، ٹھیک ہے؟ جتنا میں نے اس کے بارے میں سوچا، اتنا ہی اس کا احساس ہوا۔ قیمت میں تبدیلی کی شدت اور اشارے کے رد عمل کی رفتار، یہ دونوں جہتیں بعد کے رجحان کا فیصلہ کرنے کے لیے مل کر بہت منطقی لگیں۔ مزید برآں، کریپٹو کرنسی مارکیٹ میں دن کے 24 گھنٹے تجارت ہوتی ہے، اور اتار چڑھاؤ زیادہ ہوتا ہے، اس لیے شاید یہ نظریہ بہتر کارکردگی دکھائے گا۔
اس لمحے، میں تھوڑا پرجوش تھا، اور محسوس کیا کہ مجھے دریافت کرنے کی سمت مل گئی ہے۔ لیکن پھر میں پھر پریشان ہوا کہ میں اس خیال کو کوڈ میں کیسے بدل سکتا ہوں؟ ماضی میں، جب مجھے ایسی صورت حال کا سامنا کرنا پڑا، میں یا تو اس کے بارے میں سوچتا تھا یا اسے ایک طرف رکھ دیتا تھا اور جب میرے پاس وقت ہوتا تھا.
لیکن اس بار یہ مختلف ہے۔ مجھے یاد آیا کہ موجد پلیٹ فارم میں ایک AI اسسٹنٹ ہے، اس لیے میں یہ دیکھنے کی کوشش کرنا چاہتا تھا کہ آیا میں اس خیال کو کوڈ میں براہ راست “ترجمہ” کر سکتا ہوں۔
کوشش کرنے والے رویے کے ساتھ، میں نے انوینٹر پلیٹ فارم کے AI اسسٹنٹ کو کھولا، آئیڈیا کو لفظ بہ لفظ داخل کیا، اور مزید کہا: یہ ایک نظریہ ہے جو اسٹاک پر لاگو ہوتا ہے، اور میں اسے کرپٹو کرنسیوں پر آزمانا چاہتا ہوں۔
مجھے امید نہیں تھی کہ AI اتنی جلدی اور تیزی سے میرے لیے حکمت عملی کوڈز کا ایک مکمل سیٹ تیار کرے گا۔ اس وقت میں کافی حیران ہوا اور سوچا کہ کیا اب اے آئی اتنی طاقتور ہے؟
حکمت عملی کوڈ کا پہلا ورژن:
/*backtest
start: 2024-07-18 09:40:00
end: 2025-06-30 15:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("KDJ J值变化速度策略", overlay=false)
// 输入参数 - 针对加密货币市场优化
kdj_length = input.int(14, "KDJ周期", minval=1)
k_smooth = input.int(3, "K平滑", minval=1)
d_smooth = input.int(3, "D平滑", minval=1)
j_speed_period = input.int(5, "J值变化速度计算周期", minval=1)
price_change_threshold = input.float(3.0, "价格变化幅度阈值(%)-区分大小幅", minval=0.1) / 100
j_speed_threshold = input.float(12.0, "J值变化速度阈值-区分快慢", minval=0.1)
j_change_threshold = input.float(1.5, "J值变化忽略阈值-过滤噪音", minval=0.1)
price_change_ignore_threshold = input.float(0.5, "价格变化忽略阈值(%)-过滤噪音", minval=0.01) / 100
// 加密货币风控参数
max_consecutive_trades = input.int(5, "最大连续交易次数", minval=1)
min_bars_between_signals = input.int(3, "信号间最小间隔K线数", minval=1)
enable_stop_loss = input.bool(true, "启用止损")
stop_loss_pct = input.float(5.0, "止损百分比(%)", minval=0.5) / 100
// 计算KDJ指标
highest_high = ta.highest(high, kdj_length)
lowest_low = ta.lowest(low, kdj_length)
rsv = (close - lowest_low) / (highest_high - lowest_low) * 100
k = ta.sma(rsv, k_smooth)
d = ta.sma(k, d_smooth)
j = 3 * k - 2 * d
// 计算J值连续变化速度
// 统计连续上涨或下跌的累计变化量和持续时间
var float j_cumulative_change = 0.0
var int j_consecutive_bars = 0
var int j_direction = 0 // 1为上涨,-1为下跌,0为初始
j_current_change = j - j[1]
// 只有变化幅度超过阈值才认为有方向性
j_current_direction = math.abs(j_current_change) > j_change_threshold ?
(j_current_change > 0 ? 1 : -1) : 0
// 检测J值方向是否改变
if j_current_direction != j_direction and j_current_direction != 0
// 方向改变,重新开始统计
j_cumulative_change := math.abs(j_current_change)
j_consecutive_bars := 1
j_direction := j_current_direction
else if j_current_direction == j_direction and j_current_direction != 0
// 方向相同,累计变化
j_cumulative_change += math.abs(j_current_change)
j_consecutive_bars += 1
else if j_current_direction == 0
// 变化太小忽略,但时间继续累计
j_consecutive_bars += 1
// J值变化速度 = 累计变化量 / 持续时间
j_speed = j_consecutive_bars > 0 ? j_cumulative_change / j_consecutive_bars : 0
// 计算价格连续变化幅度
// 统计连续上涨或下跌的累计变化量和持续时间
var float price_cumulative_change = 0.0
var int price_consecutive_bars = 0
var int price_direction = 0 // 1为上涨,-1为下跌,0为初始
price_current_change = (close - close[1]) / close[1]
// 只有变化幅度超过阈值才认为有方向性
price_current_direction = math.abs(price_current_change) > price_change_ignore_threshold ?
(price_current_change > 0 ? 1 : -1) : 0
// 检测价格方向是否改变
if price_current_direction != price_direction and price_current_direction != 0
// 方向改变,重新开始统计
price_cumulative_change := math.abs(price_current_change)
price_consecutive_bars := 1
price_direction := price_current_direction
else if price_current_direction == price_direction and price_current_direction != 0
// 方向相同,累计变化
price_cumulative_change += math.abs(price_current_change)
price_consecutive_bars += 1
else if price_current_direction == 0
// 变化太小忽略,但时间继续累计
price_consecutive_bars += 1
// 价格变化幅度 = 累计变化量
price_change = price_cumulative_change
// 判断价格变化类型
is_small_change = price_change < price_change_threshold
is_large_change = price_change >= price_change_threshold
// 判断价格方向(基于当前连续变化方向)
is_price_up = price_direction == 1
is_price_down = price_direction == -1
// 判断J值变化速度
is_j_fast = j_speed > j_speed_threshold
is_j_slow = j_speed <= j_speed_threshold
// 交易控制变量
var float entry_price = 0.0
// 策略信号逻辑
// 1. 小幅下跌钩掉的快,可能后期看涨
signal_small_down_fast_j = is_small_change and is_price_down and is_j_fast
// 2. 大幅下跌勾下的慢,后期还要再跌
signal_large_down_slow_j = is_large_change and is_price_down and is_j_slow
// 3. 小幅上涨沟长得快,可能后期看跌
signal_small_up_fast_j = is_small_change and is_price_up and is_j_fast
// 4. 大幅上涨勾长得慢,后期可能还要再涨
signal_large_up_slow_j = is_large_change and is_price_up and is_j_slow
// 交易信号
long_signal = (signal_small_down_fast_j or signal_large_up_slow_j)
short_signal = (signal_small_up_fast_j or signal_large_down_slow_j)
// 执行交易
if long_signal and strategy.position_size == 0
strategy.entry("Long", strategy.long, comment="多头信号开仓")
entry_price := close
if short_signal and strategy.position_size == 0
strategy.entry("Short", strategy.short, comment="空头信号开仓")
entry_price := close
// 平仓条件
// 1. 信号反转平仓
if strategy.position_size > 0 and short_signal
strategy.close("Long", comment="信号反转平多仓")
if strategy.position_size < 0 and long_signal
strategy.close("Short", comment="信号反转平空仓")
// 2. 止损平仓
if enable_stop_loss
if strategy.position_size > 0 and close <= entry_price * (1 - stop_loss_pct)
strategy.close("Long", comment="止损平多仓")
if strategy.position_size < 0 and close >= entry_price * (1 + stop_loss_pct)
strategy.close("Short", comment="止损平空仓")
// 绘制指标
plot(j, "J值", color=color.blue, linewidth=2)
hline(80, "超买线", color=color.red, linestyle=hline.style_dashed)
hline(20, "超卖线", color=color.green, linestyle=hline.style_dashed)
hline(50, "中线", color=color.gray, linestyle=hline.style_dotted)
// 绘制信号标记
plotshape(signal_small_down_fast_j, title="小跌快勾-看涨", location=location.belowbar, color=color.lime, style=shape.triangleup, size=size.small,overlay=true)
plotshape(signal_large_down_slow_j, title="大跌慢勾-看跌", location=location.belowbar, color=color.red, style=shape.triangledown, size=size.small,overlay=true)
plotshape(signal_small_up_fast_j, title="小涨快勾-看跌", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small,overlay=true)
plotshape(signal_large_up_slow_j, title="大涨慢勾-看涨", location=location.abovebar, color=color.lime, style=shape.triangleup, size=size.small,overlay=true)
کوڈ حاصل کرنے کے بعد، میں نے سب سے پہلے یہ چیک کرنا تھا کہ آیا یہ چل سکتا ہے۔ انوینٹر پلیٹ فارم کے ایڈیٹر نے اشارہ کیا کہ نحو کی کوئی غلطیاں نہیں ہیں، اور مجھے راحت ملی۔
پھر سب سے دلچسپ لمحہ آتا ہے - آن لائن بیک ٹیسٹنگ۔ Inventor AI اسسٹنٹ کے صفحہ پر، آپ تیار کردہ صفحہ کے نیچے دائیں کونے میں حقیقی وقت میں آن لائن بیک ٹیسٹنگ انجام دے سکتے ہیں۔ بیکٹیسٹ کرنسی BTC کو منتخب کریں، وقت کی حد مقرر کریں، اور آن لائن بیک ٹیسٹنگ بٹن پر کلک کریں۔

نتائج آنے کے بعد، میں نے تھوڑا سا ملا جلا محسوس کیا. کوڈ چل گیا، اور منطق درست لگ رہی تھی، لیکن بیک ٹیسٹ کے نتائج مثالی نہیں تھے۔ اگرچہ ایسے مواقع بھی آئے جب میں نے منافع کمایا، لیکن جیتنے کی مجموعی شرح زیادہ نہیں تھی، اور مجھے اکثر مسلسل نقصانات کا سامنا کرنا پڑا۔

ایسا محسوس ہوا کہ ایک ہوائی جہاز جو نظریہ میں اڑنے کے قابل ہونا چاہئے بنایا گیا تھا لیکن آخر کار اڑ نہیں سکتا تھا۔ میں نے تھوڑا سا مایوس محسوس کیا، لیکن میں ہار ماننے کو تیار نہیں تھا۔
اگر نظریہ معنی رکھتا ہے اور کوڈ کام کرتا ہے، تو مسئلہ کیا ہے؟
میں نے کوڈ کی منطق کا بغور مطالعہ کرنا شروع کیا۔ میں نے پایا کہ AI کا لکھا ہوا کوڈ بنیادی طور پر J قدر کی تبدیلی کی رفتار کا حساب لگا کر “تیز” اور “سست” کا فیصلہ کرتا ہے۔
j_speed = j_cumulative_change / j_consecutive_bars
is_j_fast = j_speed > j_speed_threshold
is_j_slow = j_speed <= j_speed_threshold
پہلی نظر میں ایسا لگتا ہے کہ کچھ غلط نہیں ہے، لیکن مجھے ہمیشہ ایسا لگتا ہے کہ کچھ غلط ہے۔
اس کے بارے میں سوچنے کے بعد، مجھے اچانک ایک مسئلہ کا احساس ہوا: یہ حساب صرف ایک خاص لمحے میں ہونے والی تبدیلی کی رفتار کو دیکھتا ہے، لیکن تبدیلی کو مدنظر نہیں رکھتا۔تسلسل。
مثال کے طور پر، J قدر کسی خاص دن میں تیزی سے تبدیل ہو سکتی ہے، لیکن یہ پین میں صرف ایک فلیش ہے اور اگلے دن معمول پر آ جاتی ہے۔ اس صورت میں، کسی ایک نقطے کی رفتار سے اندازہ لگانا درست نہیں ہو سکتا۔
اصل نظریہ کہتا ہے “جلدی سے جھکنا” اور “آہستہ نیچے جھکنا”۔ یہاں “تیز” اور “سست” کو کسی خاص مقام پر حالت کے بجائے ایک مسلسل عمل کا حوالہ دینا چاہئے۔
اس مسئلے کو سمجھنے کے بعد، میں پھر سے تھوڑا پرجوش ہو گیا۔ مجھے ایسا لگا جیسے مجھے چابی مل گئی ہے، لیکن میں نہیں جانتا تھا کہ کوڈ کو کیسے تبدیل کیا جائے۔
اس وقت، مجھے کچھ تبصرے یاد آئے جو میں نے پہلے دیکھے تھے، کسی نے ذکر کیا تھا کہ ہمیں اشارے کی تبدیلیوں کے تسلسل پر توجہ دینی چاہیے۔ ہاں، تسلسل! یہ بالکل وہی ہے جس کے بارے میں میں سوچ رہا تھا۔

میں AI اسسٹنٹ کے پاس واپس گیا اور اس بار میں نے واضح درخواست کی: ہمیں J قدر میں تبدیلی کے تسلسل کو اجاگر کرنا چاہیے۔ ہم صرف ایک نقطہ کی تبدیلی کی رفتار کو نہیں دیکھ سکتے، لیکن ہمیں مسلسل کئی دنوں میں تبدیلی کے رجحان کو دیکھنا چاہیے۔
اس بار AI کی طرف سے فراہم کردہ حل آنکھیں کھولنے والا تھا۔ اس نے J قدر کے تجزیہ کی پوری منطق کو دوبارہ ڈیزائن کیا:
حکمت عملی کوڈ کا دوسرا بہتر ورژن:
/*backtest
start: 2024-07-18 09:40:00
end: 2025-06-30 15:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("KDJ J值连续性变化策略", overlay=false)
// 输入参数
kdj_length = input.int(9, "KDJ周期", minval=1)
k_smooth = input.int(3, "K平滑", minval=1)
d_smooth = input.int(3, "D平滑", minval=1)
j_speed_period = input.int(3, "J值变化速度计算周期", minval=1)
price_change_threshold = input.float(1.5, "价格变化幅度阈值(%)-区分大小幅", minval=0.1) / 100
j_fast_threshold = input.float(15.0, "J值快速变化阈值", minval=1.0)
j_slow_threshold = input.float(5.0, "J值慢速变化阈值", minval=0.1)
j_change_threshold = input.float(1.0, "J值变化忽略阈值-过滤噪音", minval=0.1)
price_change_ignore_threshold = input.float(0.2, "价格变化忽略阈值(%)-过滤噪音", minval=0.01) / 100
min_consecutive_bars = input.int(3, "最小连续K线数", minval=2)
// 风控参数
max_consecutive_trades = input.int(3, "最大连续交易次数", minval=1)
min_bars_between_signals = input.int(5, "信号间最小间隔K线数", minval=1)
enable_stop_loss = input.bool(true, "启用止损")
stop_loss_pct = input.float(3.0, "止损百分比(%)", minval=0.5) / 100
// 计算KDJ指标
highest_high = ta.highest(high, kdj_length)
lowest_low = ta.lowest(low, kdj_length)
rsv = (close - lowest_low) / (highest_high - lowest_low) * 100
k = ta.sma(rsv, k_smooth)
d = ta.sma(k, d_smooth)
j = 3 * k - 2 * d
// 改进的J值连续性变化分析
var float j_cumulative_change = 0.0 // 保持方向性的累计变化(正负数)
var int j_consecutive_bars = 0
var int j_direction = 0 // 1为连续上涨,-1为连续下跌,0为无明确方向
var float j_start_value = 0.0
j_current_change = j - j[1]
// 只有变化幅度超过阈值才认为有方向性
j_current_direction = math.abs(j_current_change) > j_change_threshold ?
(j_current_change > 0 ? 1 : -1) : 0
// 重新设计J值连续性检测逻辑
if j_current_direction != 0
if j_current_direction == j_direction
// 方向相同,继续累计(保持正负号)
j_cumulative_change += j_current_change
j_consecutive_bars += 1
else
// 方向改变,重新开始统计
j_cumulative_change := j_current_change
j_consecutive_bars := 1
j_direction := j_current_direction
j_start_value := j[1]
else
// 变化很小,视为横盘,重置连续性
if j_consecutive_bars > 0
j_consecutive_bars += 1
else
j_cumulative_change := 0.0
j_consecutive_bars := 0
j_direction := 0
// 计算J值连续性指标(保持方向性)
j_total_change = j - j_start_value // 从起始点到当前的总变化(带正负号)
j_avg_speed = j_consecutive_bars > 0 ? j_cumulative_change / j_consecutive_bars : 0 // 平均变化速度(带正负号)
j_abs_avg_speed = math.abs(j_avg_speed) // 变化速度的绝对值
// 新的J值变化判断逻辑
is_j_continuous_up = j_direction == 1 and j_consecutive_bars >= min_consecutive_bars
is_j_continuous_down = j_direction == -1 and j_consecutive_bars >= min_consecutive_bars
// 基于连续性和变化幅度的快慢判断
is_j_fast_up = is_j_continuous_up and j_abs_avg_speed > j_fast_threshold
is_j_slow_up = is_j_continuous_up and j_abs_avg_speed <= j_slow_threshold and j_abs_avg_speed > 0
is_j_fast_down = is_j_continuous_down and j_abs_avg_speed > j_fast_threshold
is_j_slow_down = is_j_continuous_down and j_abs_avg_speed <= j_slow_threshold and j_abs_avg_speed > 0
// 计算价格连续变化幅度(保持原有逻辑)
var float price_cumulative_change = 0.0
var int price_consecutive_bars = 0
var int price_direction = 0
price_current_change = (close - close[1]) / close[1]
price_current_direction = math.abs(price_current_change) > price_change_ignore_threshold ?
(price_current_change > 0 ? 1 : -1) : 0
if price_current_direction != price_direction and price_current_direction != 0
price_cumulative_change := math.abs(price_current_change)
price_consecutive_bars := 1
price_direction := price_current_direction
else if price_current_direction == price_direction and price_current_direction != 0
price_cumulative_change += math.abs(price_current_change)
price_consecutive_bars += 1
else if price_current_direction == 0
price_consecutive_bars += 1
price_change = price_cumulative_change
// 判断价格变化类型
is_small_change = price_change < price_change_threshold
is_large_change = price_change >= price_change_threshold
is_price_up = price_direction == 1
is_price_down = price_direction == -1
// 交易控制变量
var float entry_price = 0.0
// 重新设计策略信号逻辑,强调J值的连续性
// 1. 小幅下跌 + J值连续快速下钩 = 看涨(下跌惯性减弱,J值快速回落)
signal_small_down_fast_j_down = is_small_change and is_price_down and is_j_fast_down
// 2. 大幅下跌 + J值连续慢速下钩 = 看跌(下跌惯性仍在,J值缓慢下行)
signal_large_down_slow_j_down = is_large_change and is_price_down and is_j_slow_down
// 3. 小幅上涨 + J值连续快速上钩 = 看跌(上涨惯性减弱,J值快速回落)
signal_small_up_fast_j_up = is_small_change and is_price_up and is_j_fast_up
// 4. 大幅上涨 + J值连续慢速上钩 = 看涨(上涨惯性仍在,J值持续上行)
signal_large_up_slow_j_up = is_large_change and is_price_up and is_j_slow_up
// 交易信号
long_signal = (signal_small_down_fast_j_down or signal_large_up_slow_j_up)
short_signal = (signal_small_up_fast_j_up or signal_large_down_slow_j_down)
// 执行交易
if long_signal and strategy.position_size == 0
strategy.entry("Long", strategy.long, comment="多头信号开仓")
entry_price := close
if short_signal and strategy.position_size == 0
strategy.entry("Short", strategy.short, comment="空头信号开仓")
entry_price := close
// 平仓条件
if strategy.position_size > 0 and short_signal
strategy.close("Long", comment="信号反转平多仓")
if strategy.position_size < 0 and long_signal
strategy.close("Short", comment="信号反转平空仓")
// 止损平仓
if enable_stop_loss
if strategy.position_size > 0 and close <= entry_price * (1 - stop_loss_pct)
strategy.close("Long", comment="止损平多仓")
if strategy.position_size < 0 and close >= entry_price * (1 + stop_loss_pct)
strategy.close("Short", comment="止损平空仓")
// 绘制指标
plot(j, "J值", color=color.blue, linewidth=2)
hline(80, "超买线", color=color.red, linestyle=hline.style_dashed)
hline(20, "超卖线", color=color.green, linestyle=hline.style_dashed)
hline(50, "中线", color=color.gray, linestyle=hline.style_dotted)
// 在下方子图显示连续性指标
plot(j_consecutive_bars, "连续K线数", color=color.orange)
plot(j_avg_speed, "平均变化速度(带方向)", color=color.purple)
plot(j_abs_avg_speed, "平均变化速度(绝对值)", color=color.yellow)
// 绘制信号标记
plotshape(signal_small_down_fast_j_down, title="小跌+J快速下钩-看涨", location=location.belowbar, color=color.lime, style=shape.triangleup, size=size.small, overlay=true)
plotshape(signal_large_down_slow_j_down, title="大跌+J慢速下钩-看跌", location=location.belowbar, color=color.red, style=shape.triangledown, size=size.small, overlay=true)
plotshape(signal_small_up_fast_j_up, title="小涨+J快速上钩-看跌", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small, overlay=true)
plotshape(signal_large_up_slow_j_up, title="大涨+J慢速上钩-看涨", location=location.abovebar, color=color.lime, style=shape.triangleup, size=size.small, overlay=true)
// 背景色显示J值连续性状态
bgcolor(is_j_continuous_up ? color.new(color.green, 95) : is_j_continuous_down ? color.new(color.red, 95) : na, title="J值连续性背景")
اس بہتری کو دیکھ کر مجھے پرجوش محسوس ہوا کہ ’’یہی احساس ہے‘‘۔ اب J قدر کی تبدیلی کوئی الگ تھلگ نقطہ نہیں ہے، بلکہ ایک مسلسل رجحان ہے۔
نیا کوڈ حاصل کرنے کے بعد، میں ایک اور بیک ٹیسٹ کرنے کا انتظار نہیں کر سکتا تھا۔

میں اس بار نتیجہ دیکھ کر قدرے حیران ہوا۔ اگرچہ اسے ایک بہترین حکمت عملی نہیں کہا جا سکتا، لیکن ظاہر ہے کہ یہ پہلے ورژن سے بہت بہتر ہے:
بیکٹیسٹ رپورٹ پر منافع کے منحنی خطوط کو دیکھ کر، میں کامیابی کا ایک مضبوط احساس محسوس کرتا ہوں۔ اگرچہ یہ زمین کو ٹکڑے ٹکڑے کرنے والی حکمت عملی نہیں ہے، لیکن اس کی شروعات ایک آئیڈیا سے ہوئی اور اسے قدم بہ قدم دریافت کیا گیا۔
اس ریسرچ نے مجھے AI معاونین اور مقداری پلیٹ فارمز کے بارے میں ایک نئی سمجھ دی۔
AI معاونین کی قدر:
میں سمجھتا تھا کہ AI صرف ایک کمزور انٹیلی جنس معاون ٹول ہے، لیکن اس بار میں نے پایا کہ یہ مقداری تجارت میں واقعی مفید ہے۔ سب سے بڑی قدر انسانی سوچ کو بدلنا نہیں ہے بلکہ خیال سے ضابطے تک کی دوری کو بہت کم کرنا ہے۔
مقداری پلیٹ فارم کی سہولت: میں انوینٹر پلیٹ فارم کے بیک ٹیسٹنگ فنکشن سے بھی متاثر ہوا۔ ماضی میں، اگر آپ کسی حکمت عملی کو بیک ٹیسٹ کرنا چاہتے تھے، تو آپ کو تاریخی ڈیٹا تلاش کرنا پڑتا تھا، بیک ٹیسٹنگ فریم ورک لکھنا پڑتا تھا، اور مختلف تکنیکی تفصیلات سے نمٹنا پڑتا تھا۔ اب آپ کو صرف کوڈ پیسٹ کرنے کی ضرورت ہے، پیرامیٹرز سیٹ کریں، اور آپ فوری طور پر نتائج دیکھ سکتے ہیں۔
یہ فوری تاثرات تلاش کے پورے عمل کو بہت ہموار بناتا ہے، اور آئیڈیاز، کوڈ، تصدیق، اور بہتری بہت تیز رفتاری سے چلتی ہے۔
یقینا، اس تحقیق نے مجھے کچھ سوالات کے بارے میں سوچنے پر مجبور کیا:
AI کی حدود: اگرچہ AI نے بہت مدد کی ہے، یہ سب کے بعد قادر مطلق نہیں ہے۔ AI کوڈ کے پہلے ورژن کے مسائل خود سے نہیں ڈھونڈ سکتا، اور پھر بھی لوگوں کو تجزیہ کرنے اور فیصلہ کرنے کی ضرورت ہے۔ اس کے علاوہ، AI کی طرف سے دیا گیا حل بہترین نہیں ہو سکتا، اور اسے اصل صورتحال کے مطابق ایڈجسٹ کرنے کی ضرورت ہے۔
خود حکمت عملی کی حدود: اگرچہ یہ حکمت عملی بیک ٹیسٹنگ میں اچھی کارکردگی کا مظاہرہ کرتی ہے، لیکن یہ کوئی علاج نہیں ہے۔ یہ غیر مستحکم مارکیٹوں میں عام طور پر اچھی کارکردگی کا مظاہرہ کرتا ہے، اور پیرامیٹرز کو مختلف کرنسیوں کے مطابق ایڈجسٹ کرنے کی ضرورت ہے۔
سب سے اہم بات یہ ہے کہ صرف اس وجہ سے کہ کوئی حکمت عملی تاریخی اعداد و شمار میں اچھی کارکردگی کا مظاہرہ کرتی ہے، اس لیے یہ تصور نہیں کیا جا سکتا کہ یہ مستقبل میں کارگر ثابت ہو گی۔ مارکیٹ بدل رہی ہے، اور حکمت عملی کو مسلسل ایڈجسٹ کرنے کی ضرورت ہے۔
حکمت عملی کے علاوہ، اس کھوج سے کچھ غیر متوقع فوائد بھی حاصل ہوئے:
مقداری تجارت کی سمجھ بدل گئی ہے: میں سمجھتا تھا کہ مقداری تجارت کی حد بہت زیادہ ہے، جس کے لیے مضبوط پروگرامنگ کی مہارت اور ریاضیاتی بنیاد کی ضرورت ہوتی ہے۔ اس تجربے نے مجھے محسوس کیا کہ خیالات اور منطق زیادہ اہم ہیں۔ اچھے آلات کے ساتھ، تکنیکی حد اتنی زیادہ نہیں ہے جتنا کہ تصور کیا گیا ہے۔
سیکھنے کی طرف رویہ بدلا: ماضی میں، جب میں نے دلچسپ خیالات کا سامنا کیا، میں نے ہمیشہ سوچا، “جب میرے پاس وقت ہوگا تو میں اسے آزماؤں گا”، لیکن یہ اکثر بیکار میں ختم ہو جاتا ہے۔ اس تجربے نے مجھے یہ احساس دلایا کہ موجودہ ٹولز نے “ایک بار آزمانے” کو آسان بنا دیا ہے، کلید کام کرنے کی ہمت ہے۔
ناکامی پر نقطہ نظر بدل گیا ہے: جب حکمت عملی کا پہلا ورژن اچھی طرح سے کام نہیں کرتا تھا، میں نے فوری طور پر ہمت نہیں ہاری، لیکن مسئلہ کا تجزیہ کیا۔ اس عمل نے مجھے یہ احساس دلایا کہ ناکامی اکثر اختتام نہیں ہوتی بلکہ صحیح سمت تلاش کرنے کا اشارہ ہے۔
یہ حکمت عملی اب بھی میرے کوڈ بیس میں ہے اور میں اسے کبھی کبھار استعمال کرتا ہوں۔ اگرچہ یہ ایک بہترین حکمت عملی نہیں ہے، لیکن میں تلاش کے نتیجے میں اس سے کافی مطمئن ہوں۔
زیادہ اہم بات یہ ہے کہ اس تجربے نے مجھے اعتماد دیا۔ یہ پتہ چلتا ہے کہ خیال سے حکمت عملی کا فاصلہ اتنا دور نہیں جتنا میں نے سوچا تھا۔
اگلا میں اس ریسرچ کو جاری رکھنا چاہوں گا:
اگر آپ مقداری تجارت میں بھی دلچسپی رکھتے ہیں تو میری تجاویز یہ ہیں:
پیچھے مڑ کر دیکھیں، اس ریسرچ کا نقطہ آغاز صرف بلی بلی پر ایک تبصرہ تھا، لیکن اس نے مجھے ایک مکمل مقداری حکمت عملی کی ترقی کے عمل کا تجربہ کرنے کا موقع دیا۔
اس دور میں جہاں علم اور اوزار ہماری انگلیوں پر ہیں، شاید ہمارے پاس واقعی ایک بہادر کوشش کی کمی ہے۔ چاہے آپ مقداری نوآموز ہوں یا تجربہ کار تاجر، آپ ایک سادہ خیال کے ساتھ شروع کرنے کی کوشش کر سکتے ہیں اور دیکھ سکتے ہیں کہ آپ کہاں جا سکتے ہیں۔
اگلی دلچسپ حکمت عملی آپ کے ابھی پڑھے ہوئے تبصرے میں چھپی ہو سکتی ہے۔
ڈس کلیمر: یہ صرف ایک ذاتی ایکسپلوریشن کے تجربے کا اشتراک ہے، سرمایہ کاری کا مشورہ نہیں۔ تجارت خطرناک ہے، براہ کرم احتیاط سے فیصلے کریں۔