BTC USD 84,355.8 Gold USD 4,274.11
Time now: Jun 1, 12:00 AM

ATR Trailing Stop EA

vastavista

Active Member
Messages
2,327
Joined
Jun 20, 2010
Messages
2,327
Reaction score
191
Points
33
salam...sory bukak tread baru...kalau dh ade padam lah...

Nk tnye...

sape ade ATR trailing stop untuk semua position...?dia manage untuk semua pair lah...
 
tkde yg pakai ke...?

aku ada satu...tapi untuk chart semasa je..

sye nk semua OP pair dia manage..
 
pernah dengar tapi takpasti pulak kt mana...kalu sapa leh kongsi bgzz
 
Artificial Intelligence EA.

cuba test EAs ni... aku pernah try tapi tak dpt setting terbaik so aku just abai kan... kalau nak coba, test la sendiri... Artificial Intelligence
 
Bukan susah nak buat tapi kena bayar ler huhuhuhu
 
Bukan susah nak buat tapi kena bayar ler huhuhuhu

kalau ni nk manage semua pair yg dh OP..nk triling cara ATR..
cth: aku main GBPUSD,EURUSD,dan semua pair la..
brape kos nye..?

Code:
#include <stdlib.mqh>


extern int Length = 10;
extern int ATRperiod = 5;
extern double Kv = 2.5;
int gia_96[];

int init() {
   if (Bars <= 500) {
      Comment("Not enough bars");
      Print("Not enough bars");
      return (-1);
   }
   /*
   if (Order_Ticket == 0 || OrderSelect(Order_Ticket, SELECT_BY_TICKET, MODE_TRADES) == FALSE) {
      Comment("Invalid Order Ticket");
      Print("Invalid Order Ticket");
      return (-1);
   }
   */
   ArrayResize(gia_96, 5);
   gia_96[0] = 128;
   gia_96[1] = 129;
   gia_96[2] = 135;
   gia_96[3] = 138;
   gia_96[4] = 146;
   return (0);
}

int deinit() {
   Comment("");
   return (0);
}

int start() {
   int Order_Ticket;
   double ld_0;
   double lda_8[90];
   double lda_12[90];
   int lia_16[90];
   bool l_bool_20;
   int l_error_24;
   string ls_unused_28;
   if (Bars <= 500 /* || Order_Ticket == 0 || OrderSelect(Order_Ticket, SELECT_BY_TICKET, MODE_TRADES) == FALSE */) return (-1);
   for (int li_36 = 90; li_36 >= 0; li_36--) {
      lda_8[li_36] = High[li_36] - Kv * iATR(NULL, 0, ATRperiod, li_36);
      lda_12[li_36] = Low[li_36] + Kv * iATR(NULL, 0, ATRperiod, li_36);
      for (int li_40 = Length - 1; li_40 >= 0; li_40--) {
         lda_8[li_36] = MathMax(lda_8[li_36], High[li_36 + li_40] - Kv * iATR(NULL, 0, ATRperiod, li_36 + li_40));
         lda_12[li_36] = MathMin(lda_12[li_36], Low[li_36 + li_40] + Kv * iATR(NULL, 0, ATRperiod, li_36 + li_40));
      }
      lia_16[li_36] = lia_16[li_36 + 1];
      if (Close[li_36] > lda_12[li_36 + 1]) lia_16[li_36] = 1;
      if (Close[li_36] < lda_8[li_36 + 1]) lia_16[li_36] = -1;
      if (lia_16[li_36] > 0) {
         if (lda_8[li_36] < lda_8[li_36 + 1]) lda_8[li_36] = lda_8[li_36 + 1];
         ld_0 = lda_8[li_36];
      } else {
         if (lia_16[li_36] < 0) {
            if (lda_12[li_36] > lda_12[li_36 + 1]) lda_12[li_36] = lda_12[li_36 + 1];
            ld_0 = lda_12[li_36];
         }
      }
   }
   Comment("SL:" + NormalizeDouble(ld_0, Digits));
   for(int OrderCnt=OrdersTotal();OrderCnt>0;OrderCnt--){
     if (OrderSelect(OrderCnt-1, SELECT_BY_POS, MODE_TRADES) == TRUE) {
      Order_Ticket=OrderTicket();
      if (OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP || OrderSymbol()!=Symbol()) continue;  
      if (ld_0 > 0.0 && NormalizeDouble(OrderStopLoss(), Digits) != NormalizeDouble(ld_0, Digits)) {
         Print(WindowExpertName(), ":: modifying order #", DoubleToStr(OrderTicket(), 0), " SL:", OrderStopLoss(), " =-> ", NormalizeDouble(ld_0, Digits), ")");
         if (IsTradeAllowed()) {
            while (true) {
               l_bool_20 = OrderModify(Order_Ticket, OrderOpenPrice(), NormalizeDouble(ld_0, Digits), OrderTakeProfit(), 0);
               if (l_bool_20 != TRUE) {
                  l_error_24 = GetLastError();
                  Print(WindowExpertName(), ":: Error modifying order #", DoubleToStr(OrderTicket(), 0), " : ", ErrorDescription(l_error_24));
               } else l_error_24 = 0;
               if (!(_ignoreError(l_error_24))) break;
               RefreshRates();
            }
         }
      }
     } else {
      l_error_24 = GetLastError();
      Comment(ErrorDescription(l_error_24));
      return (-1);
      }
     }
   return (0);
}

bool _ignoreError(int ai_0) {
   bool li_ret_4 = FALSE;
   int l_arr_size_8 = ArraySize(gia_96);
   for (int l_index_12 = 0; l_index_12 < l_arr_size_8; l_index_12++) {
      if (gia_96[l_index_12] == ai_0) {
         li_ret_4 = TRUE;
         break;
      }
   }
   return (li_ret_4);
}
 

Latest Posts

Live Forex Chart

Currency
Rates
EUR / USD
1.13806
USD / JPY
158.893
GBP / USD
1.32196
USD / CHF
0.82796
USD / CAD
1.41372
EUR / JPY
180.791
AUD / USD
0.70125
Back
Top
Log in Register