BTC USD 62,006.8 Gold USD 4,258.79
Time now: Jun 1, 12:00 AM

Belajar Coding EA (mql) asas

Assalamualaikum bro semua....boleh bantu saya yang baru belajar buat Ea ni....
macam mana nak tulis perintah di bawah ini dalam bentuk code/bhs Ea.Dan di mana kita harus gabungkan dlm ea ini....

1) Op Buy, jika MA4+MA8+MA50 bersilang
2) Op Buy saja, jika MA4+MA8 bersilang ketika berada di atas garisan MA50

Manakala Op Sell
1) Op Sell, jika MA4+MA8+MA50 bersilang
2) Op Sell saja, jika MA4+MA8 bersilang ketika berada di bawah garisan MA50

Kalau ada trailing kan cantik lagi ya bos....
terima kasih




extern int TakeProfit = 10;
extern int StopLoss = 20;
extern int Slippage = 3;
extern double Lots = 1.0;

extern int MA1Periode = 4;
extern int MA2Periode = 8;
extern int MA3Periode = 50;

double dPoint; //untuk setting Broker 5 Digits

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

/* Bila chartnya adalah broker 5 Digit maka Point dikali 10 */
if (Digits==3 || Digits==5)
{
dPoint=Point*10;
**
else
{
dPoint=Point;
**


//----
return(0);
**
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
**
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----

double dMA1now, dMA2now, dMA3now, dMA1before, dMA2before, dMA3before;

/* Cari nilai MA saat ini */
dMA1now=iMA(NULL,0,MA1Periode,0,MODE_SMA,PRICE_CLOSE,0);
dMA2now=iMA(NULL,0,MA2Periode,0,MODE_SMA,PRICE_CLOSE,0);
dMA3now=iMA(NULL,0,MA3Periode,0,MODE_SMA,PRICE_CLOSE,0);

/* Cari nilai MA satu candle sebelumnya */
dMA1before=iMA(NULL,0,MA1Periode,0,MODE_SMA,PRICE_CLOSE,1);
dMA2before=iMA(NULL,0,MA2Periode,0,MODE_SMA,PRICE_CLOSE,1);
dMA3before=iMA(NULL,0,MA3Periode,0,MODE_SMA,PRICE_CLOSE,1);

if(OrdersTotal()<1)
{

if (AccountFreeMargin()<1000*Lots)
{ Comment("EA tidak bekerja, dana kurang :", AccountFreeMargin()); return(0);**


if ((dMA1now > dMA2now) && (dMA1before < dMA2before))
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Bid-StopLoss*dPoint,Ask+TakeProfit*dPoint,0);
**
else if ((dMA1now < dMA2now) && (dMA1before > dMA2before))
{
OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Ask+StopLoss*dPoint,Bid-TakeProfit*dPoint,0);
**
**



//----
return(0);
**
//+------------------------------------------------------------------+
 
Op Buy saja, jika MA4+MA8 bersilang ketika berada di atas garisan MA50

Code:
if (dMA1now > dMA2now && dMA1before <= dMA2before && dMA2now > dMA3now)

Op Sell saja, jika MA4+MA8 bersilang ketika berada di bawah garisan MA50

Code:
if (dMA1now < dMA2now && dMA1before >= dMA2before && dMA2now < dMA3now)

Wallahu'klam
 
Letak di mana bro..

Minta maaf bro Aiman, saya letak tak menjadi pulak....di mana harus meletakkannya...
double dMA1now, dMA2now, dMA3now, dMA1before, dMA2before, dMA3before;

/* Cari nilai MA saat ini */
dMA1now=iMA(NULL,0,MA1Periode,0,MODE_SMA,PRICE_CLO SE,0);
dMA2now=iMA(NULL,0,MA2Periode,0,MODE_SMA,PRICE_CLO SE,0);
dMA3now=iMA(NULL,0,MA3Periode,0,MODE_SMA,PRICE_CLO SE,0);

/* Cari nilai MA satu candle sebelumnya */
dMA1before=iMA(NULL,0,MA1Periode,0,MODE_SMA,PRICE_ CLOSE,1);
dMA2before=iMA(NULL,0,MA2Periode,0,MODE_SMA,PRICE_ CLOSE,1);
dMA3before=iMA(NULL,0,MA3Periode,0,MODE_SMA,PRICE_ CLOSE,1);

if(OrdersTotal()<1)
{

if (AccountFreeMargin()<1000*Lots)
{ Comment("EA tidak bekerja, dana kurang :", AccountFreeMargin()); return(0);**


if ((dMA1now > dMA2now) && (dMA1before < dMA2before))
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Bid-StopLoss*dPoint,Ask+TakeProfit*dPoint,0);
**
else if ((dMA1now < dMA2now) && (dMA1before > dMA2before))
{
OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Ask+S topLoss*dPoint,Bid-TakeProfit*dPoint,0);
**
**

:((
Op Buy saja, jika MA4+MA8 bersilang ketika berada di atas garisan MA50

Code:
if (dMA1now > dMA2now && dMA1before <= dMA2before && dMA2now > dMA3now)

Op Sell saja, jika MA4+MA8 bersilang ketika berada di bawah garisan MA50

Code:
if (dMA1now < dMA2now && dMA1before >= dMA2before && dMA2now < dMA3now)

Wallahu'klam
 
Last edited:
Ea ni bukan tuan yang buat ke?

Code:
if ((dMA1now > dMA2now) && (dMA1before < dMA2before))

diganti dengan

Code:
if (dMA1now > dMA2now && dMA1before <= dMA2before && dMA2now > dMA3now)


Code:
else if ((dMA1now < dMA2now) && (dMA1before > dMA2before))

diganti dengan

Code:
else if (dMA1now < dMA2now && dMA1before >= dMA2before && dMA2now < dMA3now)

Code ni tuan kena test sendiri ye.
Saya tak pasti tuan tahu ke tak, EA tuan hanya membenarkan 1 pos, kalau dah ada open pos ataupun PO(tak kira mana pair sekali pun), ea tak akan open pos baru
 
Ea ni bukan tuan yang buat ke?

Code:
if ((dMA1now > dMA2now) && (dMA1before < dMA2before))

diganti dengan

Code:
if (dMA1now > dMA2now && dMA1before <= dMA2before && dMA2now > dMA3now)


Code:
else if ((dMA1now < dMA2now) && (dMA1before > dMA2before))

diganti dengan

Code:
else if (dMA1now < dMA2now && dMA1before >= dMA2before && dMA2now < dMA3now)

Code ni tuan kena test sendiri ye.
Saya tak pasti tuan tahu ke tak, EA tuan hanya membenarkan 1 pos, kalau dah ada open pos ataupun PO(tak kira mana pair sekali pun), ea tak akan open pos baru

Terima kasih Bro aiman. Bukan saya yang buat Ea tu. Itu contoh dari pembelajaran Ea yang saya pelajari dr forum tetangga. Tersangat basic.Sebab saya trade manual saja pakai MA ni...sebab tu nak cuba2 copy paste..cuba tambah garam ajinya bro. Maksud bro..kalau sudah open buy sekali sebagai contoh( MA4+MA8 bersilang dan masih di atas MA50) Ea tidak buka po barukah jikalau sudah take profit, walaupun MA4+MA8 melakukan persilangan lagi, kemudian lag? Dan ketika itu masih berada di atas MA50? Sory bro...baru sangat
 
Last edited:
if (OrdersTotal()<1) bermaksud hanya berfungsi sekiranya belum ada apa2 pos, sama ada buy, sell, po buy atau po sell. Tak kira mana pair sekali pun
 
Kenapa Ea Tidak mahu op..

Assalamualikum bro...minta pertolongan lagi. Saya cuba buat ea berdasarkan custom indicator...indikator GP Diamond. Kenapa tidak mahu Op bro...tolong saya bro..maklum baru ni...

* mcm mana nak letak pic n indikator kat sini ye...:)

extern int TakeProfit = 20;
extern int StopLoss = 20;
extern double Lot = 1.0;
extern int Slippage = 3;

double dPoint = 0;


//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
CekDigitBroker(); // Periksa Jumlah Digit Broker
//----
return(0);
**
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
**
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
double dGP_DiamondUp=0, dGP_DiamondDown=0;
int iTrade=0;

dGP_DiamondUp = iCustom(Symbol(),0,"GP_Diamond",0,0);
dGP_DiamondDown = iCustom(Symbol(),0,"GP_Diamond",1,0);



if(OrdersTotal()<1)
{
if((dGP_DiamondUp>0) && (dGP_DiamondDown==0))
{
Buy();
**
**
else
{
if((dGP_DiamondDown>0) && (dGP_DiamondDown==0))
{
Sell();
**
**

for(iTrade=0;iTrade<OrdersTotal();iTrade++)
{
OrderSelect(iTrade,SELECT_BY_POS,MODE_TRADES);

if(OrderType()==OP_BUY && OrderSymbol()==Symbol())
{
if((dGP_DiamondDown>0) && (dGP_DiamondUp==0))
{
OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Violet);
**
**
else
{
if((dGP_DiamondUp>0) && (dGP_DiamondDown==0))
{
OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Violet);

**
**

**

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

/* Kumpulan Library */

//Memeriksa jumlah digit broker
void CekDigitBroker()
{
if(Digits==3 || Digits==5)
{
dPoint = Point*10;
**
else if(Digits==2 || Digits==4)
{
dPoint = Point;
**
**

/* Melakukan OP Buy */
void Buy()
{
OrderSend(Symbol(),OP_BUY,Lot,Ask,Slippage,Bid-StopLoss*dPoint,Ask+TakeProfit*dPoint,0);

**

/* Melakukan OP Sell */
void Sell()
{
OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippage,Ask+StopLoss*dPoint,Bid-TakeProfit*dPoint,0);
**
 

Live Forex Chart

Currency
Rates
EUR / USD
1.15415
USD / JPY
160.414
GBP / USD
1.33794
USD / CHF
0.79856
USD / CAD
1.39472
EUR / JPY
185.142
AUD / USD
0.70275
Back
Top
Log in Register