AI expert advisor testing and optimisation guide | Deriv Blog
නිසි පරීක්ෂණ ක්රම භාවිතයෙන් ඔබගේ AI expert advisor එක පරිපූර්ණ කරන්න. අපගේ මාර්ගෝපදේශය විශ්වාසනීය ට්රේඩිං බොට් සඳහා පොදු ගැටලු, පරීක්ෂණ ක්රම, සහ expert advisor optimization ආවරණය කරයි.
Deriv කණ්ඩායම · 21 April 2025 · 6 මිනිත්තු කියවීම

AI ට්රේඩිං expert advisors දැන් තිබේ — එහෙත් ඔබ තවමත් ඒවා පරීක්ෂා කර වැඩිදියුණු කළ යුතුය.
ඔබ දැනටමත් Claude හෝ ChatGPT වැනි AI මෙවලම් භාවිත කර Deriv MT5 සඳහා expert advisor එකක් හෝ Deriv cTrader සඳහා cBot එකක් නිර්මාණය කර ඇත්නම්, ඔබ හොඳ ආරම්භයක් ලබාගෙන ඇත. නමුත් කේතය නිවැරදි ලෙස පෙනුණත්, බොට් එක ක්රියා කරන ආකාරයට බලපාන වැරදි තවමත් එහි තිබිය හැකිය.
ඔබ ඔබේ expert advisor (EA) එක live market එකක ධාවනය කිරීමට පෙර, එය පරීක්ෂා කර ඔබ අපේක්ෂා කරන ආකාරයට ක්රියා කරන බව සහතික කිරීම වැදගත් වේ.
මෙම මාර්ගෝපදේශයේදී, AI මඟින් ජනනය කළ EAs තුළ ඇති පොදු coding වැරදි, ඒවා නිවැරදි කරන ආකාරය, සහ ඔබේ බොට්ගේ කාර්ය සාධනය වැඩි දියුණු කිරීමට ප්රායෝගික උපදෙස් හරහා අපි ඔබව ගෙන යන්නෙමු.
පොදු AI MQL5 coding දෝෂ
AI මඟින් ජනනය කළ EAs තුළ හමුවන වඩාත් පොදු ගැටලු කිහිපයක් සහ ඒවා නිවැරදි කරන ක්රම මෙසේය:
- MQL5 හි undeclared identifier දෝෂය
මෙම දෝෂය පෙනෙන්නේ බොට් එක නිසි ලෙස නිර්වචනය කර නැති variable එකක් හෝ නමක් භාවිත කරන විටය, උදාහරණයක් ලෙස parameter එකක් අතුරුදහන් වීම හෝ iMA() වැනි indicators තුළ වැරදි නමක් භාවිත කිරීම.
නිවැරදි කිරීම:
indicator එකේ parameters පරීක්ෂා කර සියලු variable නාම MetaEditor (MT5 හි coding tool) තුළ අපේක්ෂිත ඒවාට ගැළපෙන බව සහතික කරන්න.
- Buy/Sell trade ක්රියාත්මක කිරීමේ functions අතුරුදහන් වීම
සමහර AI මඟින් ජනනය කළ බොට්වල trades විවෘත කිරීමට අවශ්ය අත්යවශ්ය logic මඟහැරී යයි.
නිවැරදි කිරීම:
මූලික trade ක්රියාත්මක කිරීමේ functions අතින් එක් කරන්න. buy order එකක් තැබීමට මූලික ව්යුහයක උදාහරණයක් මෙන්න:
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);
}
sell orders සඳහාද logic ඇතුළත් කිරීමට සහ trades තැබිය යුතු කොන්දේසි නිර්වචනය කිරීමටද වග බලා ගන්න.
- Deriv cTrader තුළ වැරදි loop කොන්දේසි
Deriv cTrader තුළ, බොට්ගේ logic එක OnBar() හෝ OnTick() වැනි නිශ්චිත functions තුළ ක්රියාත්මක විය යුතුය. market එක චලනය වන විට මේවා ස්වයංක්රීයව ක්රියාත්මක වේ. ඔබේ code එක මෙම කොටස්වලින් පිටත, උදාහරණයක් ලෙස වැරදි loop එකක හෝ global scope එකක තබා ඇත්නම්, එය අපේක්ෂිත ලෙස ක්රියා නොකරනු ඇත.
නිවැරදි කිරීම:
bars සහ ticks OnBar() හෝ OnTick() තුළ හැසිරවෙන බව සහතික කරන්න. මෙය backtesting සහ live trading අතරතුර නව ticks හෝ bars වලට ඔබේ බොට් එක නිවැරදිව ප්රතිචාර දක්වීමට ඉඩ සලසයි.
- balance ප්රතිශතය මත lot size වැරදි ලෙස ගණනය කිරීම
AI එක ඔබේ account balance එක මත පදනම්ව lot size එක සැකසීමට උත්සාහ කරන විට (උදා., එක් trade එකකට 2% අවදානමට ලක් කිරීම), එය වැදගත් විස්තරයක් වන contract size එක මඟහැරිය හැක. මෙය වැරදි lot sizes වලට හේතු විය හැක. මෙය code දෝෂයක් ඇති නොකරන නමුත්, testing වලදී ඔබේ risk settings වලට නොගැළපෙන trade sizes ඔබට දැකගත හැකිය. එහි ප්රතිඵලයක් ලෙස live trades වලදී overexposure හෝ under-exposure සිදුවිය හැකිය.
නිවැරදි කිරීම:
contract size එක සැලකිල්ලට ගන්නා lot size එකක් සහිත formula එකක් භාවිත කරන්න, උදාහරණයක් ලෙස:
//-----------------------------------------------------------------
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;
- අනෙකුත් දෝෂ
ඔබට මෙම දෝෂවලින් එකක් හෝ වෙනත් ඕනෑම දෝෂයක් හමුවුවහොත්, ගැටලුව හඳුනාගෙන නිවැරදි කිරීමට සහාය සඳහා ඔබට සැමවිටම ඔබේ AI model එකෙන් උදව් ඉල්ලා සිටිය හැකිය.
දෝෂ පණිවිඩය සහ අදාළ code එක පිටපත් කර, ඒවා AI model එක සමඟ බෙදා ගන්න. බොහෝ අවස්ථාවලදී, එය ගැටලුව නිවැරදිව හඳුනාගෙන නිවැරදි කිරීමක් හෝ හැකි විසඳුම් යෝජනා කිරීමට සමත් විය යුතුය.
උපදෙස: live වෙත යාමට පෙර සෑම විටම backtest එකක් ධාවනය කරන්න. සැබෑ market දත්ත සමඟ strategy එක පරීක්ෂා කරන තෙක් මෙවැනි ගැටලු පෙනී නොපෙන්වනු ඇත.
ඔබේ AI මඟින් ජනනය කළ expert advisor එක වැඩිදියුණු කරන්න
ඔබේ බොට් එක ක්රියාත්මක වූ පසු, එහි කාර්ය සාධනය සහ ස්ථායිතාව වැඩි දියුණු කිරීමට කුඩා වෙනස්කම් කළ හැකිය. ඒ සඳහා භාවිත කළ හැකි පොදු hacks කිහිපයක් මෙන්න:
- අනපේක්ෂිත හැසිරීම් හසුරුවීමට error-handling logic එකක් එක් කරන්න, විශේෂයෙන් ඉහළ volatility හෝ සම්බන්ධතා ගැටලු ඇති අවස්ථාවලදී.
- market එක ඔබට වාසිදායක ලෙස චලනය වන විට විභව ලාභ lock කර ගැනීමට trailing stop-loss එකක් භාවිත කරන්න.
- එය කෙබඳු ලෙස ක්රියාකරන්න තිබුණේදැයි බැලීමට ඉතිහාසගත දත්ත සමඟ ඔබේ strategy එක backtest කරන්න.
- පසුව යාවත්කාලීන කිරීම හෝ ගැටලු නිරාකරණය කිරීම පහසු කර ගැනීමට ඔබේ code එක පිරිසිදු කර සංවිධානය කරන්න, එමඟින් readability සහ efficiency වැඩි දියුණු වේ.
උපදෙස: ඔබේ බොට් එක පියවරෙන් පියවර ක්රියා කරන ආකාරය පරීක්ෂා කිරීමට MetaEditor Debugger (MT5 හි) භාවිත කරන්න.
trades backtesting කිරීම තීරණාත්මක වන්නේ ඇයි
AI මඟින් ජනනය කළ බොට්වල, මුල සිටම code ලිවීමකින් තොරව ඔබේ trading ස්වයංක්රීය කිරීමට විශිෂ්ට ක්රමයකි. එහෙත් AI තිබුණද, live conditions තුළ හොඳින් ක්රියා කිරීමට ඔබේ strategy එකට තවමත් මිනිස් පරීක්ෂා කිරීම් සහ සකස් කිරීම් අවශ්ය වේ.
live වෙත යාමට පෙර, හොඳින් පරීක්ෂා කිරීමට සහ කුඩා වැඩිදියුණු කිරීම් කිරීමට කාලය ගන්න. කුඩා නිවැරදි කිරීම් පවා ඔබේ EA එක කෙතරම් ස්ථිරව සහ ඵලදායීව ක්රියා කරයිද යන්න මත විශාල වෙනසක් සිදු කළ හැකිය.