[hot discuss] coding in mql4 !1
TRANSCRIPT
Show 40 post(s) from this thread on one page
01-07-2011 03:30 PM
01-07-2011 03:41 PM
[HOT DISCUSS] Coding in MQL4 !
Printable View
Givonly[HOT DISCUSS] Coding in MQL4 !
Ini thread saya bikin berangkat dari postingan Bro hermit88 di postingan2 sebelumnya yangsering 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 :DSelain 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 bikinEA/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 diharapkansaran dan bantuannya demi membantu sesama member forum yang ingin belajar.
Regards,
:respect:Givo.
Givonly
Langsung menyambung pertanyaan sebelumnya:
Quote:
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);
Page 1 of 21 1 2 3 11 ... Last
Originally Posted by hermit88
untuk fungsi label sendiri contohnya gimana ya?
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
1 of 32 27/11/2011 9:14 PM
01-07-2011 06:39 PM
}
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 atas2 - kiri bawah
3 - kanan bawah
Sedangkan koordinat X & Y relatif terhadap corner ybs.Semoga cukup jelas.. :)
hermit88
Quote:
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 berwarnamerah, sesuai dengan settingan yang kita buat di procedure sebelumnya.
Jadi kalo ingin mengubah format tulisan, ya edit aja procedure-nya.
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
2 of 32 27/11/2011 9:14 PM
: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() {return(0);}
int deinit() {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
Catatan untuk pojok/corner:0 - kiri atas
1 - kanan atas2 - kiri bawah
3 - kanan bawah
Sedangkan koordinat X & Y relatif terhadap corner ybs.
Semoga cukup jelas.. :)
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
3 of 32 27/11/2011 9:14 PM
01-07-2011 07:18 PM
01-09-2011 02:30 AM
:drink: :bravo:
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:
hermit88
Quote:
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);
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:
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
4 of 32 27/11/2011 9:14 PM
01-09-2011 08:29 AM
}
Givonly
Quote:
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 mengembalikannilai 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. Ituadalah 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 tipedata void (seperti contoh di atas).
Ke pertanyaan:
return;
Nah, ini contoh return yang diletakkan di function yang tanpa output nilai. Bro
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);
}
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
5 of 32 27/11/2011 9:14 PM
01-09-2011 02:46 PM
perhatikan ngga ada tanda kurungnya khan?Nah return yang seperti ini BOLEH tidak ditulis, makanya Bro liat dari function Tulisyang saya bikin sebelumnya, itu di bagian akhir ngga saya kasih return wong nggaada 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 untukdiskusi selanjutnya, semua disebut function aja.
hermit88
Quote:
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 melakukanperintah, 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
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
6 of 32 27/11/2011 9:14 PM
01-09-2011 03:04 PM
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=5c. menghasilkan nilai x=0 dan y=0
d. menghasilkan nilai x=1 dan y=1e. kalau salah semua berapa nilai yang dihasilkan?
mana yang benar guru? :woo:
Givonly
Quote:
function Tulis yang saya bikin sebelumnya, itu di bagian akhir ngga sayakasih 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 diMQL ini dan untuk diskusi selanjutnya, semua disebut function aja.
Originally Posted by hermit88
jika
Code:
int CalcSum(int x, int y) { return(x+y); }
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
7 of 32 27/11/2011 9:14 PM
Quote:
itu tidak lazim (kalo tidak disebut sebagai kurang tepat :p)
Jadi function itu ibarat mesin yang siap menerima input, tapi input tersebut jangan langsungdimasukkan 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.
saya rubah menjadi
Code:
int CalcSum(int x=3, int y=5) { return(x+y); }
maka pada function int CalcSum
a. menghasilkan nilai 8b. menghasilkan nilai x=3 dan y=5
c. menghasilkan nilai x=0 dan y=0
d. menghasilkan nilai x=1 dan y=1e. kalau salah semua berapa nilai yang dihasilkan?
mana yang benar guru? :woo:
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 8b. menghasilkan nilai x=3 dan y=5
c. menghasilkan nilai x=0 dan y=0
d. menghasilkan nilai x=1 dan y=1e. kalau salah semua berapa nilai yang dihasilkan?
mana yang benar guru? :woo:
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
8 of 32 27/11/2011 9:14 PM
01-09-2011 11:34 PM
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 difungsi 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:
Ada bagian untuk deklarasi/penulisan function (berisi logic dari function itu sendiri),dan
1.
Ada bagian untuk memakai/"memanggil" function tersebut.2.
:accute:
hermit88
Quote:
terimakasih guru, sekarang saya lebih paham untuk membuat function :happy:
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 memanggilfunction 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:
Ada bagian untuk deklarasi/penulisan function (berisi logic dari function itusendiri), dan
1.
Ada bagian untuk memakai/"memanggil" function tersebut.2.
:accute:
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
9 of 32 27/11/2011 9:14 PM
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 berulangint 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);
}
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
10 of 32 27/11/2011 9:14 PM
01-10-2011 02:58 AM
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:
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 berulangint deinit() dieksekusi sekali sebelum ea mode off
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
11 of 32 27/11/2011 9:14 PM
Sebenarnya Bro agak rancu mungkin karena menghubungkan start() dengan deinit() ( denganasumsi 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 EAdiattach & 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 berdasarkanpergerakan tick. Selama tick gerak, start() akan terus diekseskusi berulang2.
Perhatikan pernyataan:
Quote:
Jadi jangan dihubungkan sebagai sebuah urutan antara start() dan deinit() tersebut, karenamasing2 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:
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
untuk mengeluarkan ea dari int start() menuju deinit sebelum mode off
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
12 of 32 27/11/2011 9:14 PM
01-10-2011 02:58 AM
Jika sampai sana, sampaikan dulu salam dari atasan. [init()]1.
Jika kondisi mendukung, bahas proyek kerjasama. [start()]2.
Jika mau pulang, jangan lupa bawa barang pesanan. [deinit()]3.
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 maupulang dari sana [deinit()].
Maaf jika analogi kurang tepat, sekedar gambaran biar lebih menjiwai :accute:
Givonly
Quote:
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
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
13 of 32 27/11/2011 9:14 PM
Sebenarnya Bro agak rancu mungkin karena menghubungkan start() dengan deinit() ( denganasumsi 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 olehdeveloper 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(), karenafunction special ini adalah ruang utama program yang dieksekusi/tidaknya adalah berdasarkan
pergerakan tick. Selama tick gerak, start() akan terus diekseskusi berulang2.
Perhatikan pernyataan:
Quote:
Jadi jangan dihubungkan sebagai sebuah urutan antara start() dan deinit() tersebut, karenamasing2 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 terjadipada function yang lain.
deinit() ----> dieksekusi saat deinisialisasi (keluar), tanpa peduli apapun yang terjadipada function yang lain.
start() -----> dieksekusi saat ada gerak tick, tanpa peduli apapun yang terjadi pada
int init() dieksekusi sekali pada saat ea mulai mode on
int start() dieksekusi berulangint 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 intdeinit() ?
apakah operator return(0); yang menyebabkan ea keluar dari start menujudeinit ?
kalo jawabannya adalah benar operator return(0); yang menyebabkan keluar makasebenarnya 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
untuk mengeluarkan ea dari int start() menuju deinit sebelum mode off
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
14 of 32 27/11/2011 9:14 PM
01-10-2011 03:21 AM
function yang lain.
Saya coba bikin analogi ya:
Misalnya Bro dapat perintah dari atasan untuk berkunjung ke rumah klien, dengan perintah sbb:
Jika sampai sana, sampaikan dulu salam dari atasan. [init()]1.
Jika kondisi mendukung, bahas proyek kerjasama. [start()]2.
Jika mau pulang, jangan lupa bawa barang pesanan. [deinit()]3.
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 maupulang dari sana [deinit()].
Maaf jika analogi kurang tepat, sekedar gambaran biar lebih menjiwai :accute:
hermit88
Quote:
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 rejectoleh 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 yangterjadi pada function yang lain.
deinit() ----> dieksekusi saat deinisialisasi (keluar), tanpa peduli apapunyang 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
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
15 of 32 27/11/2011 9:14 PM
01-10-2011 09:24 AM
: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;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
perintah sbb:
Jika sampai sana, sampaikan dulu salam dari atasan. [init()]1.Jika kondisi mendukung, bahas proyek kerjasama. [start()]2.
Jika mau pulang, jangan lupa bawa barang pesanan. [deinit()]3.
Perhatikan bahwa, Bro harus tetap bawa barang pesanan meskipun ngga jadi bahasproyek, 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:
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
16 of 32 27/11/2011 9:14 PM
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 dEMA1, dEMA2, dEMA1before, dEMA2before;
// int 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,Bid-
StopLoss*Point,Ask+TakeProfit*Point,0);
}
if (Sell1_1 > Sell1_2)
{
OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Ask+StopLoss*Point,Bid-
TakeProfit*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);
}
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
17 of 32 27/11/2011 9:14 PM
01-10-2011 09:39 AM
01-10-2011 09:58 AM
}
}
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 poinsaja 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 jadibuy.. :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 begini2. 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?
ndorojuragan
Quote:
Originally Posted by Givonly
Ini thread saya bikin berangkat dari postingan Bro hermit88 di postingan2 sebelumnya
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
18 of 32 27/11/2011 9:14 PM
01-10-2011 12:06 PM
01-10-2011 06:47 PM
Gan, jika ada ebook berisi syntax mql4, mungkin bisa dishare di sini sehingga diskusi bisa lebihmudah diikuti dan lebih hidup.
thx
zakki
Quote:
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 cobangerakit EA.. kacangan wkwkwkwkwk ...:D
ndorojuragan
yang sering ngajak diskusi tentang MQL4. Posting terakhir Bro hermit88 di threadsebelah rasanya koq mending dibikin thread tersendiri biar thread sebelah itu ngga
tambah gemuk & semakin jadi gado2 :DSelain itu agar lebih fokus & nyaman diskusinya... :ok:
Oya, thread ini bukan bengkel EA/indikator yang ditujukan untuk "mereparasi" indi/EAerror.
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 inginbelajar.
Regards,:respect:
Givo.
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
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
19 of 32 27/11/2011 9:14 PM
01-10-2011 07:05 PM
01-10-2011 08:52 PM
01-10-2011 09:20 PM
Quote:
ebook forex atau ebook coding gan?
wwwboy
ebook yang mungkin bisa bantu dalam Coding in MQL4 !Mql - Metatrader Development Course
http://7609098f.linkbucks.com
rzidh
wew mantap nih ada trit yg membahas MQL :)
ane mau tanya ya maklum masih newbie nih dgn bahasa MQLsaya 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 makaOP 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:
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
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 nihlogikanya:
* 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 dibawah EMA 50 maka OP sell.
jadi kalo garis EMA 3 & 6 masih berada dibawah EMA 50 maka dia cuma OP sell aja
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
20 of 32 27/11/2011 9:14 PM
01-10-2011 10:03 PM
ada itu gan... di threadnya master DwiM
http://indo.mt5.com/showthread.php?9...t-EA-Sederhana.
lengkap dijamin... :good:
amtwoxtwo
Quote:
begitu juga sebaliknya.
gimana ya bahasa MQLnya :)mohon pencerahannya
:drink:
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()
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
21 of 32 27/11/2011 9:14 PM
{//---- 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 dEMA1, dEMA2, dEMA1before, dEMA2before;// int 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,Bid-StopLoss*Point,Ask+TakeProfit*Point,0); }
if (Sell1_1 > Sell1_2) { OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Ask+StopLoss*Point,Bid-TakeProfit*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)
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
22 of 32 27/11/2011 9:14 PM
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 :
{ 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 ambil5 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 malahbuka 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 ...:(
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
23 of 32 27/11/2011 9:14 PM
01-11-2011 10:01 AM
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:
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 :
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
24 of 32 27/11/2011 9:14 PM
01-11-2011 04:52 PM
Alhamdulillah... sukses master :)terima kasih bnyk
zakki
Quote:
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;}
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 :
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
25 of 32 27/11/2011 9:14 PM
01-12-2011 07:22 PM
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.... sayanubie abis.. maaf klo saya mengganggu ..
amtwoxtwo
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;}
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
26 of 32 27/11/2011 9:14 PM
01-12-2011 08:11 PM
Quote:
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 gakada order aktif, 0 semua.
Oh y, OPBuy & OPSell merupakan tipe int.
zakki
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 ..
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.
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
27 of 32 27/11/2011 9:14 PM
01-14-2011 09:53 AM
01-15-2011 09:53 PM
berarti no.2 saya salah pasang kodenya... okey master.. saya pelajari lagi.. sebelumnya terima
kasih bnyk :)
zakki
Quote:
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 nyahttp://www.ziddu.com/download/133870...ustom.zip.html
iniangga
Quote:
maaf gan...
saya coba download..tapi link nya nggak bisa di buka...
coba pake attachment aja gan...
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.
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
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
28 of 32 27/11/2011 9:14 PM
01-17-2011 12:22 PM
01-17-2011 02:04 PM
01-17-2011 03:08 PM
01-17-2011 10:39 PM
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 ?
Givonly
Quote:
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
iniangga
Quote:
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 adafungsi orderclose ?
Originally Posted by nuttinu
kalo buat nambahin trailing stop gimana ya om?
maksudnya...tiap harga berubah..langsung lock profit kaya gitu
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
29 of 32 27/11/2011 9:14 PM
01-18-2011 01:45 AM
01-18-2011 08:25 AM
01-18-2011 08:36 AM
01-18-2011 09:26 AM
ada di thread sebelah tu om....
ni link nya...
OPEN NEW TAB :peace:
nuttinu
Quote:
jadi logic nya ambil dari lock profit tersebut ya om?
zakki
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:
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
bung givon...
saya suka nyetir pakai ea sejuta umat, selama ini perfect op di broker 4 digit, sekarang mau sayanaikkan 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
Originally Posted by iniangga
ada di thread sebelah tu om....
ni link nya...
OPEN NEW TAB :peace:
Originally Posted by zakki
master.. ada yang bisa buat auto lot..
kalau balance nambah setiap $100 lot op dinaikkan.. kira2 bagaimana ya bunyi logicanya.. terima kasih
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
30 of 32 27/11/2011 9:14 PM
01-18-2011 09:32 AM
01-18-2011 05:52 PM
01-18-2011 06:00 PM
01-18-2011 07:05 PM
gtx
Quote:
ada tuh masta di share eadisana ada dibahas juga kok itu ea yang otomatis lotnya bertingkatsetelah 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:
oke master.. link nya apa?
zakki
Quote:
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:
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
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 bisadisett sesuai keinginan ontoh ea thuyul tuh modelnya seperti yang agan maksud , mav
kalo salah mohon dikoreksi
Originally Posted by Givonly
Balance $100 lot=1Balance $110 lot=1.1 ato tetep =1 nunggu dulu sampe $200 baru naik?
Tolong pertanyaan diperjelas dengan CONTOH !
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 petunjukdengan sangat.... :pleeease: , sebelumnya maaf klo sudah merepotkan... master
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
31 of 32 27/11/2011 9:14 PM
01-18-2011 07:49 PM
Show 40 post(s) from this thread on one page
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.
All times are GMT +8. The time now is 09:12 PM.
Powered by vBulletin™ Version 4.0.2Copyright © 2011 vBulletin Solutions, Inc. All rights reserved.
Page 1 of 21 1 2 3 11 ... Last
[HOT DISCUSS] Coding in MQL4 ! http://indo.mt5.com/printthread.php?t=2427&pp=40
32 of 32 27/11/2011 9:14 PM