MT4 алтны EA амралтын өдөр логгүй байгаа нь гацсан уу? Эхлээд үнийн санал ба таймерын үйл явдлыг ялгана уу
OnTick нь графикийн валютын шинэ үнийн саналаас хамаардаг бол OnTimer нь програмаас захиалга шаарддаг. Үйл явдлын оролт, логгийн байршил болон дахин эхлүүлэх бүртгэлээр шалгаж, зах зээл хаалттай үед гаралт байхгүйгээр шууд алдаа гэж дүгнэхээс зайлсхий.
Зохиогч: Томас|MT4 практик|2026 оны 11-р сарын 14
Хураангуй: Амралтын өдөр терминал нээхэд EA-ийн интерфэйс байгаа ч удаан хугацаанд шинэ лог гарахгүй байгаа нь зөвхөн энэ үзэгдлээр програмыг гацсан гэж дүгнэх боломжгүй. Шалгалтын эхлэлд програмыг ямар үйл явдал идэвхжүүлдэг, тухайн оролт дээр үнэхээр лог хэвлэх эсэхийг тодорхойлж, дараа нь терминалын төлөвийг шалгана. Энэ нийтлэл нь бодит дансаар захиалга хийж програмыг туршихгүй бөгөөд урсгал диаграмыг аливаа EA туршилтад тэнцсэн гэдгийн баталгаа гэж үзэхгүй.
Шинэ үнийн санал байхгүй бол үнийн саналын үйл явдал үүсэхгүй байж болно
MetaQuotes-ийн албан ёсны MQL4 баримт бичигт EA-ийн хавсаргасан графикийн валют шинэ үнийн санал хүлээн авах үед л холбогдох NewTick үйл явдал үүсч, зөв зарласан OnTick боловсруулах функцийг дууддаг гэж тайлбарласан. Хэрэв програм шалгалт болон логгийг энэ оролт дотор бичсэн бол шинэ үнийн санал байхгүй хугацаанд шинэ гүйцэтгэлийн бүртгэл байхгүй байж болно.
Энэ нь бүх EA үнийн санал хүлээх ёстой гэсэн үг биш. Програм нь таймер эсвэл графикийн үйл явдал зэрэг оролтыг ашиглаж болно. Тиймээс "амралтын өдөр" гэж хараад бүх чимээгүй байдлыг нэг мөр тайлбарлах боломжгүй бөгөөд өөр валют шинэчлэгдсээр байгаа үзэгдлийг одоогийн алтны график заавал үнийн санал хүлээн авч байгаагийн нотолгоо гэж үзэж болохгүй.
Эхлээд програм ямар үйл явдлыг хүлээж байгааг танина

Зураг нь анхны урсгалын сургалтын диаграм бөгөөд бодит зах зээлийн хөдөлгөөн биш, мөн бодит арилжааны данс харуулаагүй. Эхний зам нь графикийн валютын шинэ үнийн саналаас хамаарна; хоёр дахь нь програмын таймерыг амжилттай захиалснаас хамаарна. Таймерын үйл явдал шалгалтын логикийг идэвхжүүлж болох ч одоогийн зах зээлд гүйлгээ хийх боломжтой гэсэн үг биш бөгөөд програм арилжааны нөхцөл болон өгөгдлийн хүчинтэй байдлыг үргэлж шалгах ёстой.
Албан ёсны зөвлөмжид эхлүүлэх үед таймерыг захиалж, устгах үед цуцлахыг заасан. Зөвхөн OnTimer функцийг бичсэн ч захиалаагүй бол түүнийг үе үе ажиллана гэж хэлж болохгүй. Функцийн нэр, параметр болон буцаах төрөл нь үйл явдлын боловсруулалтын шаардлагад нийцсэн байх ёстой бөгөөд аливаа үсгийн алдаа нь хүлээгдэж буй оролтыг дуудагдахгүй байх шалтгаан болж болно.
Энгийн хэрэглэгч хэрхэн алхам алхмаар шалгах вэ
Эхлээд данс, сервер, графикийн валютын нэр болон одоогийн холболтын төлөвийг шалгаж, зөв терминалыг харж байгаагаа баталгаажуулна. Сүүлийн үнийн саналын цаг болон платформын арилжааны цагийг тэмдэглэж, компьютер цагийг серверийн зах зээлийн цагаар орлуулж болохгүй. Амралтын өдрийн ердийн хаалт нь бусад бүтээгдэхүүний арилжааны хуваарь бүрэн ижил гэсэн үг биш тул тодорхой платформын зарлалыг баримтлах ёстой.
Дараа нь Experts болон Journal зэрэг холбогдох логгүйг харж, сүүлийн хэдэн эхлүүлэх, устгах эсвэл алдааны бүртгэлийг хадгална. Логгийн шүүлтүүр, огноо болон өөр терминал харсан эсэхэд анхаарна. Хэрэв EA өөрөө зөвхөн арилжааны нөхцөл үүсэх үед лог хэвлэдэг бол шинэ бүртгэл байхгүй нь зөвхөн хэвлэх нөхцөл хангагдаагүй байж болох бөгөөд үүгээр програм хэзээ ч ажиллаагүй гэдгийг баталж болохгүй.
Дараа нь EA-ийн тайлбарт таймерын шалгалт, зүрхний цохилтын гаралт эсвэл амралтын өдрийн засвар үйлчилгээний механизм байгаа эсэхийг шалгана. Эх код байхгүй бол хувилбар, параметр, графикийн валют, сүүлийн үнийн саналын цаг болон логгийг нийлүүлэгчид өгч шалгуулна, бүх бүтээгдэхүүн ижил үйл явдлын бүтэц ашигладаг гэж таамаглаж болохгүй.
Эх код байгаа бол юуг тэргүүлж шалгах вэ
Симуляцийн орчинд OnInit, OnTick, OnTimer зэрэг оролтын зарлал болон шаардлагатай захиалгыг шалгаж, тохирох давтамжтай оношилгооны логгоор бодит замыг баталгаажуулна. Лог нь үйл явдлын төрөл, валют болон өгөгдлийн цагийг бүртгэж, зөвхөн "хэвийн" гэж бичээд дахин шалгах боломжтой контекстгүй байхаас зайлсхий. Дансны нууц үг эсвэл бусад итгэмжлэлийг оношилгооны гаралтад бичиж болохгүй.
Терминалын ажиллагаа, график ачаалах, үйл явдал идэвхжих болон арилжаа гүйцэтгэх нь өөр өөр түвшин юм. Таймер гаралт өгсөөр байгаа нь зах зээлийн хөдөлгөөн шинэ гэдгийг баталж чадахгүй, мөн захиалга заавал илгээгдэнэ гэдгийг баталж чадахгүй. Үнийн саналын үйл явдал идэвхжихгүй үед арилжааны эрхийг сулруулж, захиалгыг давтан илгээж програмыг амьд эсэхийг шалгах нь бүр ч тохиромжгүй.
Хугацааны интервалыг олон дахин солих нь шалгалтад яагаад саад болж болох вэ
Албан ёсны баримт бичигт графикийн валют эсвэл хугацааны интервал өөрчлөгдөх, оролтын параметр өөрчлөгдөх нь устгах болон дахин эхлүүлэхтэй холбоотой гэж тайлбарласан. Олон дахин солих нь анхны асуудлыг шинэ эхлүүлэх үйл явцаар далдлаж болох бөгөөд програмыг төлөвөө дахин ачаалахыг идэвхжүүлж болно. Эхлээд лог болон параметрийг хадгалж, дараа нь тайлбарын дагуу аюулгүй орчинд шалгах ёстой, EA-г байнга дахин холбож ажиглаж санамсаргүй сэргэх эсэхийг харах биш.
EA бүр нээлттэй позиц сэргээх, хувьсагчийн тогтвортой байдал болон давтан захиалгаас хамгаалах хэрэгжилт нь өөр өөр. Энэ нийтлэл дахин ачаалах аюулгүй байдлыг баталгаажуулахгүй бөгөөд бодит нээлттэй позиц байгаа үед сохроор устгах эсвэл дахин эхлүүлэхийг зөвлөхгүй. Аливаа засвар үйлчилгээний үйлдлийн өмнө позицийг хэн удирдаж байгааг тодорхойлох ёстой.
Шалгалт дууссан эсэхийг хэрхэн тодорхойлох вэ
Хэрэв одоогийн валют шинэ үнийн саналгүй, логик зөвхөн үнийн саналын оролт дээр байгаа бөгөөд өөр алдааны нотолгоо байхгүй гэдгийг баталгаажуулсан бол зах зээл хүлээж байна гэж бүртгэж болох бөгөөд програмыг зассан гэж зарлахгүй. Хэрэв таймерын оролт ажиллах ёстой байсан ч гаралт үргэлжлүүлэн байхгүй бол захиалга, эхлүүлэх үр дүн болон програмын алдааг үргэлжлүүлэн шалгах ёстой, зах зээл хаалттай гэж бүгдийг тайлбарлаж болохгүй.
Үнийн санал сэргэсний дараа ч эхлээд цагийн тэмдэг болон төлөвийг шалгаж, дараа нь програм шинэ үйл явдлыг хүлээгдэж буй дагуу боловсруулж байгааг баталгаажуулна. Үйл явдал сэргэсэн нь арилжааны стратеги ашигтай давуу талтай гэдгийг баталж чадахгүй бөгөөд захиалга спред, гулсалт болон гүйцэтгэлийн эрсдэлд үргэлж тулгарна. Шалгалтын зорилго нь програмын бодит ямар түвшинд зогссоныг олж тогтоох бөгөөд бодит дансаар эрсдэл авч хариулт олох биш юм.