⏰ Time:
🌡️ Temp:
Loading...
📌 การเปลี่ยนแปลงที่สำคัญ v.2.0.3
โดย puk
•2025-09-02 02:20
ตัวชี้วัดใหม่:ADX:เพิ่มใน apply_indicators:python
df['adx'] = ta.trend.ADXIndicator(high=df['high'], low=df['low'], close=df['close'], window=params['adx_window']).adx()
เพิ่มเงื่อนไขใน evaluate_signals:python
if last_row['adx'] > params['adx_threshold']:
signals.append('BUY_SELL_ADX')
signal_desc.append(f"ADX > {params['adx_threshold']}")
ใช้ใน timeframe ยาว (4h, 8h, 1d) เพื่อยืนยันแนวโน้มที่แข็งแกร่ง
VWAP:เพิ่มฟังก์ชัน calculate_vwap:python
def calculate_vwap(df):
typical_price = (df['high'] + df['low'] + df['close']) / 3
vwap = (typical_price * df['volume']).cumsum() / df['volume'].cumsum()
return vwap
เพิ่มเงื่อนไขใน evaluate_signals:python
if last_row['close'] > last_row['vwap']:
signals.append('BUY_VWAP')
signal_desc.append("Price > VWAP")
elif last_row['close'] < last_row['vwap']:
signals.append('SELL_VWAP')
signal_desc.append("Price < VWAP")
ใช้ใน timeframe ยาว (4h, 8h, 1d) เพื่อวัดว่าราคาอยู่เหนือหรือใต้ค่าเฉลี่ยถ่วงน้ำหนัก
SL และ TP ตาม Timeframe:เพิ่ม timeframe_sl_tp_multipliers:python
timeframe_sl_tp_multipliers = {
'1m': {'sl': 1.5, 'tp': 1.0},
'5m': {'sl': 1.5, 'tp': 1.0},
'15m': {'sl': 2.0, 'tp': 1.5},
'30m': {'sl': 2.0, 'tp': 1.5},
'1h': {'sl': 2.5, 'tp': 2.0},
'4h': {'sl': 2.5, 'tp': 2.0},
'8h': {'sl': 3.0, 'tp': 2.5},
'1d': {'sl': 3.0, 'tp': 2.5}
}
ปรับใน backtest และ simulate_trading:python
atr = last_row['atr'] if 'atr' in last_row else 1.0
sl_price = entry_price - (atr * multipliers['sl']) # Long
tp_price = entry_price + (atr * multipliers['tp']) # Long
sl_price = entry_price + (atr * multipliers['sl']) # Short
tp_price = entry_price - (atr * multipliers['tp']) # Short
ตัวอย่าง: ถ้า ATR = 100 USDT ใน timeframe 1h:SL = 2.5 * 100 = 250 USDT
TP = 2.0 * 100 = 200 USDT
เลือกตัวชี้วัดตาม Timeframe:เพิ่ม timeframe_indicators:python
timeframe_indicators = {
'1m': ['rsi', 'stoch', 'macd'],
'5m': ['rsi', 'stoch', 'macd'],
'15m': ['sma', 'macd', 'bb'],
'30m': ['sma', 'macd', 'bb'],
'1h': ['sma', 'macd', 'bb', 'adx'],
'4h': ['sma', 'adx', 'vwap'],
'8h': ['sma', 'adx', 'vwap'],
'1d': ['sma', 'adx', 'vwap']
}
ปรับ apply_indicators และ evaluate_signals ให้ใช้เฉพาะตัวชี้วัดที่กำหนดสำหรับ timeframe นั้น
ปรับจำนวนสัญญาณที่ต้องใช้:1m, 5m: ต้องมี 4 สัญญาณ
15m, 30m: ต้องมี 5 สัญญาณ
1h, 4h, 8h, 1d: ต้องมี 6 สัญญาณ
python
required_signals = 4 if timeframe in ['1m', '5m'] else 5 if timeframe in ['15m', '30m'] else 6
ลดการแจ้งเตือน "No signal detected":ใน evaluate_signals:python
else:
if mode != 'backtest': # Skip logging in backtest
log_status("No signal detected")
ทำให้ log ใน backtest สะอาดขึ้น โดยแสดงเฉพาะสัญญาณ BUY/SELL และการเปิด/ปิด position
ผลกระทบของการเปลี่ยนแปลงตัวชี้วัดใหม่:ADX: ช่วยยืนยันแนวโน้มที่แข็งแกร่งใน timeframe ยาว (4h, 8h, 1d) ทำให้สัญญาณ BUY/SELL น่าเชื่อถือมากขึ้นในช่วงที่มีแนวโน้มชัดเจน
VWAP: เพิ่มมิติการวิเคราะห์โดยใช้ volume ทำให้เหมาะสำหรับ timeframe ยาวที่ volume มีผลมาก
SL และ TP อัตโนมัติ:การใช้ ATR ทำให้ SL/TP ปรับตามความผันผวนของตลาด:Timeframe สั้น (1m, 5m): SL/TP แคบลงเพื่อจับการเคลื่อนไหวเร็ว
Timeframe ยาว (8h, 1d): SL/TP กว้างขึ้นเพื่อรองรับการเคลื่อนไหวใหญ่
Risk-to-Reward Ratio ยังคงสมดุล (เช่น 1.5:1 ใน 1m, 1.2:1 ใน 1d)
เลือกตัวชี้วัดตาม Timeframe:Timeframe สั้น: เน้นตัวชี้วัดที่ตอบสนองเร็ว (RSI, Stochastic, MACD)
Timeframe กลาง: ใช้ตัวชี้วัดที่สมดุล (SMA, MACD, Bollinger Bands)
Timeframe ยาว: เน้นตัวชี้วัดที่ยืนยันแนวโน้ม (SMA, ADX, VWAP)
ลดจำนวนสัญญาณที่ต้องใช้ใน timeframe สั้น (4 แทน 6) เพื่อเพิ่มโอกาส trade
ลดการแจ้งเตือน:ลดความรกของ log ใน backtest ทำให้ง่ายต่อการวิเคราะห์ผลลัพธ์
ยังคงแจ้ง "No signal detected" ใน simulated trading เพื่อให้ทราบสถานะ