CoreDuo
Active Member
- Messages
- 1,632
- Joined
- Apr 13, 2007
- Messages
- 1,632
- Reaction score
- 307
- Points
- 41
buy dan sell serentak untuk 1 pair (current chart?)
Skrip utk buat PO...Buy & Sell serentak ada tak?
TQ
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
buy dan sell serentak untuk 1 pair (current chart?)


Skrip utk buat PO...Buy & Sell serentak ada tak?
TQ![]()
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...![]()

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);
}

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