BTC USD 81,038.9 Gold USD 4,378.12
Time now: Jun 1, 12:00 AM

Open Buy Sell Script (Simultaneously)

tenguk balik code terperasan ada bug sikit kat code atas, ada amendment kaler merah, tapi skrg kat ofis, tak boleh test. Bro tolong check.

1 lagi, EA ni baca ATR, tak boleh suka2 tukar TF, nanti value TS & SL dia berubah2. Atau bro nak fix kan dia baca ATR kat 1 TF aje?
 
tenguk balik code terperasan ada bug sikit kat code atas, ada amendment kaler merah, tapi skrg kat ofis, tak boleh test. Bro tolong check.

1 lagi, EA ni baca ATR, tak boleh suka2 tukar TF, nanti value TS & SL dia berubah2. Atau bro nak fix kan dia baca ATR kat 1 TF aje?

ok bro tq ssgt...tgh test nih...bkenaan tukar2 tf tu, kalau bro dpt fixkan dia pada tf yg kita bukak order tu cantik gak...sebab kekadang gatal tangan gak nak tgk tf lain...

tapi ni pun dah cantik dah...:)cgrock

just a quick question bro...trailing ni dia mcm mt4 punya trailing yg update kat server or dia just jaga kat chart jer? :)
 
Last edited:
ok bro tq ssgt...tgh test nih...bkenaan tukar2 tf tu, kalau bro dpt fixkan dia pada tf yg kita bukak order tu cantik gak...sebab kekadang gatal tangan gak nak tgk tf lain...

tapi ni pun dah cantik dah...:)cgrock

Test jangan tak test. Saya sendiri tak test. Bro tolong test. Ada bug repot kat sini.

kalau nak dia ikut TF kat mana dia open order tu tak boleh la, pasal EA ni tak open order. Dia cuma monitor dan set trailing je. Kalau dia open order boleh la pakai magicnumber. Ada 2 option, sama ada nak fix kat 1 TF atau pun set variable kat user input nak pakai TF mana.
 
insyaAllah kalo ada bug saya gitau...

ok gak kalau ada user input tu... :)
 
tambahan atr_timeframe pada user input.
Please check

Code:
extern string  ATR_timeframe        = "M5";
extern double  ATR_Stoploss         = 3;
extern double  ATR_TakeProfit       = 4;
extern double  ATR_TrailingStart    = 2;
extern double  ATR_TrailingStop     = 3;

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

int start()
{
   int i,j,pips,tf;
   double SL,TP,TS;
   
   tf=stringToTimeFrame(ATR_timeframe);
   
   double   Stoploss      =NormalizeDouble(ATR_Stoploss * iATR(Symbol(),tf,20,0)/Point,0);
   double   TakeProfit    =NormalizeDouble(ATR_TakeProfit * iATR(Symbol(),tf,20,0)/Point,0);
   
   double   TrailingStart =NormalizeDouble(ATR_TrailingStart * iATR(Symbol(),tf,20,0)/Point,0);
   double   TrailingStop  =NormalizeDouble(ATR_TrailingStop * iATR(Symbol(),tf,20,0)/Point,0);
   
   for (i=0;i<OrdersTotal();i++)
   {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()!=Symbol()) continue;
      
      //set stoploss & takeprofit
      if (OrderType()==OP_BUY) {SL=Bid-Stoploss*Point; TP=Ask+TakeProfit*Point;}
      if (OrderType()==OP_SELL){SL=Ask+Stoploss*Point; TP=Bid-TakeProfit*Point;}
      if (OrderStopLoss()==0 && Stoploss>0) OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0,CLR_NONE);
      if (OrderTakeProfit()==0 && TakeProfit>0) OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),TP,0,CLR_NONE);
      
      //check trailing stop
      if (OrderType()==OP_BUY) pips=(Bid-OrderOpenPrice())/Point;
      if (OrderType()==OP_SELL)pips=(OrderOpenPrice()-Ask)/Point; 
      
      if (pips>TrailingStart && pips<TrailingStop)
      {
         if (OrderType()==OP_BUY)  TS=Bid-(TrailingStart*Point);
         if (OrderType()==OP_SELL) TS=Ask+(TrailingStart*Point);
      
         if ((OrderType()==OP_BUY  && (OrderStopLoss()<TS) || OrderStopLoss()==0) ||
             (OrderType()==OP_SELL && (OrderStopLoss()>TS) || OrderStopLoss()==0) )
            for (j=0;j<10;j++)
            {
               if(OrderModify(OrderTicket(),OrderOpenPrice(),TS,OrderTakeProfit(),0,CLR_NONE))
               {
                  PlaySound("expert.wav");
                  break;
               }
               Sleep(50);
            }
       }
   }
   string textcomment;
   textcomment = StringConcatenate("ATR = ", DoubleToStr(iATR(Symbol(),tf,20,0)/Point,0),
                                    "\nStopLoss = ",DoubleToStr(Stoploss,0),
                                    "\nTakeProfit = ",DoubleToStr(TakeProfit,0),
                                    "\nTrailingStart = ",DoubleToStr(TrailingStart,0),
                                    "\nTrailingStop = ",DoubleToStr(TrailingStop,0) );
   Comment (textcomment);                                                                  
   
   return(0);
}

int stringToTimeFrame(string tfs)
{
   int tf=0;
   tfs = StringTrimLeft(StringTrimRight(StringUpperCase(tfs)));
   if (tfs=="M1" || tfs=="1")     tf=PERIOD_M1;
   if (tfs=="M5" || tfs=="5")     tf=PERIOD_M5;
   if (tfs=="M15"|| tfs=="15")    tf=PERIOD_M15;
   if (tfs=="M30"|| tfs=="30")    tf=PERIOD_M30;
   if (tfs=="H1" || tfs=="60")    tf=PERIOD_H1;
   if (tfs=="H4" || tfs=="240")   tf=PERIOD_H4;
   if (tfs=="D1" || tfs=="1440")  tf=PERIOD_D1;
   if (tfs=="W1" || tfs=="10080") tf=PERIOD_W1;
   if (tfs=="MN" || tfs=="43200") tf=PERIOD_MN1;
   return(tf);
}

string StringUpperCase(string str)
{
   string s=str;
   int lenght=StringLen(str) - 1;
   int char;
   
   while(lenght>=0)
   {
      char=StringGetChar(s, lenght);
      if((char>96 && char<123) || (char>223 && char<256))
               s = StringSetChar(s, lenght, char-32);
      else 
           if(char>-33 && char<0)
               s = StringSetChar(s, lenght, char+224);
      lenght--;
   }
   return(s);
}
 
Last edited:
wokeh...thanx again bro...

testing...testing...1,2,3... :)

edited: bro aiman, saya try kejap tadi yg baru nih...saya buat camni:

saya OP pakai script atr yg saya mintak kat FF tu...kat chart yg saya tarik tu dah ada ea bro yg saya set 0 pada tp dan sl, sebab script tu yg buat...so tinggal TS saya buat 2...

sekang bila dah lebih 2 atr, sl takder nampak perubahan kat server...so TS atr ni dia work camner yer? send to server cam mt4 punya atr, or dia monitor kat chart jer?

or saya salah sebab pakai script tu?
 
Last edited:
Sepatutnya ATR_stoploss kena letak value, kalau ATR_stoploss=0, trailing tak berfungsi.
Saya dah update code atas tu tambah ATR_trailingstop kat user input.

Macammana EA ni berfungsi sepatutnya macam ni.

Untuk ATR_Stoploss dan ATR_Takeprofit hanya berfungsi sekiranya pos belum diset SL dan TP. Kalau pos dah ada SL dan TP, dia tak akan ubah apa2 lagi.

Sekiranya profit (pips) > ATR_trailing start, EA akan start trailing mengikut value ATR_trailingstop.
 
Sekiranya profit (pips) > ATR_trailing start, EA akan start trailing mengikut value ATR_trailingstop.

wokeh, yg lain dah dpt paham (edited 1: dah test & worked like you said bro :) )...tinggal yg saya quote tu, nak confirmkan sikit...

let's say atr value=20...trailingstart=2, trailingstop=3...

so bila +ve dah cecah 20*2=40 pips, s/l ke BE ke? dan bila +ve cecah 3*20=60 pips baru dia trail setiap 1 pip? camtu ke bro?

edited 2: trailing stop tu fungsi, cuma trailing start tu dia tak gi ke BE...

2010.05.14 02:44:51 atr trailing EURUSD,M5: modify #26401471 sell 1.50 EURUSD at 1.2582 sl: 1.2588 tp: 1.2547 ok

kalau boleh, bila trailing start trigger, dia ke BE...seriau skit tadi bila dia tukar only 5 pips dari OP...walaupun demo jer...ehehehe...
 
Last edited:

Live Forex Chart

Currency
Rates
EUR / USD
1.14860
USD / JPY
156.877
GBP / USD
1.33765
USD / CHF
0.82250
USD / CAD
1.39985
EUR / JPY
180.138
AUD / USD
0.71167
Back
Top
Log in Register