Một số thắc mắc về MQL5

Một số thắc mắc về MQL5

Một số thắc mắc về MQL5

PeterTran

Active Member
38
15
Xin chào các anh em pro MQL5, mình mới tập viết 1 bot cơ bản nhưng vướng phải 1 số điều như sau, xin các bác giúp đỡ

1. iATR trong MQL5 cho kết quả khác với ta.atr trên tradingview. Mình dùng iATR cơ bản và Comment ra kết quả nhưng không hiểu sao cách biệt rất lớn với ta.atr trên tradingview, có bác nào biết tại sao ko?

2. VWAP Indicator: Mình dùng indicator này https://www.mql5.com/en/market/prod...rket+MT5+Free+Search+Rating006:vwap+indicator. Indicator này yêu cầu input ngày giờ bắt đầu vẽ nên mình tạo iCustom như sau (đặt trong ontick) vwap_handle = iCustom(_Symbol,PERIOD_CURRENT, "VWAP Indicator", StringToTime("09:00")); >> khi qua ngày hôm sau nó lại vẽ thêm 1 đường nữa và mình không biết làm sao xóa đường cũ đi

3. Vẽ VLine ở starttime và endtime: Mình vẽ được trên 1 ngày nhưng không biết làm sao vẽ được trên các ngày trong quá khứ:


//Delete yesterday London killzone
ObjectDelete(_Symbol, "LondonStart");
ObjectDelete(_Symbol, "LondonEnd");

//Draw today London killzone
ObjectCreate(_Symbol,"LondonStart",OBJ_VLINE, 0, StringToTime(StartTime), 0 );
ObjectCreate(_Symbol,"LondonEnd",OBJ_VLINE, 0, StringToTime(EndTime), 0 );

4. Mình có 1 indicator trên tradingview nhưng không có source, có cách nào lấy dữ liệu ở tradingview và dùng ở mt5 không? xin cám ơn

5. Mình muốn đổi màu candle khi thỏa điều kiện (ví dụ close > vwap daily) thì phải dùng hàm nào? Xin các bác khai sáng.

Xin cám ơn
 

Giới thiệu sách Trading hay
Phương Pháp Wyckoff Hiện Đại - Kỹ thuật Nhận diện Xu hướng Thị trường Tiềm năng

Phương pháp Wyckoff là một phương pháp price action kinh điển và đem lại thành công cho nhiều trader. Phương pháp này là nền tảng của nhiều phương pháp trading nổi tiếng khác
1. Cách tính trong MQL5 và Tradingview có một số chỗ khác nhau, cơ bản là về cách tính MA. Muốn khớp 100% thì phải viết lại hàm chứ ko dùng hàm mặc định của MQL5.

2,3. ObjectCreate,ObjectDelete dùng sai, tham số đầu tiên là chart_id chứ ko phải Symbol, để bằng 0 là vẽ, xoá Object của chart hiện tại

4. Không, may ra tạo cảnh báo gửi về mail rồi dùng MT5 lấy xuống nhưng mà kiếm indi khác cho nhanh, chẳng có indi nào là không thể thay thế được

5. Làm một indicator type DRAW_COLOR_CANDLES vẽ đè lên chart chính, muốn đổi màu gì cũng được.
 
1. Cách tính trong MQL5 và Tradingview có một số chỗ khác nhau, cơ bản là về cách tính MA. Muốn khớp 100% thì phải viết lại hàm chứ ko dùng hàm mặc định của MQL5.

2,3. ObjectCreate,ObjectDelete dùng sai, tham số đầu tiên là chart_id chứ ko phải Symbol, để bằng 0 là vẽ, xoá Object của chart hiện tại

4. Không, may ra tạo cảnh báo gửi về mail rồi dùng MT5 lấy xuống nhưng mà kiếm indi khác cho nhanh, chẳng có indi nào là không thể thay thế được

5. Làm một indicator type DRAW_COLOR_CANDLES vẽ đè lên chart chính, muốn đổi màu gì cũng được.

Thanks bác đã trả lời rất đầy đủ, bác thiệt dễ sợ. Cái số 2 và số 3 mình ko hiểu sao để _Symbol nó vẫn vẽ. Câu số 2 và số 3 bác vẫn chưa giúp được mình nên mình để code lên đây bác ngó xem thử :) xin cám ơn

include <Trade\Trade.mqh>
CTrade trade;
int vwap_handle;

void OnTick()
{
DrawLondonKillzone();
vwap_handle = iCustom(_Symbol,PERIOD_CURRENT, "VWAP Indicator", StringToTime("09:00"));

double vwap_buffer[];
ArraySetAsSeries(vwap_buffer, true);

CopyBuffer(vwap_handle, 0, 0, 3, vwap_buffer);

double vwap_1 = NormalizeDouble(vwap_buffer[1], _Digits);

Comment("VWAP[1] =", vwap_1, "\n");
}
//+------------------------------------------------------------------+
void DrawLondonKillzone()
{
string StartTime = "09:00";
string EndTime = "12:00";

//Delete yesterday London killzone
ObjectDelete(0, "LondonStart");
ObjectDelete(0, "LondonEnd");

//Draw today London killzone
ObjectCreate(0,"LondonStart",OBJ_VLINE, 0, StringToTime(StartTime), 0 );
ObjectCreate(0,"LondonEnd",OBJ_VLINE, 0, StringToTime(EndTime), 0 );

// set the line color
ObjectSetInteger(0, "LondonStart", OBJPROP_COLOR, clrYellowGreen);
ObjectSetInteger(0, "LondonEnd", OBJPROP_COLOR, clrYellowGreen);
}

Đây là khi mình chạy trên strategy tester, vẽ được 2 đường vline nhưng chỉ trong ngày, qua ngày hôm sau sẽ bị xóa, có cách nào vẽ được nhiều ngày ko bác? và đường vwap thì qua ngày hôm sau nó lại vẽ đè thêm 1 đường nữa.
upload_2023-4-18_15-21-17.png
 
Thanks bác đã trả lời rất đầy đủ, bác thiệt dễ sợ. Cái số 2 và số 3 mình ko hiểu sao để _Symbol nó vẫn vẽ. Câu số 2 và số 3 bác vẫn chưa giúp được mình nên mình để code lên đây bác ngó xem thử :) xin cám ơn

include <Trade\Trade.mqh>
CTrade trade;
int vwap_handle;

void OnTick()
{
DrawLondonKillzone();
vwap_handle = iCustom(_Symbol,PERIOD_CURRENT, "VWAP Indicator", StringToTime("09:00"));

double vwap_buffer[];
ArraySetAsSeries(vwap_buffer, true);

CopyBuffer(vwap_handle, 0, 0, 3, vwap_buffer);

double vwap_1 = NormalizeDouble(vwap_buffer[1], _Digits);

Comment("VWAP[1] =", vwap_1, "\n");
}
//+------------------------------------------------------------------+
void DrawLondonKillzone()
{
string StartTime = "09:00";
string EndTime = "12:00";

//Delete yesterday London killzone
ObjectDelete(0, "LondonStart");
ObjectDelete(0, "LondonEnd");

//Draw today London killzone
ObjectCreate(0,"LondonStart",OBJ_VLINE, 0, StringToTime(StartTime), 0 );
ObjectCreate(0,"LondonEnd",OBJ_VLINE, 0, StringToTime(EndTime), 0 );

// set the line color
ObjectSetInteger(0, "LondonStart", OBJPROP_COLOR, clrYellowGreen);
ObjectSetInteger(0, "LondonEnd", OBJPROP_COLOR, clrYellowGreen);
}

Đây là khi mình chạy trên strategy tester, vẽ được 2 đường vline nhưng chỉ trong ngày, qua ngày hôm sau sẽ bị xóa, có cách nào vẽ được nhiều ngày ko bác? và đường vwap thì qua ngày hôm sau nó lại vẽ đè thêm 1 đường nữa.
View attachment 325427
Mình ko có thời gian xem kỹ đâu nhưng muốn vẽ nhiều object trên 1 chart phải đặt tên khác nhau, bạn dùng 1 tên ví dụ "LondonStart" cho nhiều object thì nó vẫn chỉ có 1 cái. Tên phải thêm vào ví dụ "LondonStart_"+TimeToString(iTime(_Symbol,PERIOD_D1,0))
 
Thank
Mình ko có thời gian xem kỹ đâu nhưng muốn vẽ nhiều object trên 1 chart phải đặt tên khác nhau, bạn dùng 1 tên ví dụ "LondonStart" cho nhiều object thì nó vẫn chỉ có 1 cái. Tên phải thêm vào ví dụ "LondonStart_"+TimeToString(iTime(_Symbol,PERIOD_D1,0))

Cám ơn bác đã trả lời :)
 
AdBlock Detected

We get it, advertisements are annoying!

Sure, ad-blocking software does a great job at blocking ads, but it also blocks useful features of our website. For the best site experience please disable your AdBlocker.

Back
Bên trên