Page 2 of 2 FirstFirst 12
Results 11 to 19 of 19
 4 Attachment(s)    

Thread: Add a trailing stop

  1. #11
    Administrator funyoo's Avatar
    Join Date
    Sep 2008
    Posts
    7,003

    Default

    Quote Originally Posted by BillR View Post
    There is an extra space on the last line of your code... OrderTakeP rofit, but that's not the problem....Bill
    Hi BillR,

    Here it is. It will trail from profit.
    Attached Files Attached Files

  2. #12

    Default

    Thanks Funyoo....Looking at your code I see that many of my attempts were very close!!
    The MQL4.com site doesn't recognize searches for simple "if", "!", "{"....OR "&&" code!!! It is very hard to look up some of the very basic things...Thanks for your help...I'll test your changes....(and send more $$'s for coffee too) BillR

  3. #13

    Default

    Hi Funyoo....I'm having trouble modifying this to trade 1.5 Lot Exponent with beginning .01 Lot. (I am testing at a broker which allows .01) It works fine starting at .1 I'm doing something wrong....I've tried a few different ways but when I rewrite the code to start at .01 the Trailing stop acts funny. When the Trailing stop moves the stop loss to the profit side...(locking in profits), it also creates a new order too....and everytime the trailing stop moves it creates more orders!! This should be simple but I'm not seeing the problem. Below is the working 1.5 LE and .1 lot. Where is my mistake..???Where should the .01 change(s) be made??



    #define m 20050611
    //----

    extern int sl=370;
    extern int tp = 43;
    extern int sh = 49;
    extern int TrailingStop=15;
    extern int TrailingStep=2;
    //----
    datetime lastt;
    //+------------------------------------------------------------------+
    //| |
    //+------------------------------------------------------------------+
    int kol_buy()
    {
    int kol_ob = 0;
    //----
    for(int i = 0; i < OrdersTotal(); i++)
    {
    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false)
    break;
    //----
    if(OrderType() == OP_BUY)
    kol_ob++;
    }
    return(kol_ob);
    }
    //+------------------------------------------------------------------+
    //| |
    //+------------------------------------------------------------------+
    int kol_sell()
    {
    int kol_os = 0;
    //----
    for(int i = 0; i < OrdersTotal(); i++)
    {
    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false)
    break;
    //----
    if(OrderType() == OP_SELL)
    kol_os++;
    }
    return(kol_os);
    }
    //+------------------------------------------------------------------+
    //| |
    //+------------------------------------------------------------------+
    int start()
    {
    int slip, i, ii, tic, total, kk, gle;
    double lotsi = 0.0;
    bool sob = false, sos = false, scb = false, scs = false;
    int kb, kb_max = 0;
    kb = kol_buy() + 1;
    double M_ob[11][8];
    ArrayResize(M_ob,kb);
    int ks = 0, ks_max = 0;
    ks = kol_sell() + 1;
    double M_os[11][8];
    ArrayResize(M_os,ks);
    ArrayInitialize(M_ob, 0.0);
    int kbi = 0;
    if(TrailingStop>0)MoveTrailingStop();
    //----
    for(i = 0; i < OrdersTotal(); i++)
    {
    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false)
    break;
    //----
    if(OrderSymbol() == Symbol() && OrderType() == OP_BUY)
    {
    kbi++;
    M_ob[kbi][0] = OrderTicket();
    M_ob[kbi][1] = OrderOpenPrice();
    M_ob[kbi][2] = OrderLots();
    M_ob[kbi][3] = OrderType();
    M_ob[kbi][4] = OrderMagicNumber();
    M_ob[kbi][5] = OrderStopLoss();
    M_ob[kbi][6] = OrderTakeProfit();
    M_ob[kbi][7] = OrderProfit();
    }
    }
    M_ob[0][0] = kb;
    double max_lot_b = 0.0;
    //----
    for(i = 1; i < kb; i++)
    if(M_ob[i][2] > max_lot_b)
    {
    max_lot_b = M_ob[i][2];
    kb_max = i;
    }
    double buy_lev_min = M_ob[kb_max][1];
    ArrayInitialize(M_os,0.0);
    int ksi = 0;
    //----
    for(i = 0; i < OrdersTotal(); i++)
    {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false )
    break;
    //----
    if(OrderSymbol()==Symbol() && OrderType()==OP_SELL)
    {
    ksi++;
    M_os[ksi][0] = OrderTicket();
    M_os[ksi][1] = OrderOpenPrice();
    M_os[ksi][2] = OrderLots();
    M_os[ksi][3] = OrderType();
    M_os[ksi][4] = OrderMagicNumber();
    M_os[ksi][5] = OrderStopLoss();
    M_os[ksi][6] = OrderTakeProfit();
    M_os[ksi][7] = OrderProfit();
    }
    }
    M_os[0][0] = ks;
    double max_lot_s = 0.0;
    //----
    for(i = 1;i < ks; i++)
    if(M_os[i][2] > max_lot_s)
    {
    max_lot_s = M_os[i][2];
    ks_max = i;
    }
    double sell_lev_max = M_os[ks_max][1];
    //----
    if(Bars < 100 || IsTradeAllowed() == false)
    return(0);
    sob = (kol_buy() < 1 || buy_lev_min - sh*Point > Ask) &&
    AccountFreeMargin() > AccountBalance()*0.5;
    sos = (kol_sell() < 1 || sell_lev_max + sh*Point < Bid) &&
    AccountFreeMargin() > AccountBalance()*0.5;
    //----
    if(M_ob[kb_max][2] > 0.0)
    scb = M_ob[kb_max][7] / (M_ob[kb_max][2]*9) > tp;
    //----
    if(M_os[ks_max][2] > 0.0)
    scs = M_os[ks_max][7] / (M_os[ks_max][2]*9) > tp;
    kk = 0;
    ii = 0;
    //----
    if(scb)
    {
    while(kol_buy() > 0 && kk < 3)
    {
    for(i = 1; i <= kb; i++)
    {
    ii = M_ob[i][0];
    //----
    if(!OrderClose(ii,M_ob[i][2],Bid,slip,White))
    {
    gle = GetLastError();
    kk++;
    Print(" ", gle, " close buy ", kk);
    Sleep(6000);
    RefreshRates();
    }
    }
    kk++;
    }
    }
    kk = 0;
    ii = 0;
    //----
    if(scs)
    {
    while(kol_sell() > 0 && kk < 3)
    {
    for(i = 1; i <= ks; i++)
    {
    ii = M_os[i][0];
    //----
    if(!OrderClose(ii,M_os[i][2], Ask, slip, White))
    {
    gle = GetLastError();
    kk++;
    Print(" ", gle, " close sell ", kk);
    Sleep(6000);
    RefreshRates();
    }
    }
    kk++;
    }
    }
    kk = 0;
    tic = -1;
    //----
    if(sob)
    {
    if(max_lot_b == 0.0)
    lotsi = 0.1;
    else
    lotsi = 1.5*max_lot_b;
    //----
    while(tic == -1 && kk < 3)
    {
    tic = OrderSend(Symbol(), OP_BUY, NormalizeDouble(lotsi,1.5), Ask, slip, Ask - (sl)*Point, Ask + (tp + 25)*Point," ", m, 0, Yellow);
    Print("tic_buy=", tic);
    //----
    if(tic==-1)
    {
    gle = GetLastError();
    kk++;
    Print(" ", gle, " buy ", kk);
    Sleep(6000);
    RefreshRates();
    }
    }
    lastt = CurTime();
    return;
    }
    tic = -1;
    kk = 0;
    //----
    if(sos)
    {
    if(max_lot_s == 0.0)
    lotsi = 0.1;
    else
    lotsi = 1.5*max_lot_s;
    //----
    while(tic == -1 && kk < 3)
    {
    tic = OrderSend(Symbol(), OP_SELL, NormalizeDouble(lotsi,1.5), Bid, slip, Bid + (sl)*Point, Bid - (tp + 25)*Point," ", m, 0, Red);
    Print("tic_sell=", tic);
    //----
    if(tic == -1)
    {
    gle = GetLastError();
    kk++;
    Print(" ", gle, " sell ", kk);
    Sleep(6000);
    RefreshRates();
    }
    }
    lastt = CurTime();
    return;
    }
    }

    //+------------------------------------------------------------------+
    void MoveTrailingStop()
    {
    int cnt,total=OrdersTotal();
    for(cnt=0;cnt<total;cnt++)
    {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol())
    {
    if(OrderType()==OP_BUY)
    {
    if(TrailingStop>0&&Bid>(OrderOpenPrice()+(Trailing Stop+TrailingStep)*Point))
    {
    if((NormalizeDouble(OrderStopLoss(),Digits)<Normal izeDouble(Bid-Point*(TrailingStop+TrailingStep),Digits))||(Order StopLoss()==0))
    {
    OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(Bid-Point*TrailingStop,Digits),OrderTakeProfit(),0,Gre en);
    return(0);
    }
    }
    }
    else
    {
    if(TrailingStop>0&&Ask<(OrderOpenPrice()-(TrailingStop+TrailingStep)*Point))
    {
    if((NormalizeDouble(OrderStopLoss(),Digits)>(Norma lizeDouble(Ask+Point*(TrailingStop+TrailingStep),D igits)))||(OrderStopLoss()==0))
    {
    OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(Ask+Point*TrailingStop,Digits),OrderTakeP rofit(),0,Red);
    return(0);
    }
    }
    }
    }
    }
    }

  4. #14

    Default

    have implemented this in one of my ea's, however, I would like to use it only when in profit.

    once the order is in profit the same number of pips as trailingstop then start using trailing stops with break even level. or possibly have a external int to setup manually.






    Quote Originally Posted by funyoo View Post
    At the bottom of your EA, add this function :

    Code:
    void MoveTrailingStop()
    {
       int cnt,total=OrdersTotal();
       for(cnt=0;cnt<total;cnt++)
       {
          OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
          if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol())
          {
             if(OrderType()==OP_BUY)
             {
                if(TrailingStop>0)  
                {                 
                   if((NormalizeDouble(OrderStopLoss(),Digits)<NormalizeDouble(Bid-Point*(TrailingStop+TrailingStep),Digits))||(OrderStopLoss()==0))
                   {
                      OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-Point*TrailingStop,Digits),OrderTakeProfit(),0,Green);
                      return(0);
                   }
                }
             }
             else 
             {
                if(TrailingStop>0)  
                {                 
                   if((NormalizeDouble(OrderStopLoss(),Digits)>(NormalizeDouble(Ask+Point*(TrailingStop+TrailingStep),Digits)))||(OrderStopLoss()==0))
                   {
                      OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+Point*TrailingStop,Digits),OrderTakeProfit(),0,Red);
                      return(0);
                   }
                }
             }
          }
       }
    }
    Somewhere in your EA, after conditions, near tickets for example, add this :

    Code:
    if(TrailingStop>0)MoveTrailingStop();
    Finally, at the top of the EA add this :

    Code:
    extern int TrailingStop=0;
    extern int TrailingStep=0;
    Some documentation : script for trailing stop needed please? - Forex Trading

  5. #15
    Administrator funyoo's Avatar
    Join Date
    Sep 2008
    Posts
    7,003

    Default

    Hi BillR,

    For the first issue, replace :

    Code:
    NormalizeDouble(lotsi,1.5)
    by

    Code:
    NormalizeDouble(lotsi,2)
    For the second one. I don't understand. There is something with the close conditions. I should study them, but I have not the time.

  6. #16
    Administrator funyoo's Avatar
    Join Date
    Sep 2008
    Posts
    7,003

    Default

    Quote Originally Posted by markbto View Post
    have implemented this in one of my ea's, however, I would like to use it only when in profit.

    once the order is in profit the same number of pips as trailingstop then start using trailing stops with break even level. or possibly have a external int to setup manually.
    Hi markbto,

    Replace the first :

    Code:
    if(TrailingStop>0)
    by :

    Code:
    if(TrailingStop>0 && Ask>=(OrderOpenPrice()+TrailingStop*Point))
    The second :

    Code:
    if(TrailingStop>0)
    by

    Code:
    if(TrailingStop>0 && Bid<=(OrderOpenPrice()-TrailingStop*Point))

  7. #17

    Default

    Hi Funyoo...Thanks I tried that first, but with the Trailing Stop code at the end no trades are made...If I use NormalizeDouble(lotsi,2) No trades are created...If I remove the "Trailing Stop" code it works with the correct Lot Exponent 1.5 and Initial Lot .01
    Hope you can find a moment to help...Thanks BillR

    Here it is with the changes and it won't trade....

    //+------------------------------------------------------------------+
    //| BillR2LE15LS01.mq4 |
    //| Copyright 2009, MetaQuotes Software Corp. |
    //| http://www.metaquotes.net |
    //+------------------------------------------------------------------+
    #define m 20050611
    //----

    extern int sl=370;
    extern int tp = 43;
    extern int sh = 49;
    extern int TrailingStop=15;
    extern int TrailingStep=2;
    //----
    datetime lastt;
    //+------------------------------------------------------------------+
    //| |
    //+------------------------------------------------------------------+
    int kol_buy()
    {
    int kol_ob = 0;
    //----
    for(int i = 0; i < OrdersTotal(); i++)
    {
    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false)
    break;
    //----
    if(OrderType() == OP_BUY)
    kol_ob++;
    }
    return(kol_ob);
    }
    //+------------------------------------------------------------------+
    //| |
    //+------------------------------------------------------------------+
    int kol_sell()
    {
    int kol_os = 0;
    //----
    for(int i = 0; i < OrdersTotal(); i++)
    {
    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false)
    break;
    //----
    if(OrderType() == OP_SELL)
    kol_os++;
    }
    return(kol_os);
    }
    //+------------------------------------------------------------------+
    //| |
    //+------------------------------------------------------------------+
    int start()
    {
    int slip, i, ii, tic, total, kk, gle;
    double lotsi = 0.0;
    bool sob = false, sos = false, scb = false, scs = false;
    int kb, kb_max = 0;
    kb = kol_buy() + 1;
    double M_ob[11][8];
    ArrayResize(M_ob,kb);
    int ks = 0, ks_max = 0;
    ks = kol_sell() + 1;
    double M_os[11][8];
    ArrayResize(M_os,ks);
    ArrayInitialize(M_ob, 0.0);
    int kbi = 0;
    if(TrailingStop>0)MoveTrailingStop();
    //----
    for(i = 0; i < OrdersTotal(); i++)
    {
    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false)
    break;
    //----
    if(OrderSymbol() == Symbol() && OrderType() == OP_BUY)
    {
    kbi++;
    M_ob[kbi][0] = OrderTicket();
    M_ob[kbi][1] = OrderOpenPrice();
    M_ob[kbi][2] = OrderLots();
    M_ob[kbi][3] = OrderType();
    M_ob[kbi][4] = OrderMagicNumber();
    M_ob[kbi][5] = OrderStopLoss();
    M_ob[kbi][6] = OrderTakeProfit();
    M_ob[kbi][7] = OrderProfit();
    }
    }
    M_ob[0][0] = kb;
    double max_lot_b = 0.0;
    //----
    for(i = 1; i < kb; i++)
    if(M_ob[i][2] > max_lot_b)
    {
    max_lot_b = M_ob[i][2];
    kb_max = i;
    }
    double buy_lev_min = M_ob[kb_max][1];
    ArrayInitialize(M_os,0.0);
    int ksi = 0;
    //----
    for(i = 0; i < OrdersTotal(); i++)
    {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false )
    break;
    //----
    if(OrderSymbol()==Symbol() && OrderType()==OP_SELL)
    {
    ksi++;
    M_os[ksi][0] = OrderTicket();
    M_os[ksi][1] = OrderOpenPrice();
    M_os[ksi][2] = OrderLots();
    M_os[ksi][3] = OrderType();
    M_os[ksi][4] = OrderMagicNumber();
    M_os[ksi][5] = OrderStopLoss();
    M_os[ksi][6] = OrderTakeProfit();
    M_os[ksi][7] = OrderProfit();
    }
    }
    M_os[0][0] = ks;
    double max_lot_s = 0.0;
    //----
    for(i = 1;i < ks; i++)
    if(M_os[i][2] > max_lot_s)
    {
    max_lot_s = M_os[i][2];
    ks_max = i;
    }
    double sell_lev_max = M_os[ks_max][1];
    //----
    if(Bars < 100 || IsTradeAllowed() == false)
    return(0);
    sob = (kol_buy() < 1 || buy_lev_min - sh*Point > Ask) &&
    AccountFreeMargin() > AccountBalance()*0.5;
    sos = (kol_sell() < 1 || sell_lev_max + sh*Point < Bid) &&
    AccountFreeMargin() > AccountBalance()*0.5;
    //----
    if(M_ob[kb_max][2] > 0.0)
    scb = M_ob[kb_max][7] / (M_ob[kb_max][2]*9) > tp;
    //----
    if(M_os[ks_max][2] > 0.0)
    scs = M_os[ks_max][7] / (M_os[ks_max][2]*9) > tp;
    kk = 0;
    ii = 0;
    //----
    if(scb)
    {
    while(kol_buy() > 0 && kk < 3)
    {
    for(i = 1; i <= kb; i++)
    {
    ii = M_ob[i][0];
    //----
    if(!OrderClose(ii,M_ob[i][2],Bid,slip,White))
    {
    gle = GetLastError();
    kk++;
    Print(" ", gle, " close buy ", kk);
    Sleep(6000);
    RefreshRates();
    }
    }
    kk++;
    }
    }
    kk = 0;
    ii = 0;
    //----
    if(scs)
    {
    while(kol_sell() > 0 && kk < 3)
    {
    for(i = 1; i <= ks; i++)
    {
    ii = M_os[i][0];
    //----
    if(!OrderClose(ii,M_os[i][2], Ask, slip, White))
    {
    gle = GetLastError();
    kk++;
    Print(" ", gle, " close sell ", kk);
    Sleep(6000);
    RefreshRates();
    }
    }
    kk++;
    }
    }
    kk = 0;
    tic = -1;
    //----
    if(sob)
    {
    if(max_lot_b == 0.0)
    lotsi = 0.01;
    else
    lotsi = 1.5*max_lot_b;
    //----
    while(tic == -1 && kk < 3)
    {
    tic = OrderSend(Symbol(), OP_BUY, NormalizeDouble(lotsi,2), Ask, slip, Ask - (sl)*Point, Ask + (tp + 25)*Point," ", m, 0, Yellow);
    Print("tic_buy=", tic);
    //----
    if(tic==-1)
    {
    gle = GetLastError();
    kk++;
    Print(" ", gle, " buy ", kk);
    Sleep(6000);
    RefreshRates();
    }
    }
    lastt = CurTime();
    return;
    }
    tic = -1;
    kk = 0;
    //----
    if(sos)
    {
    if(max_lot_s == 0.0)
    lotsi = 0.01;
    else
    lotsi = 1.5*max_lot_s;
    //----
    while(tic == -1 && kk < 3)
    {
    tic = OrderSend(Symbol(), OP_SELL, NormalizeDouble(lotsi,2), Bid, slip, Bid + (sl)*Point, Bid - (tp + 25)*Point," ", m, 0, Red);
    Print("tic_sell=", tic);
    //----
    if(tic == -1)
    {
    gle = GetLastError();
    kk++;
    Print(" ", gle, " sell ", kk);
    Sleep(6000);
    RefreshRates();
    }
    }
    lastt = CurTime();
    return;
    }
    }

    //+------------------------------------------------------------------+
    void MoveTrailingStop()
    {
    int cnt,total=OrdersTotal();
    for(cnt=0;cnt<total;cnt++)
    {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol())
    {
    if(OrderType()==OP_BUY)
    {
    if(TrailingStop>0&&Bid>(OrderOpenPrice()+(Trailing Stop+TrailingStep)*Point))
    {
    if((NormalizeDouble(OrderStopLoss(),Digits)<Normal izeDouble(Bid-Point*(TrailingStop+TrailingStep),Digits))||(Order StopLoss()==0))
    {
    OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(Bid-Point*TrailingStop,Digits),OrderTakeProfit(),0,Gre en);
    return(0);
    }
    }
    }
    else
    {
    if(TrailingStop>0&&Ask<(OrderOpenPrice()-(TrailingStop+TrailingStep)*Point))
    {
    if((NormalizeDouble(OrderStopLoss(),Digits)>(Norma lizeDouble(Ask+Point*(TrailingStop+TrailingStep),D igits)))||(OrderStopLoss()==0))
    {
    OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(Ask+Point*TrailingStop,Digits),OrderTakeP rofit(),0,Red);
    return(0);
    }
    }
    }
    }
    }
    }
    Last edited by BillR; 03-10-2009 at 19:14.

  8. #18
    Junior Member
    Join Date
    Mar 2015
    Location
    Ireland
    Posts
    1

    Default

    Hello Funyoo. Thank you for providing so easy method for adding a trailing stop to ea code. I made a little change in it and ended up with a trailing stop loss
    that follows an indicator such as moving average, parabolic SaR, Ichimoku or Bollinger Bands. All it takes is to modify four lines. The example below places SL at the value of Kijun Sen (part of Ichimoku) for the last completed candle:



    Code:
    void MoveTrailingStop()
      {
       int cnt,total=OrdersTotal();
       for(cnt=0;cnt<total;cnt++)
         {
          OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
          if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
            {
             if(OrderType()==OP_BUY)
               {
                if(TrailingStop>0)
                  {
                   if((NormalizeDouble(OrderStopLoss(),Digits)<NormalizeDouble((iIchimoku(NULL,0,9,26,52,MODE_KIJUNSEN,1)),Digits)) || (OrderStopLoss()==0))
                     {
                      OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble((iIchimoku(NULL,0,9,26,52,MODE_KIJUNSEN,1)),Digits),OrderTakeProfit(),0,Green);
                      return(0);
                     }
                  }
               }
             else
               {
                if(TrailingStop>0)
                  {
                   if((NormalizeDouble(OrderStopLoss(),Digits)>(NormalizeDouble((iIchimoku(NULL,0,9,26,52,MODE_KIJUNSEN,1)),Digits))) || (OrderStopLoss()==0))
                     {
                      OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble((iIchimoku(NULL,0,9,26,52,MODE_KIJUNSEN,1)),Digits),OrderTakeProfit(),0,Red);
                      return(0);
                     }
                  }
               }
            }
         }
      }
    Maybe it's obvious but I am not a coder so I don't know that, anyway - hope it will be useful.

    What I failed to achieve and hope to get some help with, is to make the above code send email notification every time the stop loss is moved. I have been
    experimenting with SendMail function but gave up after a week or so with no luck at all. Is there any simple way to do it? Of course my MT4 is already
    configured to send emails.

  9. #19
    Junior Member
    Join Date
    Jul 2015
    Posts
    4

    Default Trailing stop

    Hi! I developed an interesting strategy about the open London Session and I trade a breakout of the channel, the cool thing is that I use a smart trailing stop to improve the performances, like move the stop loss below the low of 3 candles before the actual...what do you think?

    Add a trailing stop-image802-jpg
    Add a trailing stop-image276-jpg

Similar Threads

  1. Trailing stop and Trailing profit
    By Luudt in forum MQL programming
    Replies: 0
    Last Post: 02-15-2016, 21:00
  2. Trailing stop
    By painofhell in forum Trading discussion
    Replies: 1
    Last Post: 11-07-2014, 17:43
  3. Best Trailing Stop ???
    By JXBlack in forum MQL programming
    Replies: 1
    Last Post: 08-09-2010, 15:48
  4. Waddah Attar Win EA - with Trailing Stop & Stop Loss
    By dlhc in forum Scripts and other tools
    Replies: 0
    Last Post: 03-09-2010, 12:33
  5. EA Trailing Stop
    By andrewte in forum MQL programming
    Replies: 1
    Last Post: 06-15-2009, 20:22

Tags for this Thread

100, add, broker, change, forex, forex trading, free, free ea, guide, martingale, metatrader, mq4, mql, mt4, profit, profitable, real, simple, stop, stoploss, study, test, time, trading, trailing, trailingstep, trailingstop

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •