Lập trình MQL – Expert Advisor – Indicator
Số là em có con EA gấp thếp,nhưng bị mất điện đột ngột tắt máy bật lại nó không gấp thếp được nữa mà vào lệnh lại từ đầu,nghĩa là máy bật liên tục thì nó nhớ lệnh lỗ để gấp thếp,nhưng tắt máy bật lại thì nó không nhớ nữa,các bác có cao kiến gì không giúp em với ạ!
nguyenhoan
EA thông thường làm đơn giản nên khi mất điện (bị tắt MT4) sẽ mất hết dữ liệu bộ nhớ nên không xử lý tiếp được chuỗi lệnh, bạn đành phải xử lý tạm bằng tay, 1 số trường hợp sẽ vất vả và dễ có sai sót vì khó canh lệnh nhiều tiếng được.
Với EA làm tốt sẽ có lập trình cơ chế riêng tiếp nhận hệ thống lệnh đã mở + tái lập hiện trạng giao dịch cũ để giao dịch tiếp bình thường khi có sự cố như trên.
Nếu bạn cần xử lý vd này liên hệ (thông tin của tôi ở phần chữ ký ) tôi có thể giúp bạn.
doantham
Vậy là phải code bot riêng đứng ko ạ!
nguyenhoan
Đúng rồi bạn. code bot để nhận lệnh cũ và điều khiển giao dịch tiếp
Jewel Nguyen
Lưu các biến quan trọng với global variables bạn nhé
doantham bài này.
doantham
Bác ơi em khai báo như này có sai sót gì ko ạ?bác xem giúp em cái nhé!
Mã:int Experts; // Amount of EAs double Depo=10000.0, // Set deposit Persent=30, // Set percentage Money; // Desired money string Quantity="GV_Quantity"; // GV name //-------------------------------------------------------------------- //-------------------------------------------------------------------- int init() // Special funct. init() { Experts=GlobalVariableGet(Quantity); // Getting current value Experts=Experts+1; // Amount of EAs GlobalVariableSet(Quantity, Experts); // New value Money=Depo*Persent/100/Experts; // Money for EAs Alert("For EA in window ", Symbol()," allocated ",Money); return; // Exit init() } //-------------------------------------------------------------------- //+------------------------------------------------------------------+ int start() { if(Martingale)CalculateMartingale();Balance=AccountBalance(); double MyPoint=Point; if(Digits==3 || Digits==5) MyPoint=Point*10; int New_Experts= GlobalVariableGet(Quantity);// New amount of EAs if (Experts!=New_Experts) // If changed { Experts=New_Experts; // Now current Money=Depo*Persent/100/Experts; // New money value Alert("New value for EA ",Symbol(),": ",Money); } double TheStopLoss=0; double TheTakeProfit=0; if( TotalOrdersCount()==0 )
Jewel Nguyen
//+——————————————————————+
//| Expert initialization function |
//+——————————————————————+
int OnInit()
{
//—//—
return(INIT_SUCCEEDED);
}//+——————————————————————+
//| Expert tick function |
//+——————————————————————+
void OnTick()
{
//—}
//+——————————————————————+
//bạn thay init = Onint, start = OnTick
quocquang và doantham bài này.
doantham
Bạn ơi! code này mình lấy ở forum mql5,nhưng vẫn chưa hiểu rõ cách nó hoạt động,bạn có thể giải thích hộ mình chút ko.Mình chưa hiểu dữ liệu nó lưu vào file nào vậy nhỉ?
Jewel Nguyen
mình đâu có nhiều thời gian giải thích, tặng bạn từ khóa này “học lập trình mql4” nhé. Trên mạng rất nhiều hướng dẫn
Anh Nam 2
Biến nào cần lấy giá trị một lần thì cho vào onint, ea sẽ lấy ngay khi chạy lần đầu tiên.
Biến nào có giá trị thay đổi thường xuyên hoặc được tính lại mỗi khi thay đổi giá thì cho vào ontick.
quocquang bài này.