توسعه استراتژی کمی — از فرضیه تا تولید

ساخت یک استراتژی معاملاتی سودآور نیازمند چیزی بیش از احساس درونی است. این کار نیازمند فرضیه‌های قابل آزمایش، بک‌تستینگ دقیق و بهینه‌سازی دقیق برای جلوگیری از انطباق بیش از حد با داده‌های تاریخی است. این راهنما شما را از طریق ساخت یک استراتژی کمی از اصول اولیه راهنمایی می‌کند — همان روش‌شناسی که الگوریتم‌های پشت Smart Money API را قدرت می‌بخشد.

اصل حیاتی: 95% از معامله‌گران شکست می‌خورند زیرا بر روی داده‌های درون‌نمونه بهینه‌سازی می‌کنند. استراتژی‌ای که 200% بازدهی بر روی داده‌های تاریخی دارد، به احتمال زیاد در معاملات زنده ضرر می‌دهد. یاد بگیرید چگونه از این تله اجتناب کنید.

مرحله فرضیه

با یک ادعای قابل ابطال شروع کنید

هر استراتژی با یک فرضیه خاص و قابل آزمایش شروع می‌شود. نه اینکه "بیت‌کوین گاهی اوقات بالا می‌رود" بلکه "وقتی نرخ‌های تأمین مثبت باشد و اجماع نهنگ‌ها برای خرید بیش از 65% باشد، شمع 4 ساعته بعدی با احتمال 56% بالاتر بسته می‌شود."

فرضیه‌های خوب:

فرضیه‌های بد:

لبه خود را تعریف کنید

چه چیزی می‌دانید که بازار آن را قیمت‌گذاری نکرده است؟ برای Smart Money API، این است: "تغییر اجماع نهنگ‌ها 2-4 ساعت قبل از واکنش خرده‌فروشان اتفاق می‌افتد. اگر ما 250 کیف پول برتر را در زمان واقعی رصد کنیم، می‌توانیم حرکت را پیش‌بینی کنیم."

چارچوب استراتژی

1. شرایط ورود

چه زمانی وارد می‌شوید؟ صریح باشید:

Python — منطق ورود
# Strategy: Whale Consensus + Derivatives Confluence
def should_enter_long(symbol, bar):
# Condition 1: Whale consensus > 65% long
whale_long_pct = get_whale_consensus(symbol)
cond_whale = whale_long_pct > 0.65
# Condition 2: Funding rate positive and increasing
fr_current = get_funding_rate(symbol)
fr_previous = get_funding_rate(symbol, offset=1)
cond_fr = (fr_current > 0) and (fr_current > fr_previous)
# Condition 3: LSR > 1.25 (more longs than shorts)
lsr = get_long_short_ratio(symbol)
cond_lsr = lsr > 1.25
# Condition 4: Price above 50-day MA (uptrend context)
ma_50 = get_sma(symbol, 50)
cond_trend = bar.close > ma_50
return cond_whale and cond_fr and cond_lsr and cond_trend

2. شرایط خروج

چه زمانی خارج می‌شوید؟ اهداف سود و حد ضرر را تعریف کنید:

Python — منطق خروج
def should_exit_long(entry_price, current_price, time_in_trade):
pnl_pct = (current_price - entry_price) / entry_price
# Take profit at +2%
if pnl_pct > 0.02:
return True, "profit_target"
# Stop loss at -1%
if pnl_pct < -0.01:
return True, "stop_loss"
# Time-based exit: close after 4 hours
if time_in_trade > timedelta(hours=4):
return True, "time_exit"
return False, None

3. اندازه موقعیت

چقدر در هر معامله ریسک می‌کنید؟ از معیار کلی یا شرط‌بندی کسری ثابت استفاده کنید:

Python — اندازه موقعیت
def calculate_position_size(account_balance, win_rate, avg_win, avg_loss):
# Kelly Criterion: f* = (p*b - q) / b
# p = win rate, b = win/loss ratio, q = loss rate
p = win_rate
q = 1 - win_rate
b = avg_win / avg_loss
kelly_fraction = (p * b - q) / b
# Use 25% of Kelly to be conservative (avoid bankruptcy)
position_fraction = kelly_fraction * 0.25
risk_amount = account_balance * position_fraction
return risk_amount

ساخت یک بک‌تستر

موتور بک‌تست مبتنی بر رویداد

Python — چارچوب بک‌تست
class BacktestEngine:
def __init__(self, initial_capital=10000):
self.capital = initial_capital
self.trades = []
self.equity_curve = []
def run(self, data, strategy):
for i, bar in enumerate(data):
# بررسی شرایط خروج برای معاملات باز
for trade in self.trades:
should_close, reason = trade.check_exit(bar.close)
if should_close:
pnl = (bar.close - trade.entry_price) * trade.size
self.capital += pnl
self.trades.remove(trade)
# بررسی شرایط ورود
if strategy.should_enter(bar):
size = calculate_position_size(...)
trade = Trade(entry_price=bar.close, size=size)
self.trades.append(trade)
self.equity_curve.append(self.capital)
return self.calculate_metrics()

معیارهای کلیدی بکتست

پرهیز از بهینه‌سازی بیش از حد

تله بیش‌برازش

اگر پارامترها را روی داده‌های تاریخی آنقدر تنظیم کنید تا بازده 200% شود، در معاملات واقعی ناامید خواهید شد. از تست‌های سخت‌گیرانه خارج از نمونه استفاده کنید:

اعتبارسنجی پیاده‌روی به جلو: روی 1 سال داده بهینه‌سازی کنید، روی 3 ماه بعدی تست کنید. سپس روی سال‌های 2-3 بهینه‌سازی کنید، روی فصل اول سال 3 تست کنید. این روند را در کل مجموعه داده تکرار کنید. فقط نتایج خارج از نمونه را گزارش دهید.

حساسیت پارامتر

ترکیب‌های مختلف پارامترها را با جستجوی شبکه‌ای تست کنید، اما پیچیدگی را جریمه کنید:

Python — جستجوی شبکه‌ای با پیاده‌روی به جلو
def walk_forward_optimization(data, param_ranges):
results = []
train_window = 252 # 1 سال داده روزانه
test_window = 63 # 3 ماه
for i in range(0, len(data) - train_window - test_window, test_window):
train_data = data[i:i+train_window]
test_data = data[i+train_window:i+train_window+test_window]
# بهینه‌سازی روی داده‌های آموزشی
best_params = None
best_return = -float('inf')
for params in param_combinations(param_ranges):
backtest_result = backtest(train_data, params)
if backtest_result.return_pct > best_return:
best_return = backtest_result.return_pct
best_params = params
# تست روی داده‌های دیده نشده
oos_result = backtest(test_data, best_params)
results.append({"is": best_return, "oos": oos_result.return_pct})
return results

انتقال به محیط عملیاتی

معامله کاغذی اول

قبل از ریسک کردن سرمایه واقعی، به مدت 2-4 هفته معامله کاغذی (شبیه‌سازی شده) انجام دهید. استراتژی زنده شما به دلیل لغزش، تأخیر و اجرا، 5-15% کمتر از بکتست عمل خواهد کرد. اگر معامله کاغذی با بکتست مطابقت نزدیکی داشت، آماده هستید.

مدیریت ریسک در معاملات زنده

معامله زنده متفاوت است. محدودیت‌های سخت تعیین کنید:

ادغام با Smart Money API

از امتیازات تأیید ما به عنوان پیش‌فیلتر یا ضریب روی سیگنال‌های خود استفاده کنید:

Python — ادغام API
import requests
def execute_with_confirmation(symbol, direction, signal_strength):
# دریافت تأیید Smart Money
response = requests.get(
f"https://api.smartmoneyapi.com/v1/confirm?symbol={symbol}&direction={direction}",
headers={"X-API-Key": API_KEY}
)
data = response.json()
# اعمال ضریب اندازه بر اساس اطمینان Smart Money
if data["confidence"] == بالا:
position_size = base_size * 1.5
elif data[اعتماد] == متوسط:
position_size = base_size * 1.0
elif data[اعتماد] == پایین:
position_size = base_size * 0.5
elif data[اعتماد] == وتو:
return رد کردن # معامله نکنید
# اجرای معامله با اندازه نهایی
execute_order(symbol, direction, position_size)

استراتژی‌های بهتر با سیگنال‌های Smart Money بسازید

ردیابی نهنگ‌ها، هوش مشتقات و معیارهای زنجیره‌ای را در مدل‌های کمی خود ادغام کنید. استراتژی‌های بکتست شده با افزودن تأییدیه Smart Money 5-8% بهبود می‌یابند.

شروع بکتست رایگان →