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

Thảo luận trong 'Lập trình MQL - Expert Advisor - Indicator' bắt đầu bởi Btp12a1, 03/05/2021.

  1. 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
    Giao Dịch Theo Xu Hướng Để Kiếm Sống

    Sách chia sẻ chiến lược giao dịch, tâm lý, phương pháp quản lý vốn thực chiến của Trader 18 năm kinh nghiệm giao dịch theo xu hướng
    Btp12a1 bài này.
    Đang tải...
  2. 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);
     
    Btp12a1 bài này.
  3. 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
     
  4. 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ế
     
    Btp12a1 bài này.
  5. @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
     
    Btp12a1 bài này.
  6. Bác thông cảm cho thằng em mới bập bẹ tập code ạ =)))
    Screenshot (53).

    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
     

    Các file đính kèm:

  7. 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.
     
    Btp12a1Whis bài này.
  8. mở qua tab journal xem nó báo lỗi gì
     
    Btp12a1 bài này.
  9. Screenshot (55).

    Dạ journal đây bác ạ, bác xem cho em với
     
  10. 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 ạ =)))
     
  11. 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.
     
    Btp12a1No SL Trading bài này.
  12.  
    Btp12a1 bài này.
  13. 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 ạ. =))))))
     
    Tranchi_92 bài này.
  14. abc123

    abc123

    209
    215
    Lỗi chia 0 rõ ràng thế này còn gì? Chứng tỏ ko lấy được tỉ giá của cặp tiền => chắc đang backtest trên MT4?
     
    Btp12a1 bài này.
  15. Vâng đúng rồi ạ, MT4 đấy bác
     
  16. 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
     
  17. 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 :)
     
    Btp12a1 bài này.
  18. Mình có thể chuyển đổi SMA9 (Signal) trong MACD thành EMA9 được ko bác nhỉ =)))
     
  19. Sửa luôn cả indicator rồi dùng iCustom thôi :v
     
    Btp12a1 bài này.
  20. No SL Trading bài này.

Bình luận mới nhất

  • SignalCenter trong Thị trường Forex - Vàng - Hàng hóa 31,353 Xem / 250 Trả lời
  • quocquang trong Trao Đổi về Broker 4,608 Xem / 52 Trả lời
  • Tả Ao trong Thị trường Forex - Vàng - Hàng hóa 6,896 Xem / 243 Trả lời
  • Zactini trong Thị trường Forex - Vàng - Hàng hóa 1,195 Xem / 11 Trả lời
  • Đang tải...
    Đang tải...
    0