MT4 EA-ийн 130 алдааг хэрхэн шалгах вэ? Stop loss-ийн зайнаас динамик хязгаар хүртэлх дөрвөн алхамт арга
MT4 EA-ийн ERR_INVALID_STOPS алдааг өөрийн бүтээсэн цайвар цэнхэр урсгал диаграмаар алхам алхмаар шалгана: лог, үнийн нарийвчлал, MODE_STOPLEVEL болон динамик хязгаар. Stop loss-ийг сулруулж эрсдэлийг нуухгүй байхыг анхааруулав.
Зохиогч: Томас|EA ба MT4 практик|2026 оны 10 дугаар сарын 20
EA-г графикт холбож, автомат арилжааг асаасан ч захиалга илгээх үед "130" гарвал програмыг бүрэн эвдэрсэн гэж андуурдаг. MQL4-ийн лавлах баримт бичигт 130-ыг ERR_INVALID_STOPS гэж тодорхойлсон: хүсэлт дэх stop loss, take profit, pending order-ийн үнэ эсвэл тэдгээрийг нормчлох аргыг арилжааны сервер хүлээж аваагүй гэсэн үг. Энэ нь алдааг олох ул мөр бөгөөд stop loss-ийг сохроор сулруулах зөвшөөрөл биш. Энэ өгүүлэл дөрвөн алхамт шалгалтын аргаар ямар бүртгэлийг харахыг тайлбарлана.
Эхний алхам: аль хүсэлт амжилтгүй болсныг эхлээд тодорхойл
MT4 терминал эсвэл програмын холбогдох логыг нээж, алдаа гарсан серверийн цаг, валютын хос, захиалгын чиглэл, үйлдэл нь OrderSend эсвэл OrderModify эсэх, буцаасан алдааны кодыг бүртгэ. Лог дээр зөвхөн "захиалга амжилтгүй" гэсэн дөрвөн үг байвал EA-д нууц үг зэрэг мэдрэмтгий өгөгдөл гаргахгүйгээр хүсэлтийн үнэ, stop loss, take profit болон буцаах утгыг бүртгүүл. Нээлт амжилтгүй болсон, stop loss өөрчлөх амжилтгүй болсон, pending order амжилтгүй болсон гэдгийг эхлээд ялга; гурвын шалгах үнийн хамаарал өөр.
Бодит дансанд ижил амжилтгүй хүсэлтийг давтан илгээж "азаа туршиж" болохгүй. Давтан оролдлого нэмэлт ачаалал үүсгэж, зах зээл өөрчлөгдсөний дараа гэнэт амжилттай болж санамсаргүй позиц үүсгэж болно. Эхлээд симуляцийн орчинд давтан гаргаж, параметрийн хувилбар болон тухайн үеийн платформын үнийг хадгал.
Хоёр дахь алхам: Bid, Ask, Point болон Digits-ийг тулгах
MQL4-ийн MarketInfo нь тухайн валютын хосын Bid, Ask, Point болон Digits-ийг уншиж чадна. Point нь тухайн үнийн хамгийн бага харуулах нэгжийн нэг, Digits нь аравтын бутархайн тоог илэрхийлнэ; "10 point" хэдэн доллар болохыг тухайн валютын хосын бодит Point-оор тооцох ёстой бөгөөд өөр брокерийн алтны код болон нарийвчлалыг нэг гэж үзэж болохгүй. Үнийг дамжуулахын өмнө холбогдох оронгийн тоогоор нормчлох шаардлагатай.
Жишээ нь зөвхөн математик дүрслэл: хэрэв симуляцийн валютын хосын Point 0.01, хамгийн бага зай 50 point бол тооцоолсон зай нь 0.50 үнийн нэгж; Point 0.001 валютын хос бол 0.05. Энэ тоо нь өнөөдрийн ямар ч бодит платформын гэрээний дүрмийг илэрхийлэхгүй. Лог харахдаа худалдах, авах үнийг хамт хадгалж, худалдах үнээр авах үнийг шалгах ёстой талыг шалгах, эсвэл эсрэгээр нь хийхээс зайлсхий.
Гурав дахь алхам: MODE_STOPLEVEL болон захиалгын төрлийг шалга
Албан ёсны OrderSend баримт бичигт stop loss болон take profit нь зах зээлийн үнээс хэт ойр байж болохгүй; pending order-ийн төлөвлөсөн нээлтийн үнэ мөн одоогийн зах зээлээс хэт ойр байж болохгүй гэж тайлбарласан. MarketInfo(Symbol(),MODE_STOPLEVEL)-ээр нийтэд ил болсон хамгийн бага зайг point нэгжээр асууж болно. Дараа нь захиалга авах, худалдах эсвэл ямар нэгэн pending order эсэхээс хамаарч үнийн чиглэл, зай болон нормчлолыг тус тусад нь тулгах ёстой, бүх захиалгад нэг тогтмол зөрүүг хэрэглэхгүй.

Дээрх зураг нь өөрийн бүтээсэн урсгалын дүрслэл бөгөөд бодит үнэ эсвэл дансны мэдээлэл байхгүй. Хамгийн бага зай нь зөвхөн серверийн захиалгыг хүлээж авах техникийн хязгаар бөгөөд стратегийн хувьд зохистой stop loss-ийн зайтай тэнцэхгүй. 130-ыг тойрч гарахын тулд stop loss-ийг холдуулбал анх төлөвлөсөн нэг арилжааны эрсдэл өснө; эхлээд позицын хэмжээг дахин тооцож, шаардлагатай бол тухайн арилжааг орхих хэрэгтэй.
Дөрөв дэх алхам: 0 буцсан ч хязгаарлалт байхгүй гэж дүгнэж болохгүй
MQL4-ийн албан ёсны MODE_STOPLEVEL тайлбар нь онцгойлон анхааруулж: 0 буцах нь тогтмол хамгийн бага зай байхгүй гэсэн үг байж болох юм, эсвэл сервер терминалаар шууд илэрхийлж болохгүй динамик хязгаарлалт хэрэглэж байгаа гэсэн үг байж болно. Сүүлийн тохиолдолд 130 буцаж болзошгүй. Тиймээс "0 гэж олдвол stop loss-ийг үнэд наах" гэдэг нь үндэслэлгүй. Зах зээл огцом өөрчлөгдөх үед үнийн шинэчлэл, спрэдийн өөрчлөлт болон серверийн дүрэм өмнө тооцоолсон зайг хүчингүй болгож болно.
Хэрэв кодын томьёо тухайн үеийн логтой таарч байгаа ч 130 гарсаар байвал амжилтгүй болсон цаг, валютын хос, захиалгын параметр болон платформын хувилбарыг хадгалж, брокерийн валютын хосын үзүүлэлт болон захиалгын хязгаарлалтыг шалгаж, платформын техникийн дэмжлэгээс баталгаажуул. Өөр платформын Point болон StopLevel-ээр энэ дансны дүрмийг таамаглахгүй, бүр stop loss-ийг устгаж жинхэнэ шалтгааныг нуухгүй байх хэрэгтэй.
Засварын дараах баталгаажуулалтын дараалал
Эхлээд симуляцийн дансанд хамгийн бага давтан гаргах боломжтой тохиолдлыг ажиллуул: ижил валютын хосоор дөрвөн үнийн параметр болон StopLevel-ийг бүртгэж, нэг удаагийн туршилтын хүсэлт илгээж, серверийн буцаалт болон захиалгын төлөвийг шалга. Дараа нь үнэ хурдан өөрчлөгдөх эсвэл өөр арилжааны цагийн үеийн зан төлөвийг турш. Програмд амжилтгүй болсны дараах зогсох эсвэл хөргөх механизм байгаа, дахин оролдох үед позиц давхар нээхгүй эсэхийг баталгаажуул. Эцэст нь эрсдэлийн төсөв, спрэд болон хүлээн зөвшөөрөх алдагдал анхны төлөвлөгөөнд нийцэж байгаа эсэхийг тулга.
130 алдааны шалгалтын гол нь "хүсэлт яагаад татгалзагдсан бэ" гэдэг бөгөөд "хэрхэн албадан гүйцэтгүүлэх вэ" биш. EA-ийн ажиллагааны үр дүн стратегийн логик, сүлжээ болон платформын гүйцэтгэлээс хамаарна; ямар ч засвар ашиг олох эсвэл алдагдалаас зайлсхийхийг баталгаажуулахгүй. Хөшүүрэгтэй арилжаа нь их хэмжээний алдагдал учруулж болно.