Anda di halaman 1dari 32

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

[HOT DISCUSS] Coding in MQL4 !


Printable View Show 40 post(s) from this thread on one page

Page 1 of 21 1 2 3 11 ...

Last

Givonly
[HOT DISCUSS] Coding in MQL4 !

01-07-2011 03:30 PM

Ini thread saya bikin berangkat dari postingan Bro hermit88 di postingan2 sebelumnya yang sering ngajak diskusi tentang MQL4. Posting terakhir Bro hermit88 di thread sebelah rasanya koq mending dibikin thread tersendiri biar thread sebelah itu ngga tambah gemuk & semakin jadi gado2 :D Selain itu agar lebih fokus & nyaman diskusinya... :ok: Oya, thread ini bukan bengkel EA/indikator yang ditujukan untuk "mereparasi" indi/EA error. Tapi thread ini lebih merupakan diskusi coding MQL4 terutama bagi yang sedang BELAJAR bikin EA/indikator hasil coding sendiri / coba2 ide sendiri.. :accute: Ingin belajar tidak usah ijin & basa-basi, chit-chat & junk post tidak ditoleransi! :rules: Btw, saya sendiri masih sangat awam di bidang coding MQL4 ini. Karena itu bagi para master yang udah sering/hobi oprek atau utak-atik EA, sangat diharapkan saran dan bantuannya demi membantu sesama member forum yang ingin belajar. Regards, :respect: Givo.

Givonly
Langsung menyambung pertanyaan sebelumnya: Quote:

01-07-2011 03:41 PM

Originally Posted by hermit88 untuk fungsi label sendiri contohnya gimana ya?

Label itu termasuk object di MQL4, dengan penulisannya menggunakan koordinat layar X & Y. Ke contoh aja ya biar mudah. Ini adalah procedure Tulis yang saya bikin sekali, terus biasa saya pake untuk EA/indikator baru. Enak kalo udah dibikin procedure, tinggal copas :p PHP Code:
//+------------------------------------------------------------------+ void Tulis(string namateks, string teks, color warna, int pojok, int posx, int posy { ObjectCreate(namateks, OBJ_LABEL, 0, 0, 0); ObjectSetText(namateks, teks, Ukuran_Font, Jenis_Font, warna); ObjectSet(namateks, OBJPROP_CORNER, Letak_Pojok); ObjectSet(namateks, OBJPROP_XDISTANCE, posx); ObjectSet(namateks, OBJPROP_YDISTANCE, posy);

1 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

Itu baris procedure taroh aja di bawah/akhir baris program. Ntar kita tinggal "manggil" dia, contohnya seperti ini: PHP Code:
Tulis("Nama Programmer", "hermit88", Red, 1, 5, 5);

Maka ntar hasilnya akan muncul teks di pojok layar sebelah kanan atas berwarna merah, sesuai dengan settingan yang kita buat di procedure sebelumnya. Jadi kalo ingin mengubah format tulisan, ya edit aja procedure-nya. Catatan untuk pojok/corner: 0 - kiri atas 1 - kanan atas 2 - kiri bawah 3 - kanan bawah Sedangkan koordinat X & Y relatif terhadap corner ybs. Semoga cukup jelas.. :)

hermit88
Quote:

01-07-2011 06:39 PM

Originally Posted by Givonly Langsung menyambung pertanyaan sebelumnya:

Label itu termasuk object di MQL4, dengan penulisannya menggunakan koordinat layar X & Y. Ke contoh aja ya biar mudah. Ini adalah procedure Tulis yang saya bikin sekali, terus biasa saya pake untuk EA/indikator baru. Enak kalo udah dibikin procedure, tinggal copas :p PHP Code:
//+------------------------------------------------------------------+ void Tulis(string namateks, string teks, color warna, int pojok, int posx, int posy { ObjectCreate(namateks, OBJ_LABEL, 0, 0, 0); ObjectSetText(namateks, teks, Ukuran_Font, Jenis_Font, warna); ObjectSet(namateks, OBJPROP_CORNER, Letak_Pojok); ObjectSet(namateks, OBJPROP_XDISTANCE, posx); ObjectSet(namateks, OBJPROP_YDISTANCE, posy); }

Itu baris procedure taroh aja di bawah/akhir baris program. Ntar kita tinggal "manggil" dia, contohnya seperti ini: PHP Code:
Tulis("Nama Programmer", "hermit88", Red, 1, 5, 5);

Maka ntar hasilnya akan muncul teks di pojok layar sebelah kanan atas berwarna merah, sesuai dengan settingan yang kita buat di procedure sebelumnya. Jadi kalo ingin mengubah format tulisan, ya edit aja procedure-nya.

2 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

Catatan untuk pojok/corner: 0 - kiri atas 1 - kanan atas 2 - kiri bawah 3 - kanan bawah Sedangkan koordinat X & Y relatif terhadap corner ybs. Semoga cukup jelas.. :)

:happy: akhirnya ada solusi biar :o (mata) kagak belok :D :D 1. Terimakasih sudah dibuatkan thread khusus ini. Code:
//+------------------------------------------------------------------+ //| Tampilkan Nilai SMA.mq4 | //| hermit88 | //| http://indo.mt5.com/member.php?3846-hermit88 | //+------------------------------------------------------------------+ #property copyright "hermit88" #property link "http://indo.mt5.com/member.php?3846-hermit88" extern bool TampilkanCurrentSMA = true; extern int No1_SMA_Berapa = 100; extern int No2_SMA_Berapa = 200; int init() int deinit() {return(0);} {return(0);}

int start() { if(TampilkanCurrentSMA) { Tulis("No1_SMA_Berapa", StringConcatenate("SMA ",No1_SMA_Berapa," SAAT INI @ ",DoubleToStr(iMA(NULL,0,No1_SMA_Berapa,0,MODE_SMA,PRICE_CLOSE,0),4)), Red, 2, 5, 40); Tulis("No2_SMA_Berapa", StringConcatenate("SMA ",No2_SMA_Berapa," SAAT INI @ ",DoubleToStr(iMA(NULL,0,No2_SMA_Berapa,0,MODE_SMA,PRICE_CLOSE,0),4)), Red, 2, 5, 5); } if(!TampilkanCurrentSMA) return(0); } //+------------------------------------------------------------------+ void Tulis(string namateks, string teks, color warna, int pojok, int posx, int posy) { ObjectCreate(namateks, OBJ_LABEL, 0, 0, 0); ObjectSetText(namateks, teks, 16, "Times New Roman", Red); ObjectSet(namateks, OBJPROP_CORNER, pojok); ObjectSet(namateks, OBJPROP_XDISTANCE, posx); ObjectSet(namateks, OBJPROP_YDISTANCE, posy); }

2. jadi penerapannya kurang lebih :accute: kan bro ? 3. akan saya pelajari lebih lanjut kalo bingung pastinya tanya lagi.... btw, terimakasih kanjeng guru Givonly udah berkenan membimbing pelajaran coding saya

3 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

:drink: :bravo:

Givonly
Yup begitu. Tapi alangkah baiknya jika dipotong, jangan panjang2 kayak uler :p Code:

01-07-2011 07:18 PM

StringConcatenate("SMA ",No2_SMA_Berapa," SAAT INI @ ",DoubleToStr(iMA(NULL,0,No2_SMA_Berapa,0,MODE_SMA,PRICE_CLOSE,0),4))

PHP Code:
iMA(NULL,0,No2_SMA_Berapa,0,MODE_SMA,PRICE_CLOSE,0)

Kasih variabel aja biar enak bacanya :accute:

hermit88
Quote:

01-09-2011 02:30 AM

Originally Posted by Givonly Yup begitu. Tapi alangkah baiknya jika dipotong, jangan panjang2 kayak uler :p Code:
StringConcatenate("SMA ",No2_SMA_Berapa," SAAT INI @ ",DoubleToStr(iMA(NULL,0,No2_SMA_Berapa,0,MODE_SMA,PRICE_CLOSE,0),4))

PHP Code:
iMA(NULL,0,No2_SMA_Berapa,0,MODE_SMA,PRICE_CLOSE,0)

Kasih variabel aja biar enak bacanya :accute:

lagi seneng uler uleran gan, kan tahun baru tapi lain kali pasti ganti pake variable aja deh, nurut ama gurunya biar nggak di hukum :D :D :D tanya lagi ahh... :woo: cari cari jawaban sendiri kagak nemu yang pasti :woo: apa bedanya :pleeease: 1. return; 2. return(0); 3. return(1); 4. int CalcSum(int x, int y) { return(x+y);

4 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

Givonly
Quote:

01-09-2011 08:29 AM

Originally Posted by hermit88 lagi seneng uler uleran gan, kan tahun baru tapi lain kali pasti ganti pake variable aja deh, nurut ama gurunya biar nggak di hukum :D :D :D tanya lagi ahh... :woo: cari cari jawaban sendiri kagak nemu yang pasti :woo: apa bedanya :pleeease: 1. return; 2. return(0); 3. return(1); 4. int CalcSum(int x, int y) { return(x+y); }

Haha, botol ketemu tutup.. :D Sebenarnya dari coding Bro yang sebelumnya, saya ingin komen bagian yang ini: Code:
...... if(!TampilkanCurrentSMA) return(0); }

Menurut saya, bagian if(!TampilkanCurrentSMA) itu tidak perlu. Oke, jadi begini. Operator return itu berfungsi MENGHENTIKAN fungsi yang bersangkutan, dengan mengembalikan nilai tertentu yang diletakkan di dalam tanda kurungnya. Tapi kita tahu, tidak setiap FUNCTION itu menghasilkan nilai. Ada yang cuma melakukan perintah, tanpa ada output-nya. Kebetulan function dari contoh sebelumnya (function Tulis) PAS banget sebagai contoh. Itu adalah contoh FUNCTION yang tanpa output nilai, dia hanya menghasilkan perintah untuk menulis text saja. Nah dalam MQL:

Function yang menghasilkan nilai selalu didahului dengan tipe data-nya (int, double, string, dll) sesuai dengan nilai yang ingin dicari. Sedangkan funnction yang tidak menghasilkan nilai tertentu, didahului dengan tipe data void (seperti contoh di atas).
Ke pertanyaan: return; Nah, ini contoh return yang diletakkan di function yang tanpa output nilai. Bro

5 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

perhatikan ngga ada tanda kurungnya khan? Nah return yang seperti ini BOLEH tidak ditulis, makanya Bro liat dari function Tulis yang saya bikin sebelumnya, itu di bagian akhir ngga saya kasih return wong ngga ada gunanya hehe :p return(0); ini return yang menghasilkan output 0 atau false. return(1); ini return yang menghasilkan output 1 atau true. int CalcSum(int x, int y) { return(x+y); } Nah, perhatikan ini contoh function yang menghasilkan output nilai. Apa nilainya? Yakni x+y. Oya, sebagai catatan. Dalam bahasa pemrograman yang lain, biasanya function tanpa nilai disebut prosedur (procedure) sedangkan yang ada output nilai-nya disebut fungsi (function). Tapi kalo di MQL ini dan untuk diskusi selanjutnya, semua disebut function aja.

hermit88
Quote:

01-09-2011 02:46 PM

Originally Posted by Givonly Haha, botol ketemu tutup.. :D Sebenarnya dari coding Bro yang sebelumnya, saya ingin komen bagian yang ini: Code:
...... if(!TampilkanCurrentSMA) return(0); }

Menurut saya, bagian if(!TampilkanCurrentSMA) itu tidak perlu. Oke, jadi begini. Operator return itu berfungsi MENGHENTIKAN fungsi yang bersangkutan, dengan mengembalikan nilai tertentu yang diletakkan di dalam tanda kurungnya. Tapi kita tahu, tidak setiap FUNCTION itu menghasilkan nilai. Ada yang cuma melakukan perintah, tanpa ada output-nya. Kebetulan function dari contoh sebelumnya (function Tulis) PAS banget sebagai contoh. Itu adalah contoh FUNCTION yang tanpa output nilai, dia hanya menghasilkan perintah untuk menulis text saja. Nah dalam MQL: Function yang menghasilkan nilai selalu didahului dengan tipe data-nya (int, double, string, dll) sesuai dengan nilai yang ingin dicari. Sedangkan funnction yang tidak menghasilkan nilai tertentu, didahului dengan tipe data void (seperti contoh di atas). Ke pertanyaan: return; Nah, ini contoh return yang diletakkan di function yang tanpa output nilai. Bro perhatikan ngga ada tanda kurungnya khan? Nah return yang seperti ini BOLEH tidak ditulis, makanya Bro liat dari

6 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

function Tulis yang saya bikin sebelumnya, itu di bagian akhir ngga saya kasih return wong ngga ada gunanya hehe :p return(0); ini return yang menghasilkan output 0 atau false. return(1); ini return yang menghasilkan output 1 atau true. int CalcSum(int x, int y) { return(x+y); } Nah, perhatikan ini contoh function yang menghasilkan output nilai. Apa nilainya? Yakni x+y. Oya, sebagai catatan. Dalam bahasa pemrograman yang lain, biasanya function tanpa nilai disebut prosedur (procedure) sedangkan yang ada output nilai-nya disebut fungsi (function). Tapi kalo di MQL ini dan untuk diskusi selanjutnya, semua disebut function aja.

jika Code:
int CalcSum(int x, int y) { return(x+y); }

saya rubah menjadi Code:


int CalcSum(int x=3, int y=5) { return(x+y); }

maka pada function int CalcSum a. menghasilkan nilai 8 b. menghasilkan nilai x=3 dan y=5 c. menghasilkan nilai x=0 dan y=0 d. menghasilkan nilai x=1 dan y=1 e. kalau salah semua berapa nilai yang dihasilkan? mana yang benar guru? :woo:

Givonly
Quote:

01-09-2011 03:04 PM

Originally Posted by hermit88 jika Code:


int CalcSum(int x, int y) { return(x+y); }

7 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

saya rubah menjadi Code:


int CalcSum(int x=3, int y=5) { return(x+y); }

maka pada function int CalcSum a. menghasilkan nilai 8 b. menghasilkan nilai x=3 dan y=5 c. menghasilkan nilai x=0 dan y=0 d. menghasilkan nilai x=1 dan y=1 e. kalau salah semua berapa nilai yang dihasilkan? mana yang benar guru? :woo:

Quote:

Originally Posted by hermit88 jika Code:


int CalcSum(int x, int y) { return(x+y); }

saya rubah menjadi Code:


int CalcSum(int x=3, int y=5) { return(x+y); }

maka pada function int CalcSum a. menghasilkan nilai 8 b. menghasilkan nilai x=3 dan y=5 c. menghasilkan nilai x=0 dan y=0 d. menghasilkan nilai x=1 dan y=1 e. kalau salah semua berapa nilai yang dihasilkan? mana yang benar guru? :woo:

itu tidak lazim (kalo tidak disebut sebagai kurang tepat :p) Jadi function itu ibarat mesin yang siap menerima input, tapi input tersebut jangan langsung dimasukkan ke function secara langsung. Jadi begini Code:
int a=3; int b=5; int c=CalcSum(3,5); //perhatikan inilah baris yang memanggil function CalcSum & dimasukkan ke variabel c.

8 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

int CalcSum(int x, int y) { return(x+y); }

Kalo ditulis demikian, tentu c nilainya 8 :) Untuk yang Bro tulis di atas, kalopun benar nanti itu akan menghasilkan 8. Tetapi bedanya, itu menjadi function yang tidak bisa dipakai ulang karena variabel x dan y di fungsi akan SELALU bernilai 3 dan 5 (padahal tujuan function adalah agar bisa dipanggil berkalikali). Coba bandingkan dengan function Tulis pada contoh sebelumnya, dari segi penulisan. Yang perlu diingat dalam function adalah: 1. Ada bagian untuk deklarasi/penulisan function (berisi logic dari function itu sendiri), dan 2. Ada bagian untuk memakai/"memanggil" function tersebut. :accute:

hermit88
Quote:

01-09-2011 11:34 PM

Originally Posted by Givonly itu tidak lazim (kalo tidak disebut sebagai kurang tepat :p) Jadi function itu ibarat mesin yang siap menerima input, tapi input tersebut jangan langsung dimasukkan ke function secara langsung. Jadi begini Code:
int a=3; int b=5; int c=CalcSum(3,5); //perhatikan inilah baris yang memanggil function CalcSum & dimasukkan ke variabel c. int CalcSum(int x, int y) { return(x+y); }

Kalo ditulis demikian, tentu c nilainya 8 :) Untuk yang Bro tulis di atas, kalopun benar nanti itu akan menghasilkan 8. Tetapi bedanya, itu menjadi function yang tidak bisa dipakai ulang karena variabel x dan y di fungsi akan SELALU bernilai 3 dan 5 (padahal tujuan function adalah agar bisa dipanggil berkali-kali). Coba bandingkan dengan function Tulis pada contoh sebelumnya, dari segi penulisan. Yang perlu diingat dalam function adalah: 1. Ada bagian untuk deklarasi/penulisan function (berisi logic dari function itu sendiri), dan 2. Ada bagian untuk memakai/"memanggil" function tersebut. :accute:

terimakasih guru, sekarang saya lebih paham untuk membuat function :happy:

9 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

btw, sekarang saya mau tanya structure. di meta editor, ketika kita akan membuat new expert advisor pertama kali kita disuguhi : Code:
//+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---//---return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---//---return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---//---return(0); } //+------------------------------------------------------------------+

ea akan berjalan dengan urutan int init() int start() int deinit int init() dieksekusi sekali pada saat ea mulai mode on int start() dieksekusi berulang int deinit() dieksekusi sekali sebelum ea mode off yang saya masih rancu pengertiannya di int start() jadi, apa yang menyebabkan ea keluar dari int start() kemudian mengeksekusi int deinit() ? apakah operator return(0); yang menyebabkan ea keluar dari start menuju deinit ?

kalo jawabannya adalah benar operator return(0); yang menyebabkan keluar maka sebenarnya maksud saya : Code:
...... if(!TampilkanCurrentSMA) return(0); }

10 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

untuk mengeluarkan ea dari int start() menuju deinit sebelum mode off kalo jawaban saya salah mohon koreksi yang benar supaya saya lebih menjiwai

Givonly
Quote:

01-10-2011 02:58 AM

Originally Posted by hermit88 terimakasih guru, sekarang saya lebih paham untuk membuat function :happy: btw, sekarang saya mau tanya structure. di meta editor, ketika kita akan membuat new expert advisor pertama kali kita disuguhi : Code:
//+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---//---return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---//---return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---//---return(0); } //+------------------------------------------------------------------+

ea akan berjalan dengan urutan int init() int start() int deinit int init() dieksekusi sekali pada saat ea mulai mode on int start() dieksekusi berulang int deinit() dieksekusi sekali sebelum ea mode off

11 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

yang saya masih rancu pengertiannya di int start() jadi, apa yang menyebabkan ea keluar dari int start() kemudian mengeksekusi int deinit() ? apakah operator return(0); yang menyebabkan ea keluar dari start menuju deinit ?

kalo jawabannya adalah benar operator return(0); yang menyebabkan keluar maka sebenarnya maksud saya : Code:
...... if(!TampilkanCurrentSMA) return(0); }

untuk mengeluarkan ea dari int start() menuju deinit sebelum mode off kalo jawaban saya salah mohon koreksi yang benar supaya saya lebih menjiwai

Sebenarnya Bro agak rancu mungkin karena menghubungkan start() dengan deinit() ( dengan asumsi seolah2 setelah start() kemudian deinit() ). Meskipun inisialisasi dieksekusi dengan urutan seperti yang Bro paparkan di atas, tetapi masingmasing adalah independen, dalam artian ketiga function standar tersebut diekseskusi terpisah (sebagaimana function2 yang lain juga demikian). Dan function standar tersebut memiliki sebuah "perjanjian/kesepakatan" yang dibuat oleh developer MQL, bahwa init() sebagai "pintu masuk" dan deinit() sebagai "pintu keluar". Tanpa mempedulikan/pusing dengan hal2 yang lain, pokoknya init() pasti dieksekusi jika EA diattach & deinit() juga pasti dieksekusi jika EA keluar (baik sengaja, maupun reject oleh MT4). Dari sini, dapat dipahami sesungguhnya tidak ada yang mengeluarkan function start(), karena function special ini adalah ruang utama program yang dieksekusi/tidaknya adalah berdasarkan pergerakan tick. Selama tick gerak, start() akan terus diekseskusi berulang2. Perhatikan pernyataan: Quote:

untuk mengeluarkan ea dari int start() menuju deinit sebelum mode off
Jadi jangan dihubungkan sebagai sebuah urutan antara start() dan deinit() tersebut, karena masing2 terpisah. EA keluar dari int start --> penyebabnya karena tidak ada gerak tick (cuma itu saja). Sekali lagi saya ulangi: init() -----> dieksekusi saat inisialisasi (masuk), tanpa peduli apapun yang terjadi pada function yang lain. deinit() ----> dieksekusi saat deinisialisasi (keluar), tanpa peduli apapun yang terjadi pada function yang lain. start() -----> dieksekusi saat ada gerak tick, tanpa peduli apapun yang terjadi pada function yang lain. Saya coba bikin analogi ya: Misalnya Bro dapat perintah dari atasan untuk berkunjung ke rumah klien, dengan perintah sbb:

12 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

1. Jika sampai sana, sampaikan dulu salam dari atasan. [init()] 2. Jika kondisi mendukung, bahas proyek kerjasama. [start()] 3. Jika mau pulang, jangan lupa bawa barang pesanan. [deinit()] Perhatikan bahwa, Bro harus tetap bawa barang pesanan meskipun ngga jadi bahas proyek, termasuk ngga sempet titip salam segala misalnya :D Karena instruksi untuk bawa barang pesanan tersebut syaratnya cuma 1, yakni jika Bro mau pulang dari sana [deinit()]. Maaf jika analogi kurang tepat, sekedar gambaran biar lebih menjiwai :accute:

Givonly
Quote:

01-10-2011 02:58 AM

Originally Posted by hermit88 terimakasih guru, sekarang saya lebih paham untuk membuat function :happy: btw, sekarang saya mau tanya structure. di meta editor, ketika kita akan membuat new expert advisor pertama kali kita disuguhi : Code:
//+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---//---return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---//---return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---//---return(0); } //+------------------------------------------------------------------+

ea akan berjalan dengan urutan int init() int start() int deinit

13 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

int init() dieksekusi sekali pada saat ea mulai mode on int start() dieksekusi berulang int deinit() dieksekusi sekali sebelum ea mode off yang saya masih rancu pengertiannya di int start() jadi, apa yang menyebabkan ea keluar dari int start() kemudian mengeksekusi int deinit() ? apakah operator return(0); yang menyebabkan ea keluar dari start menuju deinit ?

kalo jawabannya adalah benar operator return(0); yang menyebabkan keluar maka sebenarnya maksud saya : Code:
...... if(!TampilkanCurrentSMA) return(0); }

untuk mengeluarkan ea dari int start() menuju deinit sebelum mode off kalo jawaban saya salah mohon koreksi yang benar supaya saya lebih menjiwai

Sebenarnya Bro agak rancu mungkin karena menghubungkan start() dengan deinit() ( dengan asumsi seolah2 setelah start() kemudian deinit() ). Meskipun inisialisasi dieksekusi dengan urutan seperti yang Bro paparkan di atas, tetapi masingmasing adalah independen, dalam artian ketiga function standar tersebut diekseskusi terpisah (sebagaimana function2 yang lain juga demikian). Dan function standar tersebut memiliki sebuah "perjanjian/kesepakatan" yang dibuat oleh developer MQL, bahwa init() sebagai "pintu masuk" dan deinit() sebagai "pintu keluar". Tanpa mempedulikan/pusing dengan hal2 yang lain, pokoknya init() pasti dieksekusi jika EA diattach & deinit() juga pasti dieksekusi jika EA keluar (baik sengaja, maupun reject oleh MT4). Dari sini, dapat dipahami sesungguhnya tidak ada yang mengeluarkan function start(), karena function special ini adalah ruang utama program yang dieksekusi/tidaknya adalah berdasarkan pergerakan tick. Selama tick gerak, start() akan terus diekseskusi berulang2. Perhatikan pernyataan: Quote:

untuk mengeluarkan ea dari int start() menuju deinit sebelum mode off
Jadi jangan dihubungkan sebagai sebuah urutan antara start() dan deinit() tersebut, karena masing2 terpisah. EA keluar dari int start --> penyebabnya karena tidak ada gerak tick (cuma itu saja). Sekali lagi saya ulangi: init() -----> dieksekusi saat inisialisasi (masuk), tanpa peduli apapun yang terjadi pada function yang lain. deinit() ----> dieksekusi saat deinisialisasi (keluar), tanpa peduli apapun yang terjadi pada function yang lain. start() -----> dieksekusi saat ada gerak tick, tanpa peduli apapun yang terjadi pada

14 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

function yang lain. Saya coba bikin analogi ya: Misalnya Bro dapat perintah dari atasan untuk berkunjung ke rumah klien, dengan perintah sbb: 1. Jika sampai sana, sampaikan dulu salam dari atasan. [init()] 2. Jika kondisi mendukung, bahas proyek kerjasama. [start()] 3. Jika mau pulang, jangan lupa bawa barang pesanan. [deinit()] Perhatikan bahwa, Bro harus tetap bawa barang pesanan meskipun ngga jadi bahas proyek, termasuk ngga sempet titip salam segala misalnya :D Karena instruksi untuk bawa barang pesanan tersebut syaratnya cuma 1, yakni jika Bro mau pulang dari sana [deinit()]. Maaf jika analogi kurang tepat, sekedar gambaran biar lebih menjiwai :accute:

hermit88
Quote:

01-10-2011 03:21 AM

Originally Posted by Givonly Sebenarnya Bro agak rancu mungkin karena menghubungkan start() dengan deinit() ( dengan asumsi seolah2 setelah start() kemudian deinit() ). Meskipun inisialisasi dieksekusi dengan urutan seperti yang Bro paparkan di atas, tetapi masing-masing adalah independen, dalam artian ketiga function standar tersebut diekseskusi terpisah (sebagaimana function2 yang lain juga demikian). Dan function standar tersebut memiliki sebuah "perjanjian/kesepakatan" yang dibuat oleh developer MQL, bahwa init() sebagai "pintu masuk" dan deinit() sebagai "pintu keluar". Tanpa mempedulikan/pusing dengan hal2 yang lain, pokoknya init() pasti dieksekusi jika EA diattach & deinit() juga pasti dieksekusi jika EA keluar (baik sengaja, maupun reject oleh MT4). Dari sini, dapat dipahami sesungguhnya tidak ada yang mengeluarkan function start(), karena function special ini adalah ruang utama program yang dieksekusi/tidaknya adalah berdasarkan pergerakan tick. Selama tick gerak, start() akan terus diekseskusi berulang2. Perhatikan pernyataan:

Jadi jangan dihubungkan sebagai sebuah urutan antara start() dan deinit() tersebut, karena masing2 terpisah. EA keluar dari int start --> penyebabnya karena tidak ada gerak tick (cuma itu saja). Sekali lagi saya ulangi: init() -----> dieksekusi saat inisialisasi (masuk), tanpa peduli apapun yang terjadi pada function yang lain. deinit() ----> dieksekusi saat deinisialisasi (keluar), tanpa peduli apapun yang terjadi pada function yang lain. start() -----> dieksekusi saat ada gerak tick, tanpa peduli apapun yang terjadi pada function yang lain. Saya coba bikin analogi ya: Misalnya Bro dapat perintah dari atasan untuk berkunjung ke rumah klien, dengan

15 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

perintah sbb: 1. Jika sampai sana, sampaikan dulu salam dari atasan. [init()] 2. Jika kondisi mendukung, bahas proyek kerjasama. [start()] 3. Jika mau pulang, jangan lupa bawa barang pesanan. [deinit()] Perhatikan bahwa, Bro harus tetap bawa barang pesanan meskipun ngga jadi bahas proyek, termasuk ngga sempet titip salam segala misalnya :D Karena instruksi untuk bawa barang pesanan tersebut syaratnya cuma 1, yakni jika Bro mau pulang dari sana [deinit()]. Maaf jika analogi kurang tepat, sekedar gambaran biar lebih menjiwai :accute:

:D:D:D ini nih... yang saya suka dari kanjeng guru :D:D:D penjelasannya sangat mantap, gamblang dan tanpa basa basi... :good::good::good: ok bro... terimakasih atas waktu dan penjelasannya... :peace: saya bobok dulu ya... besok atau lusa kalo ada waktu, discuss lagi. :happy:

zakki
akhirnya ada master... yg hadir... :) master tolong bantu saya saya tidak bisa EA , tapi karena butuh.. saya ingin bikin akhirnya.. Code:
extern int TakeProfit = 75; extern int StopLoss = 10; extern int Slippage = 3; extern double Lots = 0.1; extern int TrailingStop = 30; extern bool Trailing = true; int Current; int iTrade=0;

01-10-2011 09:24 AM

//+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---//---return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---//----

16 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---Comment (" belajar membuat EA"); double Buy1_1 = iSAR(NULL, 0, 0.04, 0.2, Current + 1); double Buy1_2 = iSAR(NULL, 0, 0.04, 0.2, Current + 0); double Sell1_1 = iSAR(NULL, 0, 0.04, 0.2, Current + 1); double Sell1_2 = iSAR(NULL, 0, 0.04, 0.2, Current + 0); //double // int dEMA1, dEMA2, dEMA1before, dEMA2before; iTrade=0;

// dEMA1=iMA(NULL,0,EMA1Periode,0,MODE_EMA,PRICE_CLOSE,0); // dEMA2=iMA(NULL,0,EMA2Periode,0,MODE_EMA,PRICE_CLOSE,0); // // dEMA1before=iMA(NULL,0,EMA1Periode,0,MODE_EMA,PRICE_CLOSE,1); dEMA2before=iMA(NULL,0,EMA2Periode,0,MODE_EMA,PRICE_CLOSE,1);

if (OrdersTotal()<1) { if (AccountFreeMargin()<1000*Lots) { Comment("EA tidak bekerja, dana kurang :", AccountFreeMargin()); return(0);} if (Buy1_1 < Buy1_2) { OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,BidStopLoss*Point,Ask+TakeProfit*Point,0); } if (Sell1_1 > Sell1_2) {

OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Ask+StopLoss*Point,BidTakeProfit*Point,0); } }

/* >>> Fungsi Trailing Stop <<< */ if(Trailing==true) { for(iTrade=0;iTrade<OrdersTotal();iTrade++) { OrderSelect(iTrade,SELECT_BY_POS,MODE_TRADES); if(OrderType()==OP_BUY && OrderSymbol()==Symbol()) { if(TrailingStop>0) { if(Bid-OrderOpenPrice()>Point*5) { OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE); return(0); }

17 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

} else { if(TrailingStop>0) { if((OrderOpenPrice()-Ask)>(Point*5)) {

OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE); return(0); } } } } }

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

EA ini hanya rakitan master, karena saya gk punya bahan lagi xixixixiii.... system kerjanya, saat titik SAR diatas dia akan sell, nah dari sini saya hanya ingin ambil 5 poin saja saat sar diatas , begitu pula sebaliknya saat buy saya take profit 5 poin saja, tapi kendalanya.. saat profit tercapai, fungsi EA masih tereksekusi.. ex : tf (30) , titik SAR diatas maka sell tp :5 pip , namun setelah dapat 5 pip .. EA malah buka sell lagi, ... alhasil stoploss nya juga kena... :( .. dikarnakan titik SAR dibawah dan harga berbailk jadi buy.. :wall: master mohon sarannya , saya ingin membuat fungsi seperti ini : 1. jika signal sell, tp 5 pip tercapai.. maka tunggu signal buy untuk op selanjut nya.. atau begini 2. jika order sell == 2 op maka tunggu signal buy untuk op selanjutnya.. tapi saya ndak tahu buatnya, saya mohon master, bantu saya ya ...:(

jhonie
bingung gan ngikutin, samasekali awan urusan coding EA.. gak ada kamus istilah-istilah EA ya?

01-10-2011 09:39 AM

ndorojuragan
Quote:

01-10-2011 09:58 AM

Originally Posted by Givonly Ini thread saya bikin berangkat dari postingan Bro hermit88 di postingan2 sebelumnya

18 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

yang sering ngajak diskusi tentang MQL4. Posting terakhir Bro hermit88 di thread sebelah rasanya koq mending dibikin thread tersendiri biar thread sebelah itu ngga tambah gemuk & semakin jadi gado2 :D Selain itu agar lebih fokus & nyaman diskusinya... :ok: Oya, thread ini bukan bengkel EA/indikator yang ditujukan untuk "mereparasi" indi/EA error. Tapi thread ini lebih merupakan diskusi coding MQL4 terutama bagi yang sedang BELAJAR bikin EA/indikator hasil coding sendiri / coba2 ide sendiri.. :accute: Ingin belajar tidak usah ijin & basa-basi, chit-chat & junk post tidak ditoleransi! :rules: Btw, saya sendiri masih sangat awam di bidang coding MQL4 ini. Karena itu bagi para master yang udah sering/hobi oprek atau utak-atik EA, sangat diharapkan saran dan bantuannya demi membantu sesama member forum yang ingin belajar. Regards, :respect: Givo.

Gan, jika ada ebook berisi syntax mql4, mungkin bisa dishare di sini sehingga diskusi bisa lebih mudah diikuti dan lebih hidup. thx

zakki
Quote:

01-10-2011 12:06 PM

Originally Posted by ndorojuragan Gan, jika ada ebook berisi syntax mql4, mungkin bisa dishare di sini sehingga diskusi bisa lebih mudah diikuti dan lebih hidup. thx

klo yang bahasa inggris sebenarnya banyak gan ebook yang di share, ada tuh di thread sebelah. tapi klo yang bhs indo nunggu master saja yang ngajarin , lebih enak :good: ane sendiri gk terlalu bisa coding, cuman karena sering maenin game puzzle , sedikit2 ane coba ngerakit EA.. kacangan wkwkwkwkwk ...:D

ndorojuragan

01-10-2011 06:47 PM

19 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

Quote:

Originally Posted by zakki klo yang bahasa inggris sebenarnya banyak gan ebook yang di share, ada tuh di thread sebelah. tapi klo yang bhs indo nunggu master saja yang ngajarin , lebih enak :good: ane sendiri gk terlalu bisa coding, cuman karena sering maenin game puzzle , sedikit2 ane coba ngerakit EA.. kacangan wkwkwkwkwk ...:D

ebook forex atau ebook coding gan?

wwwboy
ebook yang mungkin bisa bantu dalam Coding in MQL4 ! Mql - Metatrader Development Course http://7609098f.linkbucks.com

01-10-2011 07:05 PM

rzidh
wew mantap nih ada trit yg membahas MQL :)

01-10-2011 08:52 PM

ane mau tanya ya maklum masih newbie nih dgn bahasa MQL saya lagi belajar mengkombinasikan 3 EMA cross nih logikanya: * Jika EMA 3 cross EMA 6 dan EMA 3 & 6 berada diatas garis EMA 50 maka OP buy begitu juga sebaliknya Jika EMA 3 cross kebawah EMA 6 dan EMA 3 & EMA 6 berada di bawah EMA 50 maka OP sell. jadi kalo garis EMA 3 & 6 masih berada dibawah EMA 50 maka dia cuma OP sell aja begitu juga sebaliknya. gimana ya bahasa MQLnya :) mohon pencerahannya :drink:

zakki
Quote:

01-10-2011 09:20 PM

Originally Posted by rzidh wew mantap nih ada trit yg membahas MQL :) ane mau tanya ya maklum masih newbie nih dgn bahasa MQL saya lagi belajar mengkombinasikan 3 EMA cross nih logikanya: * Jika EMA 3 cross EMA 6 dan EMA 3 & 6 berada diatas garis EMA 50 maka OP buy begitu juga sebaliknya Jika EMA 3 cross kebawah EMA 6 dan EMA 3 & EMA 6 berada di bawah EMA 50 maka OP sell. jadi kalo garis EMA 3 & 6 masih berada dibawah EMA 50 maka dia cuma OP sell aja

20 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

begitu juga sebaliknya. gimana ya bahasa MQLnya :) mohon pencerahannya :drink:

ada itu gan... di threadnya master DwiM http://indo.mt5.com/showthread.php?9...t-EA-Sederhana. lengkap dijamin... :good:

amtwoxtwo
Quote:

01-10-2011 10:03 PM

Originally Posted by zakki akhirnya ada master... yg hadir... :) master tolong bantu saya saya tidak bisa EA , tapi karena butuh.. saya ingin bikin akhirnya.. Code:
extern int TakeProfit = 75; extern int StopLoss = 10; extern int Slippage = 3; extern double Lots = 0.1; extern int TrailingStop = 30; extern bool Trailing = true; int Current; int iTrade=0;

//+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---//---return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---//---return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start()

21 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

{ //---Comment (" belajar membuat EA"); double Buy1_1 = iSAR(NULL, 0, 0.04, 0.2, Current + 1); double Buy1_2 = iSAR(NULL, 0, 0.04, 0.2, Current + 0); double Sell1_1 = iSAR(NULL, 0, 0.04, 0.2, Current + 1); double Sell1_2 = iSAR(NULL, 0, 0.04, 0.2, Current + 0); //double // int dEMA1, dEMA2, dEMA1before, dEMA2before; iTrade=0;

// dEMA1=iMA(NULL,0,EMA1Periode,0,MODE_EMA,PRICE_CLOSE,0); // dEMA2=iMA(NULL,0,EMA2Periode,0,MODE_EMA,PRICE_CLOSE,0); // // dEMA1before=iMA(NULL,0,EMA1Periode,0,MODE_EMA,PRICE_CLOSE,1); dEMA2before=iMA(NULL,0,EMA2Periode,0,MODE_EMA,PRICE_CLOSE,1);

if (OrdersTotal()<1) { if (AccountFreeMargin()<1000*Lots) { Comment("EA tidak bekerja, dana kurang :", AccountFreeMargin()); return(0);} if (Buy1_1 < Buy1_2) { OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,BidStopLoss*Point,Ask+TakeProfit*Point,0); } if (Sell1_1 > Sell1_2) {

OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Ask+StopLoss*Point,BidTakeProfit*Point,0); } }

/* >>> Fungsi Trailing Stop <<< */ if(Trailing==true) { for(iTrade=0;iTrade<OrdersTotal();iTrade++) { OrderSelect(iTrade,SELECT_BY_POS,MODE_TRADES); if(OrderType()==OP_BUY && OrderSymbol()==Symbol()) { if(TrailingStop>0) { if(Bid-OrderOpenPrice()>Point*5) {

OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE); return(0); } }

} else { if(TrailingStop>0)

22 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

{ if((OrderOpenPrice()-Ask)>(Point*5)) {

OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE); return(0); } } } } }

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

EA ini hanya rakitan master, karena saya gk punya bahan lagi xixixixiii.... system kerjanya, saat titik SAR diatas dia akan sell, nah dari sini saya hanya ingin ambil 5 poin saja saat sar diatas , begitu pula sebaliknya saat buy saya take profit 5 poin saja, tapi kendalanya.. saat profit tercapai, fungsi EA masih tereksekusi.. ex : tf (30) , titik SAR diatas maka sell tp :5 pip , namun setelah dapat 5 pip .. EA malah buka sell lagi, ... alhasil stoploss nya juga kena... :( .. dikarnakan titik SAR dibawah dan harga berbailk jadi buy.. :wall: master mohon sarannya , saya ingin membuat fungsi seperti ini : 1. jika signal sell, tp 5 pip tercapai.. maka tunggu signal buy untuk op selanjut nya.. atau begini 2. jika order sell == 2 op maka tunggu signal buy untuk op selanjutnya.. tapi saya ndak tahu buatnya, saya mohon master, bantu saya ya ...:(

sy coba jawab nomor 1 y. buat variabel bool buy = true,sell=true; Setelah fungsi OrderSend,kasih bool tadi. Misal : Code:
OrderSend (OP_BUY,xxx,xxx,xxx,xx,xx);buy=false;sell=true; Begitu juga dg OrderSell buy=true;sell=false;

nah di atas sebelum OrderSend dikasih Code:


if(buy==true)(OrderSend (OP_BUY,xxx,xxx,xxx,xxx); if(sell==true)(Ordersend (OP_SELL,xxx,xxx,xxx,xxx);

itu cara yg termudah.

Skrg coba sy jwb yg nomor 2. Pertama2, bikin variabel penanda OPBUY,OPSELL. contoh :

23 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

Code:
for (int a = 0; a < OrdersTotal(); a++) { if(OrderSelect(a, SELECT_BY_POS,MODE_TRADES) == true) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime() == 0) { if(OrderType() == OP_BUY) OPBuy++; if(OrderType() == OP_SELL) OPSell++; } } }

nah, dari sini kita bisa ketahui jumlah order sell & buy. Mudah saja, tinggal ditambahkan Code:
if(OPBuy==2){buy=false;sell=true;} if(OPSell==2){buy=true;sell=false;}

zakki
(>_<) cihuuyy .... makasih bnyk master ... aku ke bengkel EA dulu ya ... Quote:

01-11-2011 10:01 AM

Originally Posted by amtwoxtwo sy coba jawab nomor 1 y. buat variabel bool buy = true,sell=true; Setelah fungsi OrderSend,kasih bool tadi. Misal : Code:

OrderSend (OP_BUY,xxx,xxx,xxx,xx,xx);buy=false;sell=true; Begitu juga dg OrderSell buy=true;sell=false;

nah di atas sebelum OrderSend dikasih Code:


if(buy==true)(OrderSend (OP_BUY,xxx,xxx,xxx,xxx); if(sell==true)(Ordersend (OP_SELL,xxx,xxx,xxx,xxx);

itu cara yg termudah.

Skrg coba sy jwb yg nomor 2. Pertama2, bikin variabel penanda OPBUY,OPSELL. contoh :

24 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

Code:
for (int a = 0; a < OrdersTotal(); a++) { if(OrderSelect(a, SELECT_BY_POS,MODE_TRADES) == true) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime() == 0) { if(OrderType() == OP_BUY) OPBuy++; if(OrderType() == OP_SELL) OPSell++; } } }

nah, dari sini kita bisa ketahui jumlah order sell & buy. Mudah saja, tinggal ditambahkan Code:
if(OPBuy==2){buy=false;sell=true;} if(OPSell==2){buy=true;sell=false;}

Alhamdulillah... sukses master :) terima kasih bnyk

zakki
Quote:

01-11-2011 04:52 PM

Originally Posted by amtwoxtwo sy coba jawab nomor 1 y. buat variabel bool buy = true,sell=true; Setelah fungsi OrderSend,kasih bool tadi. Misal : Code:
Begitu juga dg OrderSell buy=true;sell=false;

nah di atas sebelum OrderSend dikasih Code:


if(buy==true)(OrderSend (OP_BUY,xxx,xxx,xxx,xxx); if(sell==true)(Ordersend (OP_SELL,xxx,xxx,xxx,xxx);

itu cara yg termudah.

Skrg coba sy jwb yg nomor 2. Pertama2, bikin variabel penanda OPBUY,OPSELL. contoh :

25 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

Code:
for (int a = 0; a < OrdersTotal(); a++) { if(OrderSelect(a, SELECT_BY_POS,MODE_TRADES) == true) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime() == 0) { if(OrderType() == OP_BUY) OPBuy++; if(OrderType() == OP_SELL) OPSell++; } } }

nah, dari sini kita bisa ketahui jumlah order sell & buy. Mudah saja, tinggal ditambahkan Code:
if(OPBuy==2){buy=false;sell=true;} if(OPSell==2){buy=true;sell=false;}

master, tanya lagi .. hehhehehhehe.... untuk yang nomor 2. saat variabel OPBuy n OPSell == 2 ... maka setelah itu EA tidak akan OP lagi ... cara ngereset variabel jadi nol lagi bagaimana master... sebelumnya terima kasih bnyk ya.... saya nubie abis.. maaf klo saya mengganggu ..

amtwoxtwo

01-12-2011 07:22 PM

26 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

Quote:

Originally Posted by zakki master, tanya lagi .. hehhehehhehe.... untuk yang nomor 2. saat variabel OPBuy n OPSell == 2 ... maka setelah itu EA tidak akan OP lagi ... cara ngereset variabel jadi nol lagi bagaimana master... sebelumnya terima kasih bnyk ya.... saya nubie abis.. maaf klo saya mengganggu ..

langsung 0 kok kalo emang gak ada order. karena fungsi Code:
for (int a = 0; a < OrdersTotal(); a++) { if(OrderSelect(a, SELECT_BY_POS,MODE_TRADES) == true) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime() == 0) { if(OrderType() == OP_BUY) OPBuy++; if(OrderType() == OP_SELL) OPSell++; } } }

adlah utk mengecek keberadaan jumlah order sedang aktif yg Dieksekusi oleh EA saat itu.Kalo gak ada order aktif, 0 semua. Oh y, OPBuy & OPSell merupakan tipe int.

zakki
Quote:

01-12-2011 08:11 PM

Originally Posted by amtwoxtwo langsung 0 kok kalo emang gak ada order. karena fungsi Code:
for (int a = 0; a < OrdersTotal(); a++) { if(OrderSelect(a, SELECT_BY_POS,MODE_TRADES) == true) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime() == 0) { if(OrderType() == OP_BUY) OPBuy++; if(OrderType() == OP_SELL) OPSell++; } } }

adlah utk mengecek keberadaan jumlah order sedang aktif yg Dieksekusi oleh EA saat itu.Kalo gak ada order aktif, 0 semua. Oh y, OPBuy & OPSell merupakan tipe int.

27 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

berarti no.2 saya salah pasang kodenya... okey master.. saya pelajari lagi.. sebelumnya terima kasih bnyk :)

zakki
Quote:

01-14-2011 09:53 AM

Originally Posted by amtwoxtwo langsung 0 kok kalo emang gak ada order. karena fungsi Code:
for (int a = 0; a < OrdersTotal(); a++) { if(OrderSelect(a, SELECT_BY_POS,MODE_TRADES) == true) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime() == 0) { if(OrderType() == OP_BUY) OPBuy++; if(OrderType() == OP_SELL) OPSell++; } } }

adlah utk mengecek keberadaan jumlah order sedang aktif yg Dieksekusi oleh EA saat itu.Kalo gak ada order aktif, 0 semua. Oh y, OPBuy & OPSell merupakan tipe int.

pak master... kali ini saya kesulitan pak... :wall: kali ini buy sell nya open terus menerus.. sudah dikasih variabel buy sell masih tetap.. mohon bimbingan nya guru :pleeease: ini EA nya http://www.ziddu.com/download/133870...ustom.zip.html

iniangga
Quote:

01-15-2011 09:53 PM

Originally Posted by zakki pak master... kali ini saya kesulitan pak... :wall: kali ini buy sell nya open terus menerus.. sudah dikasih variabel buy sell masih tetap.. mohon bimbingan nya guru :pleeease: ini EA nya http://www.ziddu.com/download/133870...ustom.zip.html

maaf gan... saya coba download.. tapi link nya nggak bisa di buka... coba pake attachment aja gan...

28 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

iniangga
Help... master-master saya mau tanya.. apakah dengan adanya PHP Code:
if(OrdersTotal()<1)

01-17-2011 12:22 PM

op akan close sendiri untuk menjaga OP yg terbuka hanya satu atau tetap harus ada fungsi orderclose ?

Givonly
Quote:

01-17-2011 02:04 PM

Originally Posted by iniangga Help... master-master saya mau tanya.. apakah dengan adanya PHP Code:
if(OrdersTotal()<1)

op akan close sendiri untuk menjaga OP yg terbuka hanya satu atau tetap harus ada fungsi orderclose ?

Itu cuma membatasi jumlah OP aja. Jadi tetep harus ada OrderClose.

nuttinu
kalo buat nambahin trailing stop gimana ya om? maksudnya...tiap harga berubah..langsung lock profit kaya gitu

01-17-2011 03:08 PM

iniangga
Quote:

01-17-2011 10:39 PM

Originally Posted by nuttinu kalo buat nambahin trailing stop gimana ya om? maksudnya...tiap harga berubah..langsung lock profit kaya gitu

29 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

ada di thread sebelah tu om.... ni link nya... OPEN NEW TAB :peace:

nuttinu
Quote:

01-18-2011 01:45 AM

Originally Posted by iniangga ada di thread sebelah tu om.... ni link nya... OPEN NEW TAB :peace:

jadi logic nya ambil dari lock profit tersebut ya om?

zakki

01-18-2011 08:25 AM

master.. ada yang bisa buat auto lot.. kalau balance nambah setiap $100 lot op dinaikkan.. kira2 bagaimana ya bunyi logica nya.. terima kasih

Givonly
Quote:

01-18-2011 08:36 AM

Originally Posted by zakki master.. ada yang bisa buat auto lot.. kalau balance nambah setiap $100 lot op dinaikkan.. kira2 bagaimana ya bunyi logica nya.. terima kasih

Balance $100 lot=1 Balance $110 lot=1.1 ato tetep =1 nunggu dulu sampe $200 baru naik? Tolong pertanyaan diperjelas dengan CONTOH !

al-kahfi

01-18-2011 09:26 AM

bung givon... saya suka nyetir pakai ea sejuta umat, selama ini perfect op di broker 4 digit, sekarang mau saya naikkan ke broker 5 digit di exxness.. yah.. gak mau op bung... mohon bantuanya oh..ya, sepertinya bung givon sudah pernah buat ndi auto Supply an Demand yah.. al-kahfi

30 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

gtx
Quote:

01-18-2011 09:32 AM

Originally Posted by zakki master.. ada yang bisa buat auto lot.. kalau balance nambah setiap $100 lot op dinaikkan.. kira2 bagaimana ya bunyi logica nya.. terima kasih

ada tuh masta di share eadisana ada dibahas juga kok itu ea yang otomatis lotnya bertingkat setelah profit di op pertama kemudian di op k2 pasti lotnya naik dan bisa disett sesuai keinginan ontoh ea thuyul tuh modelnya seperti yang agan maksud , mav kalo salah mohon dikoreksi

zakki
Quote:

01-18-2011 05:52 PM

Originally Posted by gtx ada tuh masta di share eadisana ada dibahas juga kok itu ea yang otomatis lotnya bertingkat setelah profit di op pertama kemudian di op k2 pasti lotnya naik dan bisa disett sesuai keinginan ontoh ea thuyul tuh modelnya seperti yang agan maksud , mav kalo salah mohon dikoreksi

oke master.. link nya apa?

zakki
Quote:

01-18-2011 06:00 PM

Originally Posted by Givonly Balance $100 lot=1 Balance $110 lot=1.1 ato tetep =1 nunggu dulu sampe $200 baru naik? Tolong pertanyaan diperjelas dengan CONTOH !

iya master .. seperti itu.. balance awal $100 , jika balance udah $200, $300 , dst.. maka.. lot akan naik secara otomatis.. Lot = 0.1, 0.11, 0.12, 0.13 dst.. mohon petunjuk dengan sangat.... :pleeease: , sebelumnya maaf klo sudah merepotkan... master

Givonly
Quote:

01-18-2011 07:05 PM

Originally Posted by zakki iya master .. seperti itu.. balance awal $100 , jika balance udah $200, $300 , dst.. maka.. lot akan naik secara otomatis.. Lot = 0.1, 0.11, 0.12, 0.13 dst.. mohon petunjuk dengan sangat.... :pleeease: , sebelumnya maaf klo sudah merepotkan... master

31 of 32

27/11/2011 9:14 PM

[HOT DISCUSS] Coding in MQL4 !

http://indo.mt5.com/printthread.php?t=2427&pp=40

Sebenarnya Bro blom menjawab pertanyaan saya sebelumnya. Tapi yaudahlah ini dicoba aja dulu, ntar kalo ngga sesuai silahkan ditanyain maunya gimana :woo: Code:
double Lot = NormalizeDouble(AccountBalance()/1000,2);

metatraders
Cara menghapus tp sama sl gmana? Klo tp nya 0 malah eror.

01-18-2011 07:49 PM

Show 40 post(s) from this thread on one page

Last Page 1 of 21 1 2 3 11 ... All times are GMT +8. The time now is 09:12 PM. Powered by vBulletin Version 4.0.2 Copyright 2011 vBulletin Solutions, Inc. All rights reserved.

32 of 32

27/11/2011 9:14 PM

Anda mungkin juga menyukai