[Nhờ Vả] Cần sửa code giúp

Thảo luận trong 'Lập trình MQL - Expert Advisor - Indicator' bắt đầu bởi linhlinh, 15/5/17.

  1. linhlinh

    linhlinh

    Bài viết:
    51
    Đã được thích:
    27
    chào các Bác trong diễn đàn
    Bác nào sửa giúp em code này để nó chỉ thực hiện 1 giao dịch trên 1 nến (với bất kỳ khung thời gian )
    Em cảm ơn .
    Chúc các bác kiếm thật nhiều pipipipipppppppppssssssss.......

    extern int MagicNumber=10001;
    extern double Lots =0.1;
    extern double StopLoss=5;
    extern double TakeProfit=2;
    extern int TrailingStop=0;
    extern int Slippage=2;
    //+------------------------------------------------------------------+
    // expert start function
    //+------------------------------------------------------------------+

    int start()
    {
    double MyPoint=Point;
    if(Digits==3 || Digits==5) MyPoint=Point*10;
    double TheStopLoss=0;
    double TheTakeProfit=0;
    if( TotalOrdersCount()==0 )

    {
    int result=0;
    if(xx) Here is your open Sell rule
    {
    result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"ea Bid_Ask",MagicNumber,0,Blue);
    if(result>0)
    {
    TheStopLoss=0;
    TheTakeProfit=0;
    if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint;
    if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint;
    OrderSelect(result,SELECT_BY_TICKET);
    OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);
    }
    return(0);
    }
    if(zz) // Here is your open Sell rule
    {
    result=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"ea Bid_Ask",MagicNumber,0,Red);
    if(result>0)
    {
    TheStopLoss=0;
    TheTakeProfit=0;
    if(TakeProfit>0) TheTakeProfit=Bid-TakeProfit*MyPoint;
    if(StopLoss>0) TheStopLoss=Bid+StopLoss*MyPoint;
    OrderSelect(result,SELECT_BY_TICKET);
    OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);
    }
    return(0);
    }
    }
    for(int cnt=0;cnt<OrdersTotal();cnt++)
    {
    OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
    if(OrderType()<=OP_SELL &&
    OrderSymbol()==Symbol() &&
    OrderMagicNumber()==MagicNumber
    )
    {
    if(OrderType()==OP_BUY)
    {
    if(TrailingStop>0)
    {
    if(Bid-OrderOpenPrice()>MyPoint*TrailingStop)
    {
    if(OrderStopLoss()<Bid-MyPoint*TrailingStop)
    {
    OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*MyPoint,OrderTakeProfit(),0,Green);
    return(0);
    }
    }
    }
    }
    else
    {
    if(TrailingStop>0)
    {
    if((OrderOpenPrice()-Ask)>(MyPoint*TrailingStop))
    {
    if((OrderStopLoss()>(Ask+MyPoint*TrailingStop)) || (OrderStopLoss()==0))
    {
    OrderModify(OrderTicket(),OrderOpenPrice(),Ask+MyPoint*TrailingStop,OrderTakeProfit(),0,Red);
    return(0);
    }
    }
    }
    }
    }
    }
    return(0);
    }
    int TotalOrdersCount()
    {
    int result=0;
    for(int i=0;i<OrdersTotal();i++)
    {
    OrderSelect(i,SELECT_BY_POS ,MODE_TRADES);
    if (OrderMagicNumber()==MagicNumber) result++;
    }
    return (result);
    }
     
    Đang tải...
  2. Tudongfx

    Tudongfx

    Bài viết:
    152
    Đã được thích:
    203
    Bạn chỉ cần đặt giá trị là if(open) là được,nếu bạn để nến là close thì 1 cây nến nó sẽ vào nhiều lần..
     
    linhlinh and DuongHuy like this.
  3. fx9327

    fx9327

    Bài viết:
    309
    Đã được thích:
    352
    Ý của bạn là mỗi nến mở một lệnh hay chỉ mở một lệnh trong cả quá trình vậy @linhlinh ?
     
    linhlinh and DuongHuy like this.
  4. linhlinh

    linhlinh

    Bài viết:
    51
    Đã được thích:
    27
    là mỗi nến mở 1 lệnh
    các bác sửa giúp em với
     
  5. linhlinh

    linhlinh

    Bài viết:
    51
    Đã được thích:
    27
    bác sửa luôn giúp em với
    code trên là em lấy trên web nên k biết sửa chỗ nào
    Green pips
    ahihi
     
  6. Taifx

    Taifx

    Bài viết:
    87
    Đã được thích:
    341
    Code này chưa có logic xử lý điều kiện vào lệnh nên yêu cầu hỗ trợ của bạn sẽ gây ra lỗi khác khi bạn ráp điều kiện vào lệnh vô code đó nha.

    Để làm được theo như kỳ vọng của bạn thì tạo thêm 1 biến để chứa giá trị cây nến mà bạn vào lệnh cuối cùng (theo phút là chắc nhất) và trong điều kiện vào lệnh thì bạn kiểm tra thêm điều kiện này là ok.

    Nếu bạn biết code chút chút thì mò tài liệu hướng dẫn của MQL4 là ra hà, cách lấy giá trị phút của cây nến. Ngược lại bạn không biết code thì đặt hàng luôn cho người khác code, đừng ráng code mà đốt tiền vì không kiểm soát hết logic thực thi của ea.
     
    linhlinh thích bài này.
  7. linhlinh

    linhlinh

    Bài viết:
    51
    Đã được thích:
    27
    cảm ơn các bác
    Green pips
    :D:D:D:D:D:D:D:D:D
     
  8. N3TH

    N3TH

    Bài viết:
    17
    Đã được thích:
    12
    Bác thêm đoạn code này trước các lệnh BUY/ SELL nhé

    //--- go trading only for first tiks of new bar
    if(Volume[0]>1) return;
    //--- get orders
    while(IsTradeContextBusy())
    Sleep(100);
     
    linhlinh thích bài này.
Đang tải...