Ra lệnh, điều khiển AutoControl EA bot từ tin nhắn Telegram Full chức năng

Ra lệnh, điều khiển AutoControl EA bot từ tin nhắn Telegram Full chức năng

Ra lệnh, điều khiển AutoControl EA bot từ tin nhắn Telegram Full chức năng

Angela Moon

Active Member
150
88
Xin chào !
1. Mình xin giới thiệu AutoControl EA bot có full chức năng
- Bảng điều khiển trên biểu đồ
- Vào lệnh thủ công, bán tự động, tự động hoàn toàn gồm 20 chiến lược tích hợp sẵn
- Đầy đủ chỉ báo, vẽ trên chart
- Đa chức năng thông báo
- Đặc biệt có chức năng ra lệnh, điều khiển bot bằng Telegram
2. Video hướng dẫn cài đặt và sử dụng
Xem thêm chi tiết: https://youtu.be/njlqcwU2LqA

Tải xuống AutoControl EA bot tại:
https://autocontrol6.wordpress.com/
3. Các bạn lập trình phát triển bot có thể lấy cảm hứng từ AutoControl bot để phát triển theo ý thích.
Mọi đóng góp ý kiến và phản hồi xin gửi về
https://t.me/AutoControlAI_Group
Xin cảm ơn
 

Đính kèm

  • Signal.jpg
    Signal.jpg
    228.5 KB · Xem: 55
  • Signal2.jpg
    Signal2.jpg
    285.6 KB · Xem: 4
  • Panel.png
    Panel.png
    33 KB · Xem: 6
  • AutoTrade.jpg
    AutoTrade.jpg
    427.1 KB · Xem: 4
  • Advanced.jpg
    Advanced.jpg
    348 KB · Xem: 2

Giới thiệu sách Trading hay
Phương Pháp Mới Để Giao Dịch Kiếm Sống

Quyển sách của Tiến sỹ Alexander Elder đề cập đến những vấn đề cơ bản và cần thiết nhất với các trader. Sách được đánh giá rất cao trên toàn cầu
// Tạo lớp PatternDetector code mql5
// Lớp này sẽ phát hiện các mẫu nến trên biểu đồ và gửi thông báo cho người dùng
class PatternDetector
{
private:
// Các biến lưu trữ các giá trị của nến hiện tại và trước đó
double current_open;
double current_close;
double current_high;
double current_low;
double previous_open;
double previous_close;
double previous_high;
double previous_low;
public:
// Hàm khởi tạo lớp
void PatternDetectorInit()
{
// Lấy các giá trị của nến hiện tại và trước đó từ biểu đồ
current_open = iOpen(NULL,0,0);
current_close = iClose(NULL,0,0);
current_high = iHigh(NULL,0,0);
current_low = iLow(NULL,0,0);
previous_open = iOpen(NULL,0,1);
previous_close = iClose(NULL,0,1);
previous_high = iHigh(NULL,0,1);
previous_low = iLow(NULL,0,1);
}
// Hàm phát hiện mẫu nến đảo chiều Bullish Engulfing
bool DetectBullishEngulfing()
{
// Điều kiện cho mẫu nến này là:
// Nến trước đó là nến giảm (đóng cửa thấp hơn mở cửa)
// Nến hiện tại là nến tăng (đóng cửa cao hơn mở cửa)
// Thân nến hiện tại bao phủ hoàn toàn thân nến trước đó
if(previous_close < previous_open && current_close > current_open && current_close > previous_open && current_open < previous_close)
{
return true; // Trả về giá trị đúng nếu phát hiện được mẫu nến này
}
else
{
return false; // Trả về giá trị sai nếu không phát hiện được mẫu nến này
}
}
// Hàm phát hiện mẫu nến đảo chiều Bearish Engulfing
bool DetectBearishEngulfing()
{
// Điều kiện cho mẫu nến này là:
// Nến trước đó là nến tăng (đóng cửa cao hơn mở cửa)
// Nến hiện tại là nến giảm (đóng cửa thấp hơn mở cửa)
// Thân nến hiện tại bao phủ hoàn toàn thân nến trước đó
if(previous_close > previous_open && current_close < current_open && current_close < previous_open && current_open > previous_close)
{
return true; // Trả về giá trị đúng nếu phát hiện được mẫu nến này
}
else
{
return false; // Trả về giá trị sai nếu không phát hiện được mẫu nến này
}
}
// Hàm gửi thông báo cho người dùng khi phát hiện được mẫu nến đảo chiều
void SendAlert()
{
if(DetectBullishEngulfing()) // Nếu phát hiện được mẫu nến Bullish Engulfing
{
Alert("Phát hiện mẫu nến Bullish Engulfing tại thời điểm ", TimeToString(TimeCurrent()), ". Đây là dấu hiệu của xu hướng tăng."); // Gửi thông báo cho người dùng với thời gian và thông tin về mẫu nến
}

if(DetectBearishEngulfing()) // Nếu phát hiện được mẫu nến Bearish Engulfing
{
Alert("Phát hiện mẫu nến Bearish Engulfing tại thời điểm ", TimeToString(TimeCurrent()), ". Đây là dấu hiệu của xu hướng giảm."); // Gửi thông báo cho người dùng với thời gian và thông tin về mẫu nến
}
}
};
PatternDetector detector;
void OnInit()
{
detector.PatternDetectorInit();
}
void OnTick()
{
detector.SendAlert();
}
 

Đính kèm

  • PatternDetector.zip
    1.3 KB · Xem: 0
//Viết code lớp mql5 theo mô tả sau đây:
//Mô hình vai đầu vai cho thấy sự đảo chiều của xu hướng hiện tại. Mô hình này có thể xuất hiện trong cả xu hướng tăng và xu hướng giảm, nhưng có cấu trúc khác nhau. Mô hình vai đầu vai thuận được hình thành khi giá tạo ra ba đỉnh liên tiếp, trong đó đỉnh thứ hai (đầu) cao hơn hai đỉnh còn lại (vai trái và vai phải). Đường nối hai điểm thấp nhất giữa ba đỉnh được gọi là đường viền cổ. Khi giá phá vỡ đường viền cổ, mô hình hoàn thành và dự báo giá sẽ giảm. Mô hình vai đầu vai ngược được hình thành khi giá tạo ra ba đáy liên tiếp, trong đó đáy thứ hai (đầu) thấp hơn hai đáy còn lại (vai trái và vai phải). Đường nối hai điểm cao nhất giữa ba đáy được gọi là đường viền cổ. Khi giá vượt qua đường viền cổ, mô hình hoàn thành và dự báo giá sẽ tăng.
//Để giao dịch với mô hình vai đầu vai, người giao dịch có thể chờ xác nhận của sự phá vỡ hoặc vượt qua đường viền cổ, sau đó vào lệnh bán hoặc mua tùy theo loại mô hình. Điểm dừng lỗ có thể được đặt ở trên hoặc dưới vai phải, còn điểm chốt lời có thể được tính bằng khoảng cách từ đỉnh hoặc đáy cao nhất của mô hình tới đường viền cổ.
//Dưới đây là code lớp mql5 để phát hiện và giao dịch với mô hình vai đầu vai:
// Khai báo lớp mql5 cho mô hình vai đầu vai
//template<typename double>
//class HeadAndShoulders : public Pattern<double>
//{
class HeadAndShoulders
{
protected:
// Các biến lưu trữ thông tin về ba đỉnh hoặc ba đáy của mô hình
double left_peak;
double head_peak;
double right_peak;

// Các biến lưu trữ thông tin về hai điểm thấp hoặc cao nhất giữa ba đỉnh hoặc ba đáy
double left_neckline;
double right_neckline;

// Biến lưu trữ thông tin về loại mô hình: thuận hay ngược
bool is_reversed;

public:
// Hàm khởi tạo lớp
void HeadAndShouldersInit()
{
// Gán giá trị ban đầu cho các biến
left_peak = 0;
head_peak = 0;
right_peak = 0;
left_neckline = 0;
right_neckline = 0;
is_reversed = false;
}

// Hàm phát hiện mô hình vai đầu vai trên dữ liệu giá
bool Detect(double &price_data[])
{
// Kiểm tra số lượng phần tử của mảng dữ liệu giá
if(ArraySize(price_data) < 6)
return false; // Không đủ dữ liệu để phát hiện mô hình

// Tìm ba điểm cao nhất trong mảng dữ liệu giá
int left_index = ArrayMaximum(price_data, WHOLE_ARRAY, 0);
int head_index = ArrayMaximum(price_data, left_index - 1, 0);
int right_index = ArrayMaximum(price_data, head_index - 1, 0);

// Nếu không tìm thấy ba điểm cao nhất, thử tìm ba điểm thấp nhất
if(left_index == -1 || head_index == -1 || right_index == -1)
{
left_index = ArrayMinimum(price_data, WHOLE_ARRAY, 0);
head_index = ArrayMinimum(price_data, left_index - 1, 0);
right_index = ArrayMinimum(price_data, head_index - 1, 0);

// Nếu không tìm thấy ba điểm thấp nhất, trả về false
if(left_index == -1 || head_index == -1 || right_index == -1)
return false; // Không tìm thấy mô hình

// Nếu tìm thấy ba điểm thấp nhất, gán giá trị cho các biến tương ứng
left_peak = price_data[left_index];
head_peak = price_data[head_index];
right_peak = price_data[right_index];

// Đánh dấu loại mô hình là ngược
is_reversed = true;
}
else
{
// Nếu tìm thấy ba điểm cao nhất, gán giá trị cho các biến tương ứng
left_peak = price_data[left_index];
head_peak = price_data[head_index];
right_peak = price_data[right_index];

// Đánh dấu loại mô hình là thuận
is_reversed = false;
}

// Kiểm tra xem ba điểm cao hoặc thấp nhất có thoả mãn điều kiện của mô hình không
if(is_reversed)
{
// Nếu là mô hình ngược, kiểm tra xem có phải head_peak < left_peak và head_peak < right_peak không
if(head_peak >= left_peak || head_peak >= right_peak)
return false; // Không thoả mãn điều kiện của mô hình ngược
}
else
{
// Nếu là mô hình thuận, kiểm tra xem có phải head_peak > left_peak và head_peak > right_peak không
if(head_peak <= left_peak || head_peak <= right_peak)
return false; // Không thoả mãn điều kiện của mô hình thuận
}

// Tìm hai điểm thấp hoặc cao nhất giữa ba điểm cao hoặc thấp nhất
if(is_reversed)
{
// Nếu là mô hình ngược, tìm hai điểm cao nhất
int left_neckline_index = ArrayMaximum(price_data, left_index - 1, head_index + 1);
int right_neckline_index = ArrayMaximum(price_data, head_index - 1, right_index + 1);

// Nếu không tìm thấy hai điểm cao nhất, trả về false
if(left_neckline_index == -1 || right_neckline_index == -1)
return false; // Không tìm thấy mô hình

// Nếu tìm thấy hai điểm cao nhất, gán giá trị cho các biến tương ứng
left_neckline = price_data[left_neckline_index];
right_neckline = price_data[right_neckline_index];

}
else
{
// Nếu là mô hình thuận, tìm hai điểm thấp nhất
int left_neckline_index = ArrayMinimum(price_data, left_index - 1, head_index + 1);
int right_neckline_index = ArrayMinimum(price_data, head_index - 1, right_index + 1);

// Nếu không tìm thấy hai điểm thấp nhất, trả về false
if(left_neckline_index == -1 || right_neckline_index == -1)
return false; // Không tìm thấy mô hình

// Nếu tìm thấy hai điểm thấp nhất, gán giá trị cho các biến tương ứng
}
return false;
}
};
// Hàm lấy giá của các nến (bar)
MqlRates PriceInfomationArrayCustom[];
int SizeArrayPriceCustom=0;
void getPriceInfomationBarCustom(int posBar, ENUM_TIMEFRAMES iTimeFrame,int countbar)
{
ArraySetAsSeries(PriceInfomationArrayCustom,true);
double Data=CopyRates(Symbol(),iTimeFrame,posBar,countbar,PriceInfomationArrayCustom);
SizeArrayPriceCustom=ArraySize(PriceInfomationArrayCustom);
}
HeadAndShoulders DetectorShoulder;
void OnInit()
{
DetectorShoulder.HeadAndShouldersInit();
}
double DataPrice[];
input int NumberCandle=30; // Xét trong 30 cây nến
void OnTick()
{
getPriceInfomationBarCustom(0,PERIOD_H1,NumberCandle); // Lấy các mức giá của nến
for(int i=0;i<NumberCandle;i++)
{
DataPrice=PriceInfomationArrayCustom.close; // Chỉ xét giá đóng cửa
}
if(DetectorShoulder.Detect(DataPrice)==true) // Kiểm tra và phát hiện mô hình
{

Comment("Phát hiện mô hình vai đầu vai");
}
}
 

Đính kèm

  • ModulePatternChartDetector1.zip
    16.8 KB · Xem: 0
[Broken External Image]:https://c.mql5.com/31/851/the-investment-innovator-ea-screen-1475.gif
Phía trên là hình ảnh về bot tự động nhận diện các mô hình PatternChart
Đây là hình ảnh bot được bán trên mql5 bán với mức giá hiện tại là 999USD và dự định sẽ tăng giá.
Mục tiêu của tôi là xây dựng một bot tương tự như trên.
Tôi đang tạo các Module (giống như các viên gạch, miếng ghép) cơ bản, sau đó sẽ kết hợp chúng để tạo nên 1 bot hoàn chỉnh.
Các bạn yêu thích code EA bot mql5 có thể cùng tham gia, thảo luận, góp ý, hoặc tải code về xây dựng bot của riêng mình.
Ngay cả các bạn không biết code cũng có thể tải về để sử dụng cho mục định của mình.
Đây là bot đã hoàn chỉnh của mình và mình sẽ tích hợp chức năng trên vào AutoControl EA link tải xuống
Cảm ơn các bạn.:)
 
Xin chào !
Tôi đã tạo ra chiến lược mới được đặt tên là VirtualOrder:
Nguyên lý: Nó sẽ tạo ra các lệnh ảo, các lệnh ảo này cũng sẽ được tính toán số lô, và số Pip. Sau khi kết thúc số lệnh ảo được chỉ định nó sẽ vào lệnh thực.
Đặc biệt : Số lệnh ảo được chỉ định bạn có thể thay đổi trong phần Input.
Số lệnh ảo càng lớn: Tỉ lệ rủi ro càng thấp
Số lệnh ảo càng nhỏ: Hiệu suất làm việc càng cao
Hãy điều chỉnh nó theo nhu cầu của bạn.
Đây là link tải :
https://www.mediafire.com/download/jcaz40ux03adz9h
File cài đặt mặc định cho cặp XAUUSD, Chart H1, 5000USD.
Đây là một EA cơ bản, nó hoạt động rất nhanh trong hệ thống Backtest, bạn hãy tự kiểm tra nó ngay cả trên tài khoản thực,
Tôi sẽ tích hợp chiến lược này vào AutoControl EA, sau khi tôi hoàn tất các quá trình kiểm tra khắt khe.
nếu có bất kỳ vấn đề nào hãy phản hồi lại.
Cảm ơn
 
Ngày hôm qua mình đã chia sẻ trước với bạn về chiến lược mới này, Tuy nhiên đã chưa được tối ưu.
Nhận được phản hồi từ các thành viên đa phần mong muốn sử dụng với tài khoản nhỏ, vì vậy mình đã làm việc hết công suất để nhanh chóng tối ưu cho tài khoản nhỏ với số vốn ban đầu là 100USD.
Tải xuống tại đây:
https://www.mediafire.com/download/sdzdr6yyfim1xch
Kết quả kiểm tra được thực hiện trên sàn môi giới FBS, XAUUSD, H1, 100USD
Vui lòng phản hồi nhanh nhất có thể nếu gặp bất kỳ vấn đề gì, ví dụ kết quả kiểm tra lại không được như mô tả có thể do mỗi nhà môi giới là khác nhau, tuy nhiên hãy phản hồi để tôi sẽ kiểm tra lại nó cho bạn.
 

Đính kèm

  • TestGrap.jpg
    TestGrap.jpg
    277.9 KB · Xem: 1
  • Result.jpg
    Result.jpg
    268.1 KB · Xem: 1
  • TestGrap.jpg
    TestGrap.jpg
    277.9 KB · Xem: 1
  • Input.jpg
    Input.jpg
    225.2 KB · Xem: 3
  • Setting.jpg
    Setting.jpg
    134.6 KB · Xem: 1
  • VirtualOrder_AutoControl.zip
    597 KB · Xem: 0
//Viết code lớp mql5 theo mô tả sau đây:
//Mô hình vai đầu vai cho thấy sự đảo chiều của xu hướng hiện tại. Mô hình này có thể xuất hiện trong cả xu hướng tăng và xu hướng giảm, nhưng có cấu trúc khác nhau. Mô hình vai đầu vai thuận được hình thành khi giá tạo ra ba đỉnh liên tiếp, trong đó đỉnh thứ hai (đầu) cao hơn hai đỉnh còn lại (vai trái và vai phải). Đường nối hai điểm thấp nhất giữa ba đỉnh được gọi là đường viền cổ. Khi giá phá vỡ đường viền cổ, mô hình hoàn thành và dự báo giá sẽ giảm. Mô hình vai đầu vai ngược được hình thành khi giá tạo ra ba đáy liên tiếp, trong đó đáy thứ hai (đầu) thấp hơn hai đáy còn lại (vai trái và vai phải). Đường nối hai điểm cao nhất giữa ba đáy được gọi là đường viền cổ. Khi giá vượt qua đường viền cổ, mô hình hoàn thành và dự báo giá sẽ tăng.
//Để giao dịch với mô hình vai đầu vai, người giao dịch có thể chờ xác nhận của sự phá vỡ hoặc vượt qua đường viền cổ, sau đó vào lệnh bán hoặc mua tùy theo loại mô hình. Điểm dừng lỗ có thể được đặt ở trên hoặc dưới vai phải, còn điểm chốt lời có thể được tính bằng khoảng cách từ đỉnh hoặc đáy cao nhất của mô hình tới đường viền cổ.
//Dưới đây là code lớp mql5 để phát hiện và giao dịch với mô hình vai đầu vai:
// Khai báo lớp mql5 cho mô hình vai đầu vai
//template<typename double>
//class HeadAndShoulders : public Pattern<double>
//{
class HeadAndShoulders
{
protected:
// Các biến lưu trữ thông tin về ba đỉnh hoặc ba đáy của mô hình
double left_peak;
double head_peak;
double right_peak;

// Các biến lưu trữ thông tin về hai điểm thấp hoặc cao nhất giữa ba đỉnh hoặc ba đáy
double left_neckline;
double right_neckline;

// Biến lưu trữ thông tin về loại mô hình: thuận hay ngược
bool is_reversed;

public:
// Hàm khởi tạo lớp
void HeadAndShouldersInit()
{
// Gán giá trị ban đầu cho các biến
left_peak = 0;
head_peak = 0;
right_peak = 0;
left_neckline = 0;
right_neckline = 0;
is_reversed = false;
}

// Hàm phát hiện mô hình vai đầu vai trên dữ liệu giá
bool Detect(double &price_data[])
{
// Kiểm tra số lượng phần tử của mảng dữ liệu giá
if(ArraySize(price_data) < 6)
return false; // Không đủ dữ liệu để phát hiện mô hình

// Tìm ba điểm cao nhất trong mảng dữ liệu giá
int left_index = ArrayMaximum(price_data, WHOLE_ARRAY, 0);
int head_index = ArrayMaximum(price_data, left_index - 1, 0);
int right_index = ArrayMaximum(price_data, head_index - 1, 0);

// Nếu không tìm thấy ba điểm cao nhất, thử tìm ba điểm thấp nhất
if(left_index == -1 || head_index == -1 || right_index == -1)
{
left_index = ArrayMinimum(price_data, WHOLE_ARRAY, 0);
head_index = ArrayMinimum(price_data, left_index - 1, 0);
right_index = ArrayMinimum(price_data, head_index - 1, 0);

// Nếu không tìm thấy ba điểm thấp nhất, trả về false
if(left_index == -1 || head_index == -1 || right_index == -1)
return false; // Không tìm thấy mô hình

// Nếu tìm thấy ba điểm thấp nhất, gán giá trị cho các biến tương ứng
left_peak = price_data[left_index];
head_peak = price_data[head_index];
right_peak = price_data[right_index];

// Đánh dấu loại mô hình là ngược
is_reversed = true;
}
else
{
// Nếu tìm thấy ba điểm cao nhất, gán giá trị cho các biến tương ứng
left_peak = price_data[left_index];
head_peak = price_data[head_index];
right_peak = price_data[right_index];

// Đánh dấu loại mô hình là thuận
is_reversed = false;
}

// Kiểm tra xem ba điểm cao hoặc thấp nhất có thoả mãn điều kiện của mô hình không
if(is_reversed)
{
// Nếu là mô hình ngược, kiểm tra xem có phải head_peak < left_peak và head_peak < right_peak không
if(head_peak >= left_peak || head_peak >= right_peak)
return false; // Không thoả mãn điều kiện của mô hình ngược
}
else
{
// Nếu là mô hình thuận, kiểm tra xem có phải head_peak > left_peak và head_peak > right_peak không
if(head_peak <= left_peak || head_peak <= right_peak)
return false; // Không thoả mãn điều kiện của mô hình thuận
}

// Tìm hai điểm thấp hoặc cao nhất giữa ba điểm cao hoặc thấp nhất
if(is_reversed)
{
// Nếu là mô hình ngược, tìm hai điểm cao nhất
int left_neckline_index = ArrayMaximum(price_data, left_index - 1, head_index + 1);
int right_neckline_index = ArrayMaximum(price_data, head_index - 1, right_index + 1);

// Nếu không tìm thấy hai điểm cao nhất, trả về false
if(left_neckline_index == -1 || right_neckline_index == -1)
return false; // Không tìm thấy mô hình

// Nếu tìm thấy hai điểm cao nhất, gán giá trị cho các biến tương ứng
left_neckline = price_data[left_neckline_index];
right_neckline = price_data[right_neckline_index];

}
else
{
// Nếu là mô hình thuận, tìm hai điểm thấp nhất
int left_neckline_index = ArrayMinimum(price_data, left_index - 1, head_index + 1);
int right_neckline_index = ArrayMinimum(price_data, head_index - 1, right_index + 1);

// Nếu không tìm thấy hai điểm thấp nhất, trả về false
if(left_neckline_index == -1 || right_neckline_index == -1)
return false; // Không tìm thấy mô hình

// Nếu tìm thấy hai điểm thấp nhất, gán giá trị cho các biến tương ứng
}
return false;
}
};
// Hàm lấy giá của các nến (bar)
MqlRates PriceInfomationArrayCustom[];
int SizeArrayPriceCustom=0;
void getPriceInfomationBarCustom(int posBar, ENUM_TIMEFRAMES iTimeFrame,int countbar)
{
ArraySetAsSeries(PriceInfomationArrayCustom,true);
double Data=CopyRates(Symbol(),iTimeFrame,posBar,countbar,PriceInfomationArrayCustom);
SizeArrayPriceCustom=ArraySize(PriceInfomationArrayCustom);
}
HeadAndShoulders DetectorShoulder;
void OnInit()
{
DetectorShoulder.HeadAndShouldersInit();
}
double DataPrice[];
input int NumberCandle=30; // Xét trong 30 cây nến
void OnTick()
{
getPriceInfomationBarCustom(0,PERIOD_H1,NumberCandle); // Lấy các mức giá của nến
for(int i=0;i<NumberCandle;i++)
{
DataPrice=PriceInfomationArrayCustom.close; // Chỉ xét giá đóng cửa
}
if(DetectorShoulder.Detect(DataPrice)==true) // Kiểm tra và phát hiện mô hình
{

Comment("Phát hiện mô hình vai đầu vai");
}
}

Cái này lấy giá trị các đỉnh, đáy theo indicator zigzag để xét được không bạn, nếu xét giá trị nến thì có thể các nến cao nhất và thấp nhất nằm liên tiếp nhau tại một đỉnh/đáy nào đó thì có thể ko tạo được mô hình.
 
Ngày hôm qua mình đã chia sẻ trước với bạn về chiến lược mới này, Tuy nhiên đã chưa được tối ưu.
Nhận được phản hồi từ các thành viên đa phần mong muốn sử dụng với tài khoản nhỏ, vì vậy mình đã làm việc hết công suất để nhanh chóng tối ưu
Cái này lấy giá trị các đỉnh, đáy theo indicator zigzag để xét được không bạn, nếu xét giá trị nến thì có thể các nến cao nhất và thấp nhất nằm liên tiếp nhau tại một đỉnh/đáy nào đó thì có thể ko tạo được mô hình.

Mình chưa sử dụng chỉ báo ziczac bao giờ nên chưa thể đánh giá có được hay không. Nhưng dù bằng các nào thì mình nên tạo ra đối tượng đoạn thẳng: Mục đích sẽ dùng nó để làm điều kiện xét mô hình, vì cơ bản mô hình gồm các đoạn thẳng tạo thành.
Mỗi đoạn thẳng có những thuộc tính như: Giá cao nhất, giá thấp nhất, Vị trí bắt đầu (cây nên thứ mấy), vị trí kết thúc ( cây nến thứ mấy), Chiều đoạn thẳng: là Up hay Down, chiều dài đoạn thẳng = bao nhiêu pip
Ví dụ xét từ vị trí cây nến hiện tại : Tìm đoạn thẳng thứ 1. Có được vị trí kết thúc của cây nến của đoạn thứ nhất, sẽ tìm đoạn thẳng thứ 2: Điểm bắt đầu đoạn thẳng thứ 2 là vị trí kết thúc của đoạn thẳng thứ nhất, cứ như vậy tìm đến 6 đoạn thẳng . Từ 6 đoạn thẳng đó dùng để tạo nên mô hình .
Điều quan trọng là: Đoạn thẳng được nhận biết thế nào
Sẽ phải viết ra 1 hàm để nhận biết từng đoạn thẳng như vậy, có sử dụng thuật toán duyệt qua từng cây nến : Cách duyệt để tìm đoạn thẳng mình sẽ chia sẻ sau nhé. Vì mình mấy hnay bận làm việc khác nên chưa tạo code cho chức năng này.
 
Xin chào:
Tôi đã cập nhật phiên bản 10.3
1. Hiệu chỉnh chiến lược SmallAccount, TrendLine
2. Cập nhật mới file set
3. Phân loaik và tạo nhóm cho các chiến lược
Vui lòng cập nhật tại mql5 market hoặc
Tải sử dụng công cụ giao dịch tự động tại
https://autocontrol6.wordpress.com/

Hướng dẫn
AutoControlAI_Group:
Strategic option: Lựa chọn chiến lược
LimitGap: Khoảng cách bước đặt hàng
RecoveryLevels: Mức độ tăng lot
LimitOrder: Giới hạn số lượng đặt hàng
Risk level: Phần trăm mức độ Drawdow nếu giảm vượt quá mức cho phép sẽ ngừng vào lệnh và chờ đóng toàn bộ lệnh
AddTakprofit: Tăng Takeprofit khi thêm đơn hàng.
Ví dụ: Takeprofit =1000, Add Takeprofit =100.
Buy 1= 1000
Buy 2= 1000 + 100
Buy 3= 1000 + 200
Buy 4= 1000 + 300
Stoploss thì tương tự

Takeprofit set way= useManual: tức là sử dụng các thông số cài đặt Takeprofit trên bảng điều khiển
Còn lại nếu khác sẽ sử dụng tự động
Stoploss set way tương tự

Tuy nhiên một số chiến lược sẽ không sử dụng Takeprofit và Stoploss thay vào đó sẽ sử dụng thuật toán để đóng và cắt lệnh.

Mỗi chiến lược giống như 1 EA bot con, nó có cách tính toán điểm vào lệnh, tính toán lot tự động khác nhau.

Trong phần Input khi Backtest có phần ModeLoadSet : ExpertSetup là sẽ loaded thông số mặc định mình cài sẵn trong phần AutoTrade
ModeLoadSet : YourSettings nó sẽ áp dụng những thông số do bạn thay đổi trong phần AutoTrade

Cách kết hợp chiến lược:
TrendGap, InverseGap , SmartGap là 1 nhóm
1. Khi thị trường có thể sẽ sắp có BreakOut, thì trường sẽ đi theo 1 hướng mạnh hãy lựa TrendGap
2. Khi thị trường suy yếu, hoặc thị trường bắt đầu giằng co, thị trường sideway trong 1 vùng giá hãy lựa chọ InverseGap
3. Khi bạn chưa biết rõ thị trường sẽ thế nào, hoặc thị trường biến động đều hãy lựa chọn SmartGap

Nhóm OneWayBuy và OneWaySell , BalanceCalcullot là 1 nhóm:
1. Nếu thị trường có dấu hiệu chuyển đổi Up Trend , hoặc UpTrend đều hãy lựa chọ OneWayBuy
2. Tương tự OneWayBuy thì OneWaySell sẽ ngược lại
3. Khi thị trường Sideway , giằng co, suy yếu trong khoảng giá hãy lựa chọn BalanceCalcullot
 

Đính kèm

  • IMG_20230617_201734.jpg
    IMG_20230617_201734.jpg
    156.8 KB · Xem: 1
  • IMG_20230617_201740.jpg
    IMG_20230617_201740.jpg
    157.6 KB · Xem: 3

BÌNH LUẬN MỚI NHẤT

  • DuongHuy trong Phân tích Forex - Vàng - Hàng hóa 200 Xem / 10 Trả lời
  • Mạc An trong Phân tích Forex - Vàng - Hàng hóa 970 Xem / 41 Trả lời
  • Mạc An trong Phân tích Forex - Vàng - Hàng hóa 1,249 Xem / 41 Trả lời
  • Quíc Óp trong Phân tích Forex - Vàng - Hàng hóa 309 Xem / 7 Trả lời
  • ngoi_sao_co_doc trong Phân tích Forex - Vàng - Hàng hóa 24,312 Xem / 84 Trả lời
  • DuongHuy trong Phân tích Forex - Vàng - Hàng hóa 336 Xem / 31 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