Cần các anh chị đi trước hỗ trợ Code EA giúp em với ạ!!!

Cần các anh chị đi trước hỗ trợ Code EA giúp em với ạ!!!

Cần các anh chị đi trước hỗ trợ Code EA giúp em với ạ!!!

Btp12a1

Member
16
4
Em đang code EA cần tự động tính số lot giao dịch của tất cả các cặp tiền với StopLoss cố định là 1000. Dựa vào công thức : SL = 1000 = R x Lots x X
( Trong đó X: là tỷ giá của đồng tiền đứng sau so với USD)
=> Lots = 1000/(R x X)
Đối với các cặp có đuôi USD thì không thành vấn đề do không phải chuyển đổi giá trị tiền tệ của đồng tiền đứng phía sau ( xxxUSD) do X =1.
Còn đối với những cặp khác như GbpAud..... chẳng hạn, thì em dùng công thức mã CODE này:
double tygia = MarketInfo("AUDUSD",MODE_BID);
double R = 500;
double volume = NormalizeDouble( (1000/(R*tygia)),2) ;
double StopLoss = NormalizeDouble( (Close[1]+ R*Point),Digits);
double TakeProfit = NormalizeDouble( (Close[1] - R*Point),Digits);

int NewTicket2 = OrderSend(Symbol(), OP_SELL, volume, Bid, 3, StopLoss, TakeProfit, "Mycode", 136, NULL, Red);
Comment(" Lenh moi: " + (string)NewTicket2);

Lúc em dùng CODE này thì lúc nhận diện đúng điều kiện thì Robot bị dừng ko chạy nữa ạ.
Còn lúc thay thế mã : double tygia = 1; thì Robot chạy tốt.
Nên em thấy do lệnh MarkerInfo() vào thì Bot sẽ bị lỗi.
Xin các cao nhân cho em ít thông tin về việc xử lý trường hợp này ạ. EM cảm ơn mọi người đã đọc!!!
 

Giới thiệu sách Trading hay
Bộ sách của Phù Thủy Trader Mark Minervini

Mark Minervini là một huyền thoại của giới trading toàn cầu. Bộ sách này mang đến các kiến thức cơ bản nhất về phương pháp giao dịch của Mark Minervini
SymbolSelect("AUDUSD",true);
double tygia;
int try;
while ((tygia == 0)&&(try < 100)) {tygia = MarketInfo("AUDUSD",MODE_BID);try++;Sleep(100);}
double R = 500;
double volume = NormalizeDouble( (1000/(R*tygia)),2) ;
double StopLoss = NormalizeDouble( (Close[1]+ R*Point),Digits);
double TakeProfit = NormalizeDouble( (Close[1] - R*Point),Digits);
int NewTicket2 = OrderSend(Symbol(), OP_SELL, volume, Bid, 3, StopLoss, TakeProfit, "Mycode", 136, NULL, Red);
Comment(" Lenh moi: " + (string)NewTicket2);
 
SymbolSelect("AUDUSD",true);
double tygia;
int try;
while ((tygia == 0)&&(try < 100)) {tygia = MarketInfo("AUDUSD",MODE_BID);try++;Sleep(100);}
double R = 500;
double volume = NormalizeDouble( (1000/(R*tygia)),2) ;
double StopLoss = NormalizeDouble( (Close[1]+ R*Point),Digits);
double TakeProfit = NormalizeDouble( (Close[1] - R*Point),Digits);
int NewTicket2 = OrderSend(Symbol(), OP_SELL, volume, Bid, 3, StopLoss, TakeProfit, "Mycode", 136, NULL, Red);
Comment(" Lenh moi: " + (string)NewTicket2);
Em chạy theo lệnh mới rồi nhưng Robot vẫn bị lỗi như lúc em dùng mỗi MarketInfo ạ, em cảm ơn
 
@No SL Trading cụ khó vãi. Dễ dãi tí cho em cháu được nhờ :D
@Btp12a1 cứ quăng cả source code lên đây để các tiền bối sửa giúp cho, mô tả chi tiết càng tốt. Yên tâm về vấn đề bản quyền của bạn
 
Em chạy theo lệnh mới rồi nhưng Robot vẫn bị lỗi như lúc em dùng mỗi MarketInfo ạ, em cảm ơn
lỗi như nào , post lên đây.
Chú đang học lớp mấy mà kỹ năng mềm kém thế
Bác thông cảm cho thằng em mới bập bẹ tập code ạ =)))
Screenshot (53).png


Em chạy test từ ngày 31/01 - 05/2
tới ngày 02/2 đủ điều kiện vào lệnh thì tới đó Bot bị dừng lại, không thực hiện lệnh và cũng không chạy tới 05/2 nữa
Em dùng cách cũ của em và code mới của bác cho cùng bị 1 lỗi đấy ạ.
@ghienhoi nhờ 2 bác chỉ bảo thêm giúp em
 

Đính kèm

  • Screenshot (52).png
    Screenshot (52).png
    129.8 KB · Xem: 2
  • Screenshot (52).png
    Screenshot (52).png
    69.6 KB · Xem: 2
  • Screenshot (52).png
    Screenshot (52).png
    69.6 KB · Xem: 3
Bác thông cảm cho thằng em mới bập bẹ tập code ạ =)))
View attachment 208217

Em chạy test từ ngày 31/01 - 05/2
tới ngày 02/2 đủ điều kiện vào lệnh thì tới đó Bot bị dừng lại, không thực hiện lệnh và cũng không chạy tới 05/2 nữa
Em dùng cách cũ của em và code mới của bác cho cùng bị 1 lỗi đấy ạ.
@ghienhoi nhờ 2 bác chỉ bảo thêm giúp em
Lâu rồi ko dùng MT4 nhưng hình như backtest chỉ chạy được 1 cặp chứ ko được nhiều cặp như MT5 nên ko lấy giá trị cặp khác được.
Tính volume thì dùng tick value chứ tính trực tiếp làm gì cho mệt.
 
Bác thông cảm cho thằng em mới bập bẹ tập code ạ =)))
View attachment 208217

Em chạy test từ ngày 31/01 - 05/2
tới ngày 02/2 đủ điều kiện vào lệnh thì tới đó Bot bị dừng lại, không thực hiện lệnh và cũng không chạy tới 05/2 nữa
Em dùng cách cũ của em và code mới của bác cho cùng bị 1 lỗi đấy ạ.
@ghienhoi nhờ 2 bác chỉ bảo thêm giúp em
mở qua tab journal xem nó báo lỗi gì
 
Lâu rồi ko dùng MT4 nhưng hình như backtest chỉ chạy được 1 cặp chứ ko được nhiều cặp như MT5 nên ko lấy giá trị cặp khác được.
Tính volume thì dùng tick value chứ tính trực tiếp làm gì cho mệt.

Em mới tập code chưa biết nhiều, bác chỉ dạy em về tick value với được ko ạ =)))
 
Em mới tập code chưa biết nhiều, bác chỉ dạy em về tick value với được ko ạ =)))
Tick value của một cặp tiền là giá trị của 1 point tính bằng loại tiền tệ tài khoản dùng (USD,EUR,AUD...) khi trade với khối lượng là 1 lot.
Ví dụ tiền tệ của tài khoản là USD: tick value của AUDJPY bằng 0.71 chẳng hạn thì có nghĩa là bạn vào 1 lot thì giá chạy 1 point sẽ được 0.71 đô. Giá trị này bằng tỷ giá cặp JPYUSD = 1/USDJPY (JPY phải nhân thêm 0.01 đối với cặp có 5 digit thì ko cần)
Dùng giá trị này+stoploss bao nhiêu point+rủi ro bao nhiêu tiền => tính ra số lot.
 
Tick value của một cặp tiền là giá trị của 1 point tính bằng loại tiền tệ tài khoản dùng (USD,EUR,AUD...) khi trade với khối lượng là 1 lot.
Ví dụ tiền tệ của tài khoản là USD: tick value của AUDJPY bằng 0.71 chẳng hạn thì có nghĩa là bạn vào 1 lot thì giá chạy 1 point sẽ được 0.71 đô. Giá trị này bằng tỷ giá cặp JPYUSD = 1/USDJPY (JPY phải nhân thêm 0.01 đối với cặp có 5 digit thì ko cần)
Dùng giá trị này+stoploss bao nhiêu point+rủi ro bao nhiêu tiền => tính ra số lot
Em cảm ơn các bác ở trên nhiều lắm ạ.
Em đổi sang dùng Tick Value của bác và đã thành công rồi.
Như bác @Tranchi_92 nói đúng rồi ạ, MT4 ko cho dùng cặp tiền khác ngoài chart đang sử dụng, nên em chuyển qua Ticket Value và sử dụng Symbol() để gọi cặp tiền thì mới cho ra kết quả như mong muốn.
Cảm ơn các bác một lần nữa và cảm ơn TraderViet tạo ra môi trường để em học tập và xin kinh nghiệm từ các tiềm bối. Mong sau này vẫn sẽ được các tiền bối chỉ dạy nhiều ạ. =))))))0
 
Em cảm ơn các bác ở trên nhiều lắm ạ.
Em đổi sang dùng Tick Value của bác và đã thành công rồi.
Như bác @Tranchi_92 nói đúng rồi ạ, MT4 ko cho dùng cặp tiền khác ngoài chart đang sử dụng, nên em chuyển qua Ticket Value và sử dụng Symbol() để gọi cặp tiền thì mới cho ra kết quả như mong muốn.
Cảm ơn các bác một lần nữa và cảm ơn TraderViet tạo ra môi trường để em học tập và xin kinh nghiệm từ các tiềm bối. Mong sau này vẫn sẽ được các tiền bối chỉ dạy nhiều ạ. =))))))
 
Tick value của một cặp tiền là giá trị của 1 point tính bằng loại tiền tệ tài khoản dùng (USD,EUR,AUD...) khi trade với khối lượng là 1 lot.
Ví dụ tiền tệ của tài khoản là USD: tick value của AUDJPY bằng 0.71 chẳng hạn thì có nghĩa là bạn vào 1 lot thì giá chạy 1 point sẽ được 0.71 đô. Giá trị này bằng tỷ giá cặp JPYUSD = 1/USDJPY (JPY phải nhân thêm 0.01 đối với cặp có 5 digit thì ko cần)
Dùng giá trị này+stoploss bao nhiêu point+rủi ro bao nhiêu tiền => tính ra số lot.
Em cảm ơn bác, bác có thể cho em hỏi riêng một vài thắc mắc được ko ạ @Tranchi_92
 
Uh, hỏi thì cứ hỏi thôi, biết thì mình trả lời. Trên này có nhiều bác pro mà mình biết sơ thôi, cứ đăng lên nếu mình ko biết thì có người khác biết trả lời giúp cho :)
Mình có thể chuyển đổi SMA9 (Signal) trong MACD thành EMA9 được ko bác nhỉ =)))
 

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

  • Mạc An trong Phân tích Forex - Vàng - Hàng hóa 1,660 Xem / 96 Trả lời
  • DuongHuy trong Hệ thống giao dịch - Trading system 37,517 Xem / 18 Trả lời
  • DuongHuy trong Phân tích Forex - Vàng - Hàng hóa 379 Xem / 29 Trả lời
  • Quíc Óp trong Phân tích Forex - Vàng - Hàng hóa 395 Xem / 18 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