BTC USD 76,485.3 Gold USD 4,341.83
Time now: Jun 1, 12:00 AM

Belajar Coding EA (mql) asas

Salam menyambut ramadhan...

masta...nk tnye ckit..

Katakan sya ingin membuat EA yg berkonsep Stochastic sebagai rule untuk OP..

S1M=iStochastic(NULL,PERIOD_M5,5,3,3,MODE_SMA,0,MODE_MAIN,0);
S1S=iStochastic(NULL,PERIOD_M5,5,3,3,MODE_SMA,0,MODE_SIGNAL,0);

S2M=iStochastic(NULL,PERIOD_M30,5,3,3,MODE_SMA,0,MODE_MAIN,0);
S2S=iStochastic(NULL,PERIOD_M30,5,3,3,MODE_SMA,0,MODE_SIGNAL,0);

S3M=iStochastic(NULL,PERIOD_H1,5,3,3,MODE_SMA,0,MODE_MAIN,0);
S3S=iStochastic(NULL,PERIOD_H1,5,3,3,MODE_SMA,0,MODE_SIGNAL,0);

S4M=iStochastic(NULL,PERIOD_W1,14,3,3,MODE_SMA,0,MODE_MAIN,0);
S4S=iStochastic(NULL,PERIOD_W1,14,3,3,MODE_SMA,0,MODE_SIGNAL,0);


Kemudian ingin menambah kepastian dengan Pivot..

Adakah cara ini boleh digunakan?

int week = 1;

double lastweek_high = iHigh(NULL,PERIOD_W1,week);
double lastweek_low = iLow(NULL,PERIOD_W1,week);
double lastweek_close = iClose(NULL,PERIOD_W1,week);

double R = lastweek_high - lastweek_low; //range
double p = (lastweek_high + lastweek_low + lastweek_close)/3; // Standard Pivot

double r5 = p + (R * 1.618);
double r4 = p + (R * 1.382);
double r3 = p + (R * 1.000);
double r2 = p + (R * 0.618);
double r1 = p + (R * 0.382);

double s1 = p - (R * 0.382);
double s2 = p - (R * 0.618);
double s3 = p - (R * 1.000);
double s4 = p - (R * 1.382);
double s5 = p - (R * 1.618);

if (ScanOpenTrades() == 0) Status = "READY";

Signal="NONE";
if(S1M>S1S && S2M>S2S && S3M>S3S && S4M>S4S && s5
|| S1M>S1S && S2M>S2S && S3M>S3S && S4M>S4S && s4
|| S1M>S1S && S2M>S2S && S3M>S3S && S4M>S4S && s3
|| S1M>S1S && S2M>S2S && S3M>S3S && S4M>S4S && s2
|| S1M>S1S && S2M>S2S && S3M>S3S && S4M>S4S && s1)
{
Signal="LONG";
}
if(S1M<S1S && S2M<S2S && S3M<S3S && S4M<S4S && r1
|| S1M<S1S && S2M<S2S && S3M<S3S && S4M<S4S && r2
|| S1M<S1S && S2M<S2S && S3M<S3S && S4M<S4S && r3
|| S1M<S1S && S2M<S2S && S3M<S3S && S4M<S4S && r4
|| S1M<S1S && S2M<S2S && S3M<S3S && S4M<S4S && r5)

{
Signal="SHORT";
}

Harap2 masta2 dan tuan2 skalian dapat bantu...nk tambah kepastian dengan pivot.

ps: Pivot sye ni konsep fibo pivot untuk weekly..

Tak jelas la cara mana tuan nak baca pivot tu... tapi, kalau cara bersilang, masta Aiman dah tunjukkan caranya...

Boleh jugak cuba simplified code kat bawah ni...

Code:
   int i;
   int week = 1;
   int period_list[]={PERIOD_M5,PERIOD_M30,PERIOD_H1,PERIOD_W1};
   double pivot_level[]={0.382,0.618,1,1.382,1.618};
   double r[5];
   double s[5];
   double S_Main[4];
   double S_Sig[4];
   double lastweek_high = iHigh(NULL,PERIOD_W1,week);
   double lastweek_low = iLow(NULL,PERIOD_W1,week);
   double lastweek_close = iClose(NULL,PERIOD_W1,week);
   double R = lastweek_high - lastweek_low; //range
   double p = (lastweek_high + lastweek_low + lastweek_close)/3; // Standard Pivot
   bool stochBuyOK = true;
   bool stochSellOK = true;
   bool supOK = false;
   bool resOK = false;
   string Signal = "NONE";   

   for(i=0;i<4;i++)
   {
      S_Main[i]=iStochastic(NULL,period_list[i],5,3,3,MODE_SMA,0,MODE_MAIN,0);
      S_Sig[i]=iStochastic(NULL,period_list[i],5,3,3,MODE_SMA,0,MODE_SIGNAL,0);
   }

   for(i=0;i<5;i++)
   {
      r[i]=p + (R * pivot_level[i]);
      s[i]=p - (R * pivot_level[i]);
   }

   for(i=0;i<4;i++)
   {
      stochBuyOK = stochBuyOK && S_Main[i]>S_Sig[i];
      stochSellOK = stochSellOK && S_Main[i]<S_Sig[i];
   }
   
   for(i=0;i<5;i++)
   {
      supOK = supOK || (Open[0]<s[i] && Close[0]>s[i]);
      resOK = resOK || (Open[0]>r[i] && Close[0]<r[i]);
   }
   
   if(stochBuyOK && supOK) Status="LONG";
   if(stochSellOK && resOK) Status="SHORT";
 
yg tuan tempe tunjuk ni untuk harga semasa dh sentuh pivot ke baru buat OP?

atau dalam jarak tertentu line ni?
 
yg tuan tempe tunjuk ni untuk harga semasa dh sentuh pivot ke baru buat OP?

atau dalam jarak tertentu line ni?

Sama aja.

Candle cross up mana2 resistant line dan stoch silang ke atas - LONG
Candle cross down mana2 support line dan stoch silang ke bawah - SHORT

Dia tunjukkan contoh simplified version, banyak guna array. Tak ramai orang buat EA guna array. Advanced coder aje.

Kalau tuan tenguk Bid, Close[0] atau iClose(0,0,0). Tu semua nilai semasa, sama nilai.
 
Last edited:
salam ramadan pada suma. mudah-mudahan dimurahkan rezeki dan dipermudahkan semua urusan kita. amin
 
yg tuan tempe tunjuk ni untuk harga semasa dh sentuh pivot ke baru buat OP?

atau dalam jarak tertentu line ni?

sebenarnya apa yang tempe tunjukkan kat sini adalah assumption ataupun kemungkinan yang mungkin ingin dilakukan oleh tuan vastavista... sebenarnya tempe pun tak jelas apa yang tuan nak lakukan dengan pivot level tu... pivot level tuan declare as double, tapi bila letak dalam statement if, tuan tak buat comparison dengan sebarang value lain... salah tu bro... Aiman agak-agak tuan nak OP bila price cross pivot level... jadi kat sini tempe pun buatkan sample coding untuk tu... selain dari tu, tempe tak boleh nak jawab....
 
sebenarnya apa yang tempe tunjukkan kat sini adalah assumption ataupun kemungkinan yang mungkin ingin dilakukan oleh tuan vastavista... sebenarnya tempe pun tak jelas apa yang tuan nak lakukan dengan pivot level tu... pivot level tuan declare as double, tapi bila letak dalam statement if, tuan tak buat comparison dengan sebarang value lain... salah tu bro... Aiman agak-agak tuan nak OP bila price cross pivot level... jadi kat sini tempe pun buatkan sample coding untuk tu... selain dari tu, tempe tak boleh nak jawab....

sye pun tk pasti nk letak double atau int...:D maklumlah sye newbie

tapi robot ni yg macam tuan aiman ckp tu la..

bila stoc dh silang dan harga semasa candle dh sentuh garisan tu..buat keputusan untuk buy atau sell..

tapi aku try kt straggy tester macam ade tk kena je..

kalau buy...buy aje dia buat...

kalau sell..sell aje dia buat..

stkat ni tkde lose...
 
sye pun tk pasti nk letak double atau int...:D maklumlah sye newbie

tapi robot ni yg macam tuan aiman ckp tu la..

bila stoc dh silang dan harga semasa candle dh sentuh garisan tu..buat keputusan untuk buy atau sell..

tapi aku try kt straggy tester macam ade tk kena je..

kalau buy...buy aje dia buat...

kalau sell..sell aje dia buat..

stkat ni tkde lose...

EA tuan baca multi TF, Stoch daripada PERIOD_M15 sampai PERIOD_W1,
pivot tu sendiri baca TF PERIOD_W1.
Sebabtu strategy tester jadi pening. Dia boleh baca current TF dan current chart aje.

Ea camni kena forward test, backtest tak accurate
 
EA tuan baca multi TF, Stoch daripada PERIOD_M15 sampai PERIOD_W1,
pivot tu sendiri baca TF PERIOD_W1.
Sebabtu strategy tester jadi pening. Dia boleh baca current TF dan current chart aje.

Ea camni kena forward test, backtest tak accurate

Betul tu... EA multiTF kena buat forward test...
 
sye pun tk pasti nk letak double atau int...:D maklumlah sye newbie

tapi robot ni yg macam tuan aiman ckp tu la..

bila stoc dh silang dan harga semasa candle dh sentuh garisan tu..buat keputusan untuk buy atau sell..

tapi aku try kt straggy tester macam ade tk kena je..

kalau buy...buy aje dia buat...

kalau sell..sell aje dia buat..

stkat ni tkde lose...

Tak kira double atau int, sebaiknya bila digunakan sebagai condition untuk if, seeloknya ada perbandingan dengan nilai tertentu. Sebab int dan double ni range dia besar. Kalau sekadar 0 atau 1, true or false, boleh guna type boolean. Untuk int dan double ni, sebarang nilai selain dari 0 adalah boleh jadi true, mengikut cara penggunaannya... Jadi kena berhati-hati...
 
Sedikit nota ringkas.

Setiap function dalam mq4 mesti dimulakan dengan "{" dan diakhiri dengan "}".

Contoh :
Code:
int Start()
[COLOR="Red"]{[/COLOR]   
     // code anda disini...
[COLOR="red"]}[/COLOR]

Setiap baris arahan mesti di terminate dengan semicolon ";"

Contoh :
Code:
   OrderSend(.....)[COLOR="red"];[/COLOR]

Adalah menjadi habit yang baik jika anda meletakkan komen pada code anda, supaya mudah menjadi rujukan kemudian hari... Komen untuk satu baris perlu diletakan "//". Manakala untuk banyak baris, hendaklah dimulakan dengan "/*" dan diakhiri dengan "*/".

Code:
// comment satu baris... apa yang anda letak disini tak akan dicompile.

/* comment byk baris.
   di sini jugak tak dicompile sehingga ditutup
   dengan 
*/
 

Live Forex Chart

Currency
Rates
EUR / USD
1.14761
USD / JPY
155.974
GBP / USD
1.33558
USD / CHF
0.82459
USD / CAD
1.39911
EUR / JPY
178.997
AUD / USD
0.71092
Back
Top
Log in Register