BTC USD 86,026.3 Gold USD 4,344.58
Time now: Jun 1, 12:00 AM

Belajar Coding EA (mql) asas

perh pening tgk..ape pun xpahm..kkekeke..camne nk bjr dr awal ni erk..basic??
 
salam..sapa ek blh beri bantuan kat saya untuk buat ea based pada math dan grid..?
 
Salam...camn nk buat trailing stop dengan paling berkesan..?

Boleh cari balik kat page belakang ebook tempe.
Sample codes pun ada sekali. Ada code trailing stop dalam tu. Dia dulu buat kelas mengajar EA, sebabtu ada ebook. Free plak tu dia kasi kat sini. Rugi la kalau tak download.


Tak payah pi jauh2, ada kat atas tu
 
Last edited:
Boleh cari balik kat page belakang ebook tempe.
Sample codes pun ada sekali. Ada code trailing stop dalam tu. Dia dulu buat kelas mengajar EA, sebabtu ada ebook. Free plak tu dia kasi kat sini. Rugi la kalau tak download.


Tak payah pi jauh2, ada kat atas tu

bro..

sye dh try pakai trailing kt dlam ebook tu..

memang jalan ok..order cantik..order modify pn jalan..

tapi ada error 1..

walau ada error tapi still tk loss simulasi strategy tester 2..

ke nk pakai live test..?
 
Kalau tak silap, code tempe tak ada trailingstep, setiap pips bergerak, ea akan cuba ubah SL. Kadang kala tak sampai 1 saat price akan bergerak semula ke belakang sebelum ea sempat ubah SL. Jadi ea cuba modify nilai SL yang sama. Sebabtu dapat error 1. Boleh abaikan error 1 ni.

Refer kat sini maksud error
http://docs.mql4.com/constants/errors
 
//+------------------------------------------------------------------+
//| AutoTrendChannel.mq4 |
//| Copyright © 2006, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
#property link "http://www.ultimaforex.com"


/*********************************************************************
* Author: Muhammad Hamizi Jaminan (hymns)
* Original Author: [email protected]
*
* Date: December 14, 2006
* Custom Indicator: AutoTrendChannel.mq4
* Version: 1.0.1
* Description: Trend Detector
*
* Change Logs
* Version 1.0.1
* - Rewriting Code. Multi Color.
* Other function will add next release :)
*
* Version ang_AutoCh_HL-v1
* - Release by [email protected]
* distributed for free by http://www.ultimaforex.com
**********************************************************************/

#property indicator_chart_window

extern int Hours = 240;
extern color col_bull = DodgerBlue;
extern color col_mid = Black;
extern color col_bear = Red;

//------------------
double lr,lr0,lrp;
double sx,sy,sxy,sx2,aa,bb;
int p,fs;
int f,f0,f1;
double dh,dl,dh_1,dl_1,dh_2,dl_2;
int ai_1,ai_2,bi_1,bi_2;
double hai,lai,dhi,dli,dhm,dlm,ha0,hap,la0,lap;
double price_p1,price_p0,price_p2,price_01,price_00,price_02;
int p1,p0,p2,fp;

string sName = "AutoTrendChannel";

//*****************************************
int init() {
p = Hours*60/Period();
if (fs==0) {
fs = 1;
}
return(0);
}

//*******************************
int deinit() {
ObjectDelete("sellstop2");
ObjectDelete("0"+sName);
ObjectDelete("buystop2");
}

//*******************************
int start() {
int i,n;
//------------------------------------------------------------------------------
if (f==1) {
p1=iBarShift(Symbol(),Period(),ObjectGet("sellstop2",OBJPROP_TIME1));
p0=iBarShift(Symbol(),Period(),ObjectGet("0"+sName,OBJPROP_TIME1));
p2=iBarShift(Symbol(),Period(),ObjectGet("buystop2",OBJPROP_TIME1));
if (fp==0 && p!=p1) {p=p1; fp=1;}
if (fp==0 && p!=p0) {p=p0; fp=1;}
if (fp==0 && p!=p2) {p=p2; fp=1;}
}

//====================================================
sx=0; sy=0; sxy=0; sx2=0;
for (n=0; n<=p; n++) {
sx+=n; sy+=Close[n];
sxy+=n*Close[n];
sx2+=MathPow(n,2);
}
aa=(sx*sy-(p+1)*sxy)/(MathPow(sx,2)-(p+1)*sx2);
bb=(sy-aa*sx)/(p+1);

//----------------------------------------------------
for (i=0; i<=p; i++) {
lr=bb+aa*i;
dh=High-lr;
dl=Low-lr;
//----------------------------------------------------
if (i<p/2) {
if (i==0) {
dh_1=0.0;
dl_1=0.0;
ai_1=i;
bi_1=i;
}
if (dh>=dh_1) {
dh_1=dh;
ai_1=i;
}
if (dl<=dl_1) {
dl_1=dl;
bi_1=i;
}
}
//----------------------------------------------------
if (i>=p/2) {
if (i==p/2) {
dh_2=0.0;
dl_2=0.0;
ai_2=i;
bi_2=i;
}
if (dh>=dh_2) {
dh_2=dh;
ai_2=i;
}
if (dl<=dl_2) {
dl_2=dl;
bi_2=i;
}
}
}
//-------------------------------------
lr0=bb;
lrp=bb+aa*(i+p);
//===================================================
if (MathAbs(ai_1-ai_2)>MathAbs(bi_1-bi_2)) f=1;
if (MathAbs(ai_1-ai_2)<MathAbs(bi_1-bi_2)) f=2;
if (MathAbs(ai_1-ai_2)==MathAbs(bi_1-bi_2)) {
if (MathAbs(dh_1-dh_2)<MathAbs(dl_1-dl_2)) f=1;
if (MathAbs(dh_1-dh_2)>=MathAbs(dl_1-dl_2)) f=2;
}
//=================================================
if (f==1) {
for (n=0; n<=20; n++) {
f1=0;
for (i=0; i<=p; i++) {
hai=High[ai_1]*(i-ai_2)/(ai_1-ai_2)+High[ai_2]*(i-ai_1)/(ai_2-ai_1);
if (i==0 || i==p/2) dhm=0.0;
if (High-hai>dhm && i<p/2) {
ai_1=i;
f1=1;
}
if (High-hai>dhm && i>=p/2) {
ai_2=i;
f1=1;
}
}
if (f==0) break;
}
//----------------------------
for (i=0; i<=p; i++) {
hai=High[ai_1]*(i-ai_2)/(ai_1-ai_2)+High[ai_2]*(i-ai_1)/(ai_2-ai_1);
dli=Low-hai;
if (i==0) dlm=0.0;
if (dli<dlm) dlm=dli;
}
ha0=High[ai_1]*(0-ai_2)/(ai_1-ai_2)+High[ai_2]*(0-ai_1)/(ai_2-ai_1);
hap=High[ai_1]*(p-ai_2)/(ai_1-ai_2)+High[ai_2]*(p-ai_1)/(ai_2-ai_1);
//----------------------------
price_p1=hap;
price_p0=hap+dlm/2;
price_p2=hap+dlm;
price_01=ha0;
price_00=ha0+dlm/2;
price_02=ha0+dlm;
}
//=================================================
if (f==2) {
for (n=0; n<=20; n++) {
f1=0;
for (i=0; i<=p; i++) {
lai=Low[bi_1]*(i-bi_2)/(bi_1-bi_2)+Low[bi_2]*(i-bi_1)/(bi_2-bi_1);
if (i==0 || i==p/2) dlm=0.0;
if (Low-lai<dlm && i<p/2) {
bi_1=i;
f1=1;
}
if (Low-lai<dlm && i>=p/2) {
bi_2=i;
f1=1;
}
}
if (f==0) break;
}
//----------------------------
for (i=0; i<=p; i++) {
lai=Low[bi_1]*(i-bi_2)/(bi_1-bi_2)+Low[bi_2]*(i-bi_1)/(bi_2-bi_1);
dhi=High-lai;
if (i==0) dhm=0.0;
if (dhi>dhm) dhm=dhi;
}
la0=Low[bi_1]*(0-bi_2)/(bi_1-bi_2)+Low[bi_2]*(0-bi_1)/(bi_2-bi_1);
lap=Low[bi_1]*(p-bi_2)/(bi_1-bi_2)+Low[bi_2]*(p-bi_1)/(bi_2-bi_1);
//----------------------------------------------------------------
price_p1=lap;
price_p0=lap+dhm/2;
price_p2=lap+dhm;
price_01=la0;
price_00=la0+dhm/2;
price_02=la0+dhm;
}
//===================================================================================
ObjectCreate("sellstop2",2, 0,Time[p],price_p1,Time[0],price_01);
ObjectCreate("0"+sName,2, 0,Time[p],price_p0,Time[0],price_00);
ObjectCreate("buystop2",2, 0,Time[p],price_p2,Time[0],price_02);
//-----------------------------------------------------------------
ObjectSet("sellstop2",OBJPROP_COLOR,col_bear);
ObjectSet("0"+sName,OBJPROP_COLOR,col_mid);
ObjectSet("0"+sName,OBJPROP_STYLE,STYLE_DOT);
ObjectSet("buystop2",OBJPROP_COLOR,col_bull);
//---------------------------------------------
ObjectSet("sellstop2",OBJPROP_TIME1,Time[p]);
ObjectSet("sellstop2",OBJPROP_PRICE1,price_p1);
ObjectSet("sellstop2",OBJPROP_TIME2,Time[0]);
ObjectSet("sellstop2",OBJPROP_PRICE2,price_01);
ObjectSet("0"+sName,OBJPROP_TIME1,Time[p]);
ObjectSet("0"+sName,OBJPROP_PRICE1,price_p0);
ObjectSet("0"+sName,OBJPROP_TIME2,Time[0]);
ObjectSet("0"+sName,OBJPROP_PRICE2,price_00);
ObjectSet("buystop2",OBJPROP_TIME1,Time[p]);
ObjectSet("buystop2",OBJPROP_PRICE1,price_p2);
ObjectSet("buystop2",OBJPROP_TIME2,Time[0]);
ObjectSet("buystop2",OBJPROP_PRICE2,price_02);
//==================================================================
f=1;
p1=p;
p0=p;
p2=p;
fp=0;
//*************************************************************************************
ObjectsRedraw();
return(0);
}
//=====================================================================================

MINTA BANTUAN ,,,, DI ATAS ADALAH DARI INDI AutoTrendChannel.mq4 YANG DIUBAH PADA NAME LINE BUYSTOP DAN SELLSTOP.

SAYA GUNA INDI TERESEBUT DENGAN EA TRENDLINE

MASAALAHNYA, KEKADANG BUY STOP DAN SELLSTOP TERBALIK.~X(
 
Dah ada 2 price untuk TL buystop dan TL sellstop. senag aje tak perlu susah2 kaji formula lagi.
Hanya perlu check kedua2 price mana lebih tinggi, sekiranya TL buystop di bawah TL sellstop, swap aje price kedua2 TL itu.


Code:
[COLOR="Blue"]
  double priceTmp;
  
  if (price_p1>price_p2) // Sekiranya terbalik
  {
   priceTmp=price_p1;  // swap price_p1 dan price_p2
   price_p1=price_p2;
   price_p2=priceTmp;
   
   priceTmp=price_01;  // swap price_01 dan price_02
   price_01=price_02;
   price_02=priceTmp;
  }[/COLOR]
  //===================================================================================
  ObjectCreate("sellstop2",2, 0,Time[p],price_p1,Time[0],price_01);
  ObjectCreate("0"+sName,2, 0,Time[p],price_p0,Time[0],price_00);
  ObjectCreate("buystop2",2, 0,Time[p],price_p2,Time[0],price_02);
 
Dah ada 2 price untuk TL buystop dan TL sellstop. senag aje tak perlu susah2 kaji formula lagi.
Hanya perlu check kedua2 price mana lebih tinggi, sekiranya TL buystop di bawah TL sellstop, swap aje price kedua2 TL itu.


;[/CODE]

TERIMA KASIH BEBANYAK..... SEMINGGU MENCARI X DAPAT... ALMAKLUM BUTA PROGRAMMING..:)

BARU BALIK KEJE AND TEST... TAKAT NI OK...:)cgrock
 

Live Forex Chart

Currency
Rates
EUR / USD
1.14664
USD / JPY
157.419
GBP / USD
1.33702
USD / CHF
0.82110
USD / CAD
1.40314
EUR / JPY
180.561
AUD / USD
0.71228
Back
Top
Log in Register