🐍 Practical Tutorial

Python (PyTorch + Sklearn) को ONNX में Export करें और MT5 में उपयोग करें

द्वारा Dan Machado · 11 मिनट पढ़ें

Step-by-step tutorial, बिना fluff: आप दो working ONNX models के साथ खत्म करते हैं (एक Sklearn Random Forest, एक PyTorch LSTM), MT5 Expert Advisor में उपयोग के लिए तैयार। Prerequisite: Python 3.10+ और MT5 installed।

Python environment setup

pip install MetaTrader5 numpy pandas scikit-learn
pip install onnx onnxruntime onnxmltools skl2onnx
pip install torch torchvision

भाग 1 — Random Forest (Sklearn) → ONNX

Use case: अगले candle की direction classify करें (ऊपर/नीचे) lagged returns के आधार पर। Random Forest हल्का है, तेज़ train होता है, baseline के लिए अच्छा।

Step 1: MT5 data collect करें

import MetaTrader5 as mt5
import pandas as pd

mt5.initialize()
rates = mt5.copy_rates_from_pos("EURUSD", mt5.TIMEFRAME_H1, 0, 20000)
df = pd.DataFrame(rates)
df['time'] = pd.to_datetime(df['time'], unit='s')
df.to_csv("eurusd_h1.csv", index=False)
mt5.shutdown()

Step 2: Random Forest train करें और export करें

import numpy as np
from sklearn.ensemble import RandomForestClassifier
from skl2onnx import convert_sklearn
from skl2onnx.common.data_types import FloatTensorType

X = np.load("X.npy")
y = np.load("y.npy")
split = int(len(X) * 0.8)

model = RandomForestClassifier(n_estimators=200, max_depth=8, random_state=42)
model.fit(X[:split], y[:split])
print(f"Accuracy: {model.score(X[split:], y[split:]):.3f}")

initial_type = [('input', FloatTensorType([None, 10]))]
onnx_model = convert_sklearn(model, initial_types=initial_type, target_opset=15)
with open("rf.onnx", "wb") as f:
    f.write(onnx_model.SerializeToString())

भाग 2 — LSTM (PyTorch) → ONNX

import torch
import torch.nn as nn

class LSTMTrader(nn.Module):
    def __init__(self):
        super().__init__()
        self.lstm = nn.LSTM(1, 32, 2, batch_first=True, dropout=0.2)
        self.fc = nn.Linear(32, 2)
    def forward(self, x):
        out, _ = self.lstm(x)
        return self.fc(out[:, -1, :])

model = LSTMTrader()
model.eval()
dummy_input = torch.randn(1, 10, 1)
torch.onnx.export(
    model, dummy_input, "lstm.onnx",
    input_names=['input'], output_names=['output'],
    dynamic_axes={'input': {0: 'batch'}, 'output': {0: 'batch'}},
    opset_version=15
)

भाग 3 — MT5 Expert Advisor में उपयोग

.onnx files MT5 installation के MQL5\Files folder में जाती हैं। EA में, OnnxCreate से load करें:

long handle = OnnxCreate("rf.onnx", ONNX_DEFAULT);

const long input_shape[]  = {1, 10};
const long output_shape[] = {1};
OnnxSetInputShape(handle, 0, input_shape);
OnnxSetOutputShape(handle, 0, output_shape);

matrix input(1, 10);
for(int i = 0; i < 10; i++) {
    double c0 = iClose(_Symbol, PERIOD_CURRENT, i + 1);
    double c1 = iClose(_Symbol, PERIOD_CURRENT, i + 2);
    input[0][i] = (float)((c0 - c1) / c1);
}

vector output(1);
OnnxRun(handle, ONNX_DEFAULT, input, output);
int direction = (int)output[0];

Strategy Tester में Validation

Live जाने से पहले, हमेशा MT5 Strategy Tester में backtest करें। Checklist: Profit factor > 1.5, max drawdown < 20%, 200+ trades, 30 दिन demo minimum, risk per trade ≤ 2%, stop loss हमेशा।

सामान्य Troubleshooting

  • 'Operator not supported': opset_version adjust करें (13, 14, 15, 17 try करें)
  • OnnxRun false return: shapes check करें
  • NaN predictions: feature scaling — Python और MQL5 में same normalize करें
  • विशाल model: सरल बनाएं

🚀 ONNX EA परीक्षण के लिए, मुफ्त Deriv MT5 डेमो ($10,000 वर्चुअल):

Deriv MT5 डेमो खोलें →

DM

Dan Machado

संस्थापक IA Trader Pro · AI ट्रेडिंग विशेषज्ञ

⚠️ अस्वीकरण: शैक्षिक सामग्री, निवेश सलाह नहीं। ट्रेडिंग में महत्वपूर्ण जोखिम शामिल है। AI मॉडल लाभ की गारंटी नहीं देते। वास्तविक पूंजी से ट्रेडिंग करने से पहले हमेशा डेमो पर परीक्षण करें। लेख में Deriv एफिलिएट लिंक है.