AI expert advisor sinov va optimallashtirish qoʻllanmasi | Deriv Blog
Toʻgʻri sinov usullari bilan AI expert advisoringizni mukammallashtiring. Bizning qoʻllanmamiz ishonchli savdo botlari uchun umumiy muammolar, sinov usullari va expert advisor optimallashtirishni qamrab oladi.
Deriv tahririyati · 21-aprel, 2025 · 4 daqiqa o'qish

AI savdo expert advisorlari allaqachon mavjud — lekin siz baribir ularni sinab koʻrishingiz va takomillashtirishingiz kerak.
Agar siz allaqachon Claude yoki ChatGPT kabi AI vositalaridan foydalanib, Deriv MT5 uchun expert advisor yoki Deriv cTrader uchun cBot yaratgan boʻlsangiz, bu ajoyib boshlanish. Ammo kod toʻgʻri koʻrinsa ham, bot ishlashiga taʼsir qiladigan xatolarni oʻz ichiga olishi mumkin.
Expert advisor (EA)ni jonli bozorda ishga tushirishdan oldin, uni sinab koʻrish va kutilganidek ishlayotganiga ishonch hosil qilish muhim.
Ushbu qoʻllanmada biz AI tomonidan yaratilgan EAlardagi keng tarqalgan kodlash xatolari, ularni qanday tuzatish va botingiz unumdorligini oshirish boʻyicha amaliy maslahatlarni koʻrib chiqamiz.
Keng tarqalgan AI MQL5 kodlash xatolari
Quyida AI tomonidan yaratilgan EAlarda eng koʻp uchraydigan muammolar va ularni tuzatish usullari keltirilgan:
- MQL5 da eʼlon qilinmagan identifikator xatosi
Bu xato bot toʻgʻri belgilannmagan oʻzgaruvchi yoki nomdan foydalanganda paydo boʻladi, masalan, parametr yetishmasa yoki iMA() kabi indikatorlarda notoʻgʻri nom ishlatilsa.
Tuzatish:
Indikator parametrlarini tekshiring va barcha oʻzgaruvchi nomlari MetaEditor (MT5 kodlash vositasi)da kutilganiga mos kelishiga ishonch hosil qiling.
- Buy/Sell savdo bajarish funksiyalari yetishmasligi
Baʼzi AI tomonidan yaratilgan botlar savdolarni ochish uchun zarur mantiqni oʻtkazib yuboradi.
Tuzatish:
Asosiy savdo bajarish funksiyalarini qoʻlda qoʻshing. Buy order joylash uchun asosiy tuzilma misoli:
void OpenBuy() {
MqlTradeRequest request; MqlTradeResult result;
request.action = TRADE_ACTION_DEAL;
request.type = ORDER_TYPE_BUY;
request.price = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
request.volume = 0.1; request.magic = 12345;
OrderSend(request, result);
}
Shuningdek, sell orderlar uchun mantiqni ham qoʻshing va savdolar qanday shartlarda joylashtirilishi kerakligini belgilang.
- Deriv cTrader da notoʻgʻri loop shartlari
Deriv cTrader da bot mantiqi OnBar() yoki OnTick() kabi maxsus funksiyalar ichida ishlashi kerak. Ular bozor harakatlanganda avtomatik ishga tushadi. Agar kodingiz ushbu boʻlimlardan tashqarida, masalan, notoʻgʻri loop yoki global scope da joylashgan boʻlsa, u kutilganidek ishlamaydi.
Tuzatish:
Barlar va tiklar OnBar() yoki OnTick() ichida qayta ishlanishiga ishonch hosil qiling. Bu botingizga backtesting va jonli savdo davomida yangi tiklar yoki barlarga toʻgʻri javob berish imkonini beradi.
- Balans foizi asosida lot hajmini notoʻgʻri hisoblash
AI lot hajmini hisob balansi asosida belgilashga harakat qilganda (masalan, har bir savdoda 2% xavf), u muhim tafsilotni — kontrakt hajmini — oʻtkazib yuborishi mumkin. Bu noaniq lot hajmlariga olib kelishi mumkin. Bu kod xatosini keltirib chiqarmaydi, lekin sinovda siz xavf sozlamalaringizga mos kelmaydigan savdo hajmlarini koʻrasiz, bu esa jonli savdolarda ortiqcha yoki kam taʼsirga olib keladi.
Tuzatish:
Kontrakt hajmini hisobga oladigan lot hajmi formuladan foydalaning, masalan:
//-----------------------------------------------------------------
double accountBalance = AccountInfoDouble(ACCOUNT_BALANCE);
double riskMoney = accountBalance * (RiskPercent / 100.0);
double tickValue = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE);
double tickSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE);
double pointValue = tickValue / tickSize;
double contractSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_CONTRACT_SIZE);
if(contractSize > 0)
pointValue = pointValue / contractSize;
double lotSize = riskMoney / (StopLossPoints * pointValue);
double minLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN);
double maxLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX);
double lotStep = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP);
lotSize = MathMax(lotSize, minLot);
lotSize = MathMin(lotSize, maxLot);
lotSize = MathFloor(lotSize / lotStep) * lotStep;
- Boshqa xatolar
Agar ushbu xatolardan biriga yoki boshqa birortasiga duch kelsangiz, muammoni aniqlash va tuzatishda yordam soʻrab doimo AI modelingizga murojaat qilishingiz mumkin.
Shunchaki xato xabari va tegishli kodni nusxalang, soʻng ularni AI modeliga yuboring. Koʻpincha u muammoni aniqlab, tuzatish taklif qila oladi yoki mumkin boʻlgan yechimlarni tavsiya etadi.
Maslahat: Jonli savdoga oʻtishdan oldin doimo backtest oʻtkazing. Bunday muammolar strategiyani haqiqiy bozor maʼlumotlari bilan sinab koʻrmaguningizcha namoyon boʻlmaydi.
AI tomonidan yaratilgan expert advisoringizni takomillashtiring
Botingiz ishlay boshlagach, uning unumdorligi va barqarorligini oshirish uchun kichik oʻzgarishlar kiritishingiz mumkin. Buning uchun bir nechta keng tarqalgan usullar:
- Yuqori oʻzgaruvchanlik yoki ulanish muammolari paytida kutilmagan xatti-harakatlarni boshqarish uchun xatolarni qayta ishlash mantiqini qoʻshing.
- Bozor foydangiz tomon harakatlanganda potentsial foydani qayd etish uchun trailing stop-loss dan foydalaning.
- Strategiyangiz tarixiy maʼlumotlar bilan qanday natija berganini koʻrish uchun backtest qiling.
- Oʻqilishi va samaradorligini oshirish uchun kodingizni tozalang va tartibga soling. Bu keyinchalik yangilash yoki nosozliklarni bartaraf etishni osonlashtiradi.
Maslahat: Botingiz qanday ishlashini qadam-baqadam sinash uchun MetaEditor Debugger (MT5 da) dan foydalaning.
Savdolarni backtest qilish nima uchun muhim
AI tomonidan yaratilgan botlar noldan kod yozmasdan savdolaringizni avtomatlashtirishning ajoyib usuli hisoblanadi. Ammo AI bilan ham, strategiyangiz jonli sharoitlarda yaxshi ishlashi uchun inson tekshiruvi va tuzatishlariga muhtoj.
Jonli savdoga oʻtishdan oldin, puxta sinovdan oʻtkazishga va kichik yaxshilanishlar kiritishga vaqt ajrating. Hatto mayda tuzatishlar ham EAngiz qanchalik barqaror va samarali ishlashida katta farq qilishi mumkin.