BTC USD 84,603.2 Gold USD 4,140.83
Time now: Jun 1, 12:00 AM

Belajar Coding EA (mql) asas

UseStopLoss diguna pakai ketika nak entry aje untuk dapatkan StopLossLevel pada OrderSend, kalau price hit SL, post akan tertutup sendiri (bukan EA yang tutup), sebab SL dah di pasang ketika open post, SL ni EA dah tak monitor lagi. Kalau tutup pc pun post tetap akan tertutup sendiri kalau kena SL.
 
UseStopLoss diguna pakai ketika nak entry aje untuk dapatkan StopLossLevel pada OrderSend, kalau price hit SL, post akan tertutup sendiri (bukan EA yang tutup), sebab SL dah di pasang ketika open post, SL ni EA dah tak monitor lagi. Kalau tutup pc pun post tetap akan tertutup sendiri kalau kena SL.

oo..jd sl dalam ea ni tak berkait dgn closebuy/sell lah kkan..ini bermaksud kalau kita set sl, bila closebuy/sell trigger dulu, post still akan close jugak kan....ok tq bro
 
Bro..

Nk tanye la kalau situasi cam ni..

Bila kita ada EA..

kalau line broker tk brape cantik la (re quote masa nk buat BUY/SELL/CLOSE)..

ape cadangan yg terbaik..?

nk repeat buy 5 kali ke..?

sleep(5000);

kalau masih tk dapat close gk cam ne..?
 
biasanya saya buat repeat, dalam repeat letak Sleep jugak.
Kalau tak jalan jugak, tak boleh buat apa dah, tu broker yang problem. Kalau terjadi kat manual pun tak boleh buat apa2.
 
Bro..

Nk tanye la kalau situasi cam ni..

Bila kita ada EA..

kalau line broker tk brape cantik la (re quote masa nk buat BUY/SELL/CLOSE)..

ape cadangan yg terbaik..?

nk repeat buy 5 kali ke..?

sleep(5000);

kalau masih tk dapat close gk cam ne..?

masta...repeat tu code dia sleep(5000); ke? cth kalau ea close ma10 cross ma25...katakan masa cross tu requote..lepas tu cross tu dah terlepas..kalau saya gunakan sleep(5000) ni di akan ulang sehingga close walaupun cross dah terlepas ke?..

kat mana nak attach sleep(5000) dalam ea tu? mintak tolong masta..
 
//+------------------------------------------------------------------+
//| This MQL is generated by Expert Advisor Builder |
//| http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/ |
//| |
//| In no event will author be liable for any damages whatsoever. |
//| Use at your own risk. |
//| |
//+------------------- DO NOT REMOVE THIS HEADER --------------------+

#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4

#property copyright "Expert Advisor Builder"
#property link "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"

extern int MagicNumber = 0;
extern bool SignalMail = False;
extern bool EachTickMode = True;
extern double Lots = 1.0;
extern int Slippage = 3;
extern bool UseStopLoss = True;
extern int StopLoss = 30;
extern bool UseTakeProfit = True;
extern int TakeProfit = 60;
extern bool UseTrailingStop = True;
extern int TrailingStop = 30;

int BarCount;
int Current;
bool TickCheck = False;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init() {
BarCount = Bars;

if (EachTickMode) Current = 0; else Current = 1;

return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit() {
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start() {
int Order = SIGNAL_NONE;
int Total, Ticket;
double StopLossLevel, TakeProfitLevel;



if (EachTickMode && Bars != BarCount) TickCheck = False;
Total = OrdersTotal();
Order = SIGNAL_NONE;

//+------------------------------------------------------------------+
//| Variable Begin |
//+------------------------------------------------------------------+


double Buy1_1 = iMA(NULL, 0, 10, 0, MODE_SMA, PRICE_CLOSE, Current + 0);
double Buy1_2 = iMA(NULL, 0, 25, 0, MODE_SMA, PRICE_CLOSE, Current + 0);

double Sell1_1 = iMA(NULL, 0, 10, 0, MODE_SMA, PRICE_CLOSE, Current + 0);
double Sell1_2 = iMA(NULL, 0, 25, 0, MODE_SMA, PRICE_CLOSE, Current + 0);

double CloseBuy1_1 = iMA(NULL, 0, 10, 0, MODE_SMA, PRICE_CLOSE, Current + 0);
double CloseBuy1_2 = iMA(NULL, 0, 25, 0, MODE_SMA, PRICE_CLOSE, Current + 0);

double CloseSell1_1 = iMA(NULL, 0, 10, 0, MODE_SMA, PRICE_CLOSE, Current + 0);
double CloseSell1_2 = iMA(NULL, 0, 25, 0, MODE_SMA, PRICE_CLOSE, Current + 0);


//+------------------------------------------------------------------+
//| Variable End |
//+------------------------------------------------------------------+

//Check position
bool IsTrade = False;

for (int i = 0; i < Total; i ++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
IsTrade = True;
if(OrderType() == OP_BUY) {
//Close

//+------------------------------------------------------------------+
//| Signal Begin(Exit Buy) |
//+------------------------------------------------------------------+

if (CloseBuy1_1 < CloseBuy1_2) Order = SIGNAL_CLOSEBUY;


//+------------------------------------------------------------------+
//| Signal End(Exit Buy) |
//+------------------------------------------------------------------+

if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Point * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
} else {
//Close

//+------------------------------------------------------------------+
//| Signal Begin(Exit Sell) |
//+------------------------------------------------------------------+

if (CloseSell1_1 > CloseSell1_2) Order = SIGNAL_CLOSESELL;


//+------------------------------------------------------------------+
//| Signal End(Exit Sell) |
//+------------------------------------------------------------------+

if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {
if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
}
}
}

//+------------------------------------------------------------------+
//| Signal Begin(Entry) |
//+------------------------------------------------------------------+

if (Buy1_1 > Buy1_2) Order = SIGNAL_BUY;

if (Sell1_1 < Sell1_2) Order = SIGNAL_SELL;


//+------------------------------------------------------------------+
//| Signal End |
//+------------------------------------------------------------------+

//Buy
if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (1000 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("BUY order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");
} else {
Print("Error opening BUY order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
Sleep(5000);
}

//Sell
if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (1000 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}

if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("SELL order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");
} else {
Print("Error opening SELL order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
Sleep(5000);
}

if (!EachTickMode) BarCount = Bars;

return(0);
}
//+------------------------------------------------------------------+

masta aiman ..betul ke sleep(5000) letak kat sini? saya hantam saja ni... kalau saya nak letak utk close nak letak kat man lak masta
 
code saya macam ni. Percubaan OrderSend maksimum 10 kali
diselang-seli Sleep(500); Kalau gagal (requote) dia try lagi.... sampai 10 kali. Tapi kalau berjaya sebelum 10 kali, dia stop.

Code:
bool retry=true;
int count=0;

while (retry)
{    
   if (OrderSend(Symbol(),OP_BUY,1,Ask,3,0,0,"",0,0,Green)>0) retry= false;
   if (retry) 
   {
      Sleep (500);
      count++;
      if (count>=10) retry= false;
   }
}

Sleep(500); bermaksud EA akan tido setengah saat, baru dia cuba lagi sekali. Kalu 1 saat Sleep(1000); kalau Sleep(5000); bermaksud 5 saat. Pada saya 5 saat tu lama sangat.
 
masta...repeat tu code dia sleep(5000); ke? cth kalau ea close ma10 cross ma25...katakan masa cross tu requote..lepas tu cross tu dah terlepas..kalau saya gunakan sleep(5000) ni di akan ulang sehingga close walaupun cross dah terlepas ke?..

kat mana nak attach sleep(5000) dalam ea tu? mintak tolong masta..

ko letak la selepas buat keje OP/Close..

5000 tu second...
 
code saya macam ni. Percubaan OrderSend maksimum 10 kali
diselang-seli Sleep(500); Kalau gagal (requote) dia try lagi.... sampai 10 kali. Tapi kalau berjaya sebelum 10 kali, dia stop.

Code:
bool retry=true;
int count=0;

while (retry)
{    
   if (OrderSend(Symbol(),OP_BUY,1,Ask,3,0,0,"",0,0,Green)>0) retry= false;
   if (retry) 
   {
      Sleep (500);
      count++;
      if (count>=10) retry= false;
   }
}

Sleep(500); bermaksud EA akan tido setengah saat, baru dia cuba lagi sekali. Kalu 1 saat Sleep(1000); kalau Sleep(5000); bermaksud 5 saat. Pada saya 5 saat tu lama sangat.

tapi tk takot price dh jauh...?kalau scalp bahaya kn..?
 

Latest Posts

Live Forex Chart

Currency
Rates
EUR / USD
1.12575
USD / JPY
157.835
GBP / USD
1.32430
USD / CHF
0.82836
USD / CAD
1.42465
EUR / JPY
177.683
AUD / USD
0.69430
Back
Top
Log in Register