BTC USD 76,519.1 Gold USD 4,357.00
Time now: Jun 1, 12:00 AM

Belajar Coding EA (mql) asas

Bro kena tenguk expert tab, Kalau broker tak kasi mungkin ada tulis "Hedge is prohibited".
Boleh jadi price yang bro kasi salah, kalau PO untuk multi pairs, pastikan guna "MarketInfo"

Cuba bro paste sini code bro

sye lum ada code yg stabil lagi...cuma ubahsuai EA grid jew...

ps: bro aiman nk tnye...heat meter MTF tuan tu best sgt2...tpi nk tnye kenapa heat dia diukur guna close/high/low?knpa tk guna pips per minutes..?

M5 = iaitu brape pips dia jalan dalam 5 minit.. jadi tambah point power...logik ke idea sye ni...?:-?
 
sye lum ada code yg stabil lagi...cuma ubahsuai EA grid jew...

ps: bro aiman nk tnye...heat meter MTF tuan tu best sgt2...tpi nk tnye kenapa heat dia diukur guna close/high/low?knpa tk guna pips per minutes..?

M5 = iaitu brape pips dia jalan dalam 5 minit.. jadi tambah point power...logik ke idea sye ni...?:-?

sebab formula dia dah macam tu hehe...
formula tu terpulang lah nak set macammana, nak guna indi pun boleh
 
Assalamualaikum
Tuan, bagaimana caranya membuat coding "entry double ketika lot broker tidak tersedia"?

Misalnya, maksimum lot pada broker 100. Ketika kita hendak entry 150, maka broker akan menolak. Nah, bagaimana caranya agar EA bisa entry 100 dan 50 di harga yang sama?

Jika kita mau entry 300, maka EA akan entry 100 + 100 + 100 di harga yang sama?

Terima kasih
 
ce bro tukar formula tu...mungkin lagi best...
:D

Assalamualaikum
Tuan, bagaimana caranya membuat coding "entry double ketika lot broker tidak tersedia"?

Misalnya, maksimum lot pada broker 100. Ketika kita hendak entry 150, maka broker akan menolak. Nah, bagaimana caranya agar EA bisa entry 100 dan 50 di harga yang sama?

Jika kita mau entry 300, maka EA akan entry 100 + 100 + 100 di harga yang sama?

Terima kasih
 
Assalamualaikum
Tuan, bagaimana caranya membuat coding "entry double ketika lot broker tidak tersedia"?

Misalnya, maksimum lot pada broker 100. Ketika kita hendak entry 150, maka broker akan menolak. Nah, bagaimana caranya agar EA bisa entry 100 dan 50 di harga yang sama?

Jika kita mau entry 300, maka EA akan entry 100 + 100 + 100 di harga yang sama?

Terima kasih

MODE_MAXLOT untuk max lot, refer sini http://docs.mql4.com/constants/marketinfo

contoh code,
Code:
double lot = 150.0;
double maxlot = MarketInfo(Symbol(),MODE_MAXLOT); 

while (lot > maxlot)
{
	lot -= maxlot;
	OrderSend(Symbol(),OP_BUY,maxlot,Ask,5,0,0,"Buy",0,0,Lime);
}
OrderSend(Symbol(),OP_BUY,lot,Ask,5,0,0,"Buy",0,0,Lime);
 
MODE_MAXLOT untuk max lot, refer sini http://docs.mql4.com/constants/marketinfo

contoh code,
Code:
double lot = 150.0;
double maxlot = MarketInfo(Symbol(),MODE_MAXLOT); 

while (lot > maxlot)
{
	lot -= maxlot;
	OrderSend(Symbol(),OP_BUY,maxlot,Ask,5,0,0,"Buy",0,0,Lime);
}
OrderSend(Symbol(),OP_BUY,lot,Ask,5,0,0,"Buy",0,0,Lime);


Tuan, artinya 5 dalam "OrderSend(Symbol(),OP_BUY,maxlot,Ask,5,0,0,"Buy",0,0,Lime);" apa?
 
extern int Step = 170;
extern double FirstLot = 0.1;
extern double IncLot = 0.0;
extern int Magic = 2008;
extern double Risk = 0;
//extern string PlaceTradesFrom = "00:00";
//extern string PlaceTradesTo = "23:59";
extern bool UseHourTrade1 = false;
extern int FromHourTrade1 = 6,
ToHourTrade1 = 18;
extern bool UseHourTrade2 = false;
extern int FromHourTrade2 = 6,
ToHourTrade2 = 18;
extern bool UseBasketProfit = false;
extern double BasketProfit = 15;
extern bool UseEquityPctClose = false;
extern double EquityPct = 2.0;
//extern double MinProfit = 15.0;
extern string MaxLoss = "0=none; 1=pips (position with largest loss); 2=percent (all orders)";
extern int MaxLossMethod = 1;
extern int MaxLossPips = 100;
extern int MaxLossPct = 5;
extern bool UseNewsFilter = false;
extern int MinsBeforeNews = 60;
extern int MinsAfterNews = 30;
extern int NewsImpact = 3;

double g_ord_lots_144 = 0.0;
double g_ord_lots_152 = 0.0;
double gd_160;
double gd_168;
//int gi_176 = 16749022;
//int gi_unused_180 = 1774;
int minutesUntilNextEvent=0;

bool NewsTime() {
bool News=false;
static int PrevMinute = -1;
if (UseNewsFilter && Minute() != PrevMinute && !IsTesting()) {
PrevMinute = Minute();
int minutesSincePrevEvent = iCustom(Symbol(), 0, "FFCal", true, true, false, true, true, 1, 0);
minutesUntilNextEvent = iCustom(Symbol(), 0, "FFCal", true, true, false, true, true, 1, 1);
if ((minutesUntilNextEvent <= MinsBeforeNews) || (minutesSincePrevEvent <= MinsAfterNews)) {
int impactOfNextEvent = iCustom(Symbol(), 0, "FFCal", true, true, false, true, true, 2, 1);
if (impactOfNextEvent >= NewsImpact) {
News = true;
}
}
}
return(News);
}
int start() {
int li_0;
//if (idCheck_unique() != 1) {
li_0 = MyOrdersTotal(Magic);
double Profit=GetTotalProfit(Magic);
if ((UseBasketProfit && Profit>=BasketProfit && BasketProfit>0) || (UseEquityPctClose && Profit/AccountEquity()>=EquityPct/100 && EquityPct>0)) {
// CloseAll();
// return;
// }
//if (GetTotalProfit(Magic) >= MinProfit) {
DeletePendingOrders(Magic);
CloseOrders(Magic);
}
if (MaxLossMethod == 1 && GetMaxLossPips(Magic) >= MaxLossPips) {
DeletePendingOrders(Magic);
CloseOrders(Magic);
} else {
if (MaxLossMethod == 2 && GetTotalProfit(Magic) <= (-1.0 * AccountBalance()) * MaxLossPct / 100.0) {
DeletePendingOrders(Magic);
CloseOrders(Magic);
}
}
GlobalVariableSet("OldBalance", AccountBalance());
if ((UseHourTrade1 && !IsTradeTime1()) || (UseHourTrade2 && !IsTradeTime2())) {
//if (!IsInTimeWindow(PlaceTradesFrom, PlaceTradesTo)) {
if (li_0 > 0) DeletePendingOrders(Magic);
Comment("not in trading window");
}else {
if (UseNewsFilter && NewsTime()) {
Comment("Pending news event for ",Symbol()," in ",minutesUntilNextEvent," minutes...");
return;
}

Comment("in trading window");
if (li_0 == 0) {
OrderSend(Symbol(), OP_SELLSTOP, GetLots(), Ask - Step * Point, 3, 0, 0, "", Magic, 0, Green);
OrderSend(Symbol(), OP_BUYSTOP, GetLots(), Bid + Step * Point, 3, 0, 0, "", Magic, 0, Red);
}
gd_160 = GetLastSellPrice(Magic);
gd_168 = GetLastBuyPrice(Magic);
if (gd_160 - Bid <= 5.0 * Point) OrderSend(Symbol(), OP_BUYSTOP, g_ord_lots_144 + IncLot, gd_160 + Step * Point, 3, 0, 0, "", Magic, 0, Red);
if (Ask - gd_168 <= 5.0 * Point) OrderSend(Symbol(), OP_SELLSTOP, g_ord_lots_152 + IncLot, gd_168 - Step * Point, 3, 0, 0, "", Magic, 0, Red);
}
//}
return (0);
}

int DeletePendingOrders(int a_magic_0) {
//int l_ord_total_4;
//if (idCheck_unique() != 1) {
//l_ord_total_4 = OrdersTotal();
for (int l_pos_8 = OrdersTotal()-1; l_pos_8 >=0; l_pos_8--) {
OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES);
if (OrderMagicNumber() == a_magic_0 && OrderSymbol() == Symbol() && OrderType() == OP_SELLSTOP || OrderType() == OP_BUYSTOP) OrderDelete(OrderTicket());
}
//}
return (0);
}

int CloseOrders(int a_magic_0) {
//int l_ord_total_4;
//if (idCheck_unique() != 1) {
//l_ord_total_4 = OrdersTotal();
for (int l_pos_8 = OrdersTotal()-1; l_pos_8 >=0; l_pos_8--) {
OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES);
if (OrderMagicNumber() == a_magic_0 && OrderSymbol() == Symbol()) {
if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), Bid, 3);
if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), Ask, 3);
}
}
//}
return (0);
}

int MyOrdersTotal(int a_magic_0) {
int l_count_4;
//int l_ord_total_8;
//if (idCheck_unique() != 1) {
l_count_4 = 0;
//l_ord_total_8 = OrdersTotal();
for (int l_pos_12 = OrdersTotal()-1; l_pos_12 >=0; l_pos_12--) {
OrderSelect(l_pos_12, SELECT_BY_POS, MODE_TRADES);
if (OrderMagicNumber() == a_magic_0 && OrderSymbol() == Symbol()) l_count_4++;
}
//}
return (l_count_4);
}

double GetLastBuyPrice(int a_magic_0) {
int li_4;
//if (idCheck_unique() != 1) {
li_4 = OrdersTotal() - 1;
for (int l_pos_8 = li_4; l_pos_8 >= 0; l_pos_8--) {
OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES);
if (OrderMagicNumber() == a_magic_0 && OrderSymbol() == Symbol() && OrderType() == OP_SELLSTOP || OrderType() == OP_SELL) {
g_ord_lots_152 = OrderLots();
return (OrderOpenPrice());
}
}
//}
return (0);
}

double GetLastSellPrice(int a_magic_0) {
int li_4;
//if (idCheck_unique() != 1) {
li_4 = OrdersTotal() - 1;
for (int l_pos_8 = li_4; l_pos_8 >= 0; l_pos_8--) {
OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES);
if (OrderMagicNumber() == a_magic_0 && OrderSymbol() == Symbol() && OrderType() == OP_BUYSTOP || OrderType() == OP_BUY) {
g_ord_lots_144 = OrderLots();
return (OrderOpenPrice());
//}
}
}
return (100000);
}

int GetMaxLossPips(int a_magic_0) {
int li_4;
int li_8;
bool li_ret_12;
//if (idCheck_unique() != 1) {
li_ret_12 = FALSE;
li_4 = OrdersTotal() - 1;
for (int l_pos_16 = li_4; l_pos_16 >= 0; l_pos_16--) {
OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);
if (OrderMagicNumber() == a_magic_0 && OrderSymbol() == Symbol() && OrderType() == OP_SELL || OrderType() == OP_BUY) {
if (OrderType() == OP_SELL) li_8 = Ask - OrderOpenPrice();
else li_8 = OrderOpenPrice() - Bid;
if (li_8 < 0 && MathAbs(li_8) > li_ret_12) li_ret_12 = MathAbs(li_8);
//}
}
}
return (li_ret_12);
}

int GetTotalProfit(int a_magic_0) {
int li_4;
double ld_ret_8;
//if (idCheck_unique() != 1) {
ld_ret_8 = 0;
li_4 = OrdersTotal() - 1;
for (int l_pos_16 = li_4; l_pos_16 >= 0; l_pos_16--) {
OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);
if (OrderMagicNumber() == a_magic_0 && OrderSymbol() == Symbol() && OrderType() == OP_SELL || OrderType() == OP_BUY) ld_ret_8 += OrderProfit();
}
//}
return (ld_ret_8);
}

bool IsInTimeWindow(string as_0, string as_8) {
string l_time2str_16;
//if (idCheck_unique() != 1) {
l_time2str_16 = TimeToStr(TimeCurrent(), TIME_MINUTES);
if (as_8 > as_0) return (l_time2str_16 >= as_0 && l_time2str_16 <= as_8);
//}
return (l_time2str_16 >= as_0 || l_time2str_16 <= as_8);
}
bool IsTradeTime1() {
if ((FromHourTrade1 < ToHourTrade1) && ((Hour() < FromHourTrade1) || (Hour() >= ToHourTrade1))) return (false);
if (FromHourTrade1 > ToHourTrade1 && Hour() < FromHourTrade1 && Hour() >= ToHourTrade1) return (false);
return (true);
}
bool IsTradeTime2() {
if ((FromHourTrade2 < ToHourTrade2) && ((Hour() < FromHourTrade2) || (Hour() >= ToHourTrade2))) return (false);
if (FromHourTrade2 > ToHourTrade2 && Hour() < FromHourTrade2 && Hour() >= ToHourTrade2) return (false);
return (true);
}

int idCheck_unique() {
//if (getKey1() == gi_176)
return (0);
//return (1);
}

double GetLots()
{
double minlot = MarketInfo(Symbol(), MODE_MINLOT);

if(Risk!=0) {
double lot = NormalizeDouble(AccountEquity() * Risk/100 / 1000.0, 2);
if(lot < minlot) lot = minlot;
}
else lot=FirstLot;
return(lot);
}

Tuan bagaimana caranya agar EA ini
1. pasang buy stop dan sell stop sebanyak yang kita inginkan + TP dan SL ditentukan kita
2. Setelah TP hit, ingin memasang kembali PO di tempat yang sama

Terima kasih tuan
 

Live Forex Chart

Currency
Rates
EUR / USD
1.14795
USD / JPY
156.180
GBP / USD
1.33626
USD / CHF
0.82450
USD / CAD
1.39889
EUR / JPY
179.287
AUD / USD
0.71183
Back
Top
Log in Register