EUR/USD 1.070   |   USD/JPY 155.380   |   GBP/USD 1.246   |   AUD/USD 0.650   |   Gold 2,335.33/oz   |   Silver 27.67/oz   |   Wall Street 38,085.80   |   Nasdaq 15,611.76   |   IDX 7,062.02   |   Bitcoin 64,481.71   |   Ethereum 3,156.51   |   Litecoin 83.80   |   PT PLN (Persero) segera melantai ke Bursa Karbon Indonesia alias IDX Carbon, dengan membuka hampir 1 juta ton unit karbon, 5 jam lalu, #Saham Indonesia   |   PT Sinar Mas Agro Resources and Technology Tbk. (SMAR) meraih fasilitas pinjaman dari Bank BNI (BBNI) senilai $250 juta, 5 jam lalu, #Saham Indonesia   |   Induk perusahaan Google, Alphabet Inc (NASDAQ: GOOGL), menguat sekitar 12%, mencapai rekor tertinggi di sekitar $174.70, 5 jam lalu, #Saham AS   |   Nasdaq naik 1.2% menjadi 17,778, sementara S&P 500 naik 0.8% menjadi 5,123 pada pukul 18.49 ET (22.49 WIB). Dow Jones Futures naik 0.1% menjadi 38,323, 5 jam lalu, #Saham AS

Filter Open Order

Expert Advisor

2018

Gan, mau tanya bikin filter EA hanya open buy setelah candle ke tiga muncul di atas MA. Saya sudah coba dengan if (Close(3) > MA 10) maka open buy tetapi setelah tapi malah open buy lagi padahal sudah candle ke 7 di atas MA.

Yg saya inginkan adalah hanya open di candle ke-3 setelah tapi Ea diam walaupun harga masih di atas MA terima kasih.

2018

Selamat pagi pak, Saya akan sedikit menjelaskan bagaimana prinsip kerja atau algoritmanya.

Sebelumnya Saya ulangi lagi requirement-nya, Anda ingin agar EA open posisi saat close candle ke-3 setelah cross harga dengan MA?
 
Jika benar seperti itu, Anda harusnya tidak menggunakan:
if (Close(3) > MA10) -> perintah ini digunakan untuk mengecek jika candle nomor 4 dari kanan saat ini closenya melebihi MA10 tidak. Sehingga seperti yang Anda jelaskan tadi, jika saat in candle ke-7 dan harga masih di atas MA, maka berarti candle nomor 4 dari candle saat ini closenya melebihi MA10 jadi EA akan tetap open posisi.

Logika Anda sebenarnya sudah baik dan simpel. Tapi perlu ditambahkan sedikit sebagai koreksi atau filter agar tidak terjadi hal-hal seperti yang Anda alami di atas.
jadi algoritmanya seperti ini:
 
1. Jika candle nomor 4 dari kanan saat ini close lebih dari MA10 maka:
2. Periksa candle nomor 5, cek apakah candle nomor 5 juga close lebih dari MA10?
3. Jika candle nomor 5 tidak lebih dari MA10 maka candle saat ini adalah candle ke-4 setelah harga cross MA10, dan lakukan open order buy.
4. Jika candle nomor 5 lebih dari MA10 maka candle saat ini adalah bukan candle ke-4 setelah harga cross MA10, jgn lakukan apa-apa.
secara bahasa pemrograman :
 
if (Close(3) > MA10) { if(Close(4) > MA10) {//open posisi buy} else{ //do nothing }}
 
Jangan lupa nilai MA10 untuk candle ke-4 dan ke-5 akan berbeda konfigurasinya dan penulisannya. lihat contoh di bawah berikut:
 
nilaima = iMA(symbol, period, maperiod, mashift,mamethod,appliedprice,shift);

Jadi jika Anda ingin membandingkan candle ke-4 ya harus dengan menggunakan nilai MA pada posisi candle ke-4. Jika MA10 Anda merupakan SMA10 maka kodenya jadi begini pada candle ke-4 dan 5
candle ke-4 -> nilaimake4 = iMA(null,0,10,0,MODE_SMA,PRICE_CLOSE,3);
candle ke-5 -> nilaimake5 = iMA(null,0,10,0,MODE_SMA,PRICE_CLOSE,4);
 
Terima kasih.
2018

terima kasih banyak pak ... sangat membantu

2018

@ahmadfx

Terima kasih kembali pak. Jika ada kesulitan silahkan tanyakan kembali, akan Kami bantu sebisa Kami.
 
Terima kasih
2018
selamat siang pak, Saya mau tanya untuk membuat code open sell ketika ada candle bearish di atas MA100 dan jarak MA dengan harga  saat ini berada 100 pip atau lebih di atas MA100.
bagaimana codenya?
apakah seperti ini?
 
if ( Close[0]> Ma100&& Ma100)
 
terima kasih untuk jawabanya
2018

Selamat pagi juga Pak. Akan kami coba sedikit bantu jelaskan algoritmanya ya.Pertama, saya verifikasi ulang terlebih dahulu parameter-parameter yang ingin Anda gunakan.


1. Candle bearish = Candle yang nilai close-nya lebih rendah daripada nilai open-nya.
 
2. Jarak close candle dengan MA100 lebih dari 100 pips atau 1000 poin.
 
Kedua, mari kita analisa mengapa kode yang bapak tuliskan tidak dapat berjalan.
 
1. if(close[0] > MA100 && MA100
 
sebenarnya tidak ada kesalahan logika pada kode yang bapak tuliskan. Hanya saja pada prakteknya pemrograman harus ditulis runtut dan jelas agar dapat dijalankan oleh komputer.

Mungkin bapak bisa mencoba algoritma berikut. Tanda "// "berarti komentar ya Pak.

int jarakma;
//Cek apakah candle bearish atau tidak pada candle sebelum saat ini (1)
if (Close[1] < Open[1])
{
jarakma = Close[1] - MA100;
//cek apakah close candle jaraknya lebih dari 100 pips
if ( jarakma >= 1000)
{
//open sell;
}
}
else
{
//jangan lakukan apa-apa
}

Terima kasih
2018

terima kasih banyak pak atas jawabanya 

saya coba dulu codenya ya pak 
terima kasih
2018

selamat malam pak mohon untuk mengoreksi kode di bawah ini mengapa tidak mau open sama sekali ... padahal ketika saya compile tidak ada error sama sekali

yg saya inginkan adalah open sell ketika candle beariss di atas MA100 && jarakMA100 dengan Candle beariss = 100 pip atau lebih terima kasih  banyak  sebelumnya  

extern double Lots       = 0.1; extern int    TakeProfit = 5; extern int    StopLoss   = 20; extern int    Magic      = 123; double  MA100; int    jumlahOpensell, i; int init()   { //----     //----    return(0);   } //+------------------------------------------------------------------+ //| expert deinitialization function                                 | //+------------------------------------------------------------------+ int deinit()   { //----     //----    return(0);   } //+------------------------------------------------------------------+ expert start function                                            | //+------------------------------------------------------------------+ int start()   { MA100= iMA (Symbol(),0,100,0,0,0,0);        int jarakma; if (jumlahOpensell==0 )  if (Close[1] < Open[1]) { jarakma = Close[1] - MA100; if ( jarakma >= 1000) { int x=OrderSend (Symbol(), OP_SELL , Lots , Bid , 10 , Bid +StopLoss*Point , Bid -TakeProfit*Point ,,Magic,0,Red); } } else { //jangan lakukan apa-apa }        // untuk filter jumlah order jumlahOpensell=0; for(i=0;i    {      if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))continue;   if (OrderSymbol()==Symbol() && OrderMagicNumber() == Magic)      {jumlahOpensell++;}    }             //----    return(0);   } //+-

 

2018

Selamat malam Pak. 

Sebelum saya koreksi kodenya, saya meminta maaf terlebih dahulu karena kesalahan saya pada jawaban yang lalu. Sebenearnya algoritma kodenya sudah benar, hanya saja pada saat kita mengecek jarak antara close candle dengan Ma100 saya lupa merubah jarak MA menjadi basis point. Akhirnya EA tidak dapat mendeteksinya. Berikut kode bapak yang saya edit sedikit dan sudah coba sendiri. 

 

extern double Lots = 0.1;
extern int TakeProfit = 5;
extern int StopLoss = 20;
extern int Magic = 123;
double MA100;
int jumlahOpensell, i; //+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

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

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
MA100 = NormalizeDouble (iMA(Symbol(),0,100,0,0,0,1), Digits);
//MA100= iMA (Symbol(),0,100,0,0,0,0); int jarakma;
if (jumlahOpensell==0 )
if (Close[1] < Open[1])
{
jarakma = (Close[1] - MA100)*100000;
ObjectCreate("akselerasi2",OBJ_LABEL,0,0,0,0,0);
ObjectSet("akselerasi2",OBJPROP_CORNER,3);
ObjectSet("akselerasi2",OBJPROP_XDISTANCE,0);
ObjectSet("akselerasi2",OBJPROP_YDISTANCE,10);
ObjectSetText("akselerasi2","jarak dari MA100= " +jarakma,25,"Stencil Std",Green);
if ( jarakma >= 1000)
{
int x=OrderSend (Symbol(), OP_SELL , Lots , Bid , 10 , Bid+StopLoss*Point() , Bid-TakeProfit*Point() ,0,Magic,0,Red);
}
}
else
{
//jangan lakukan apa-apa
} // untuk filter jumlah order
jumlahOpensell=0;
for(i=0;i {
if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))continue;
if (OrderSymbol()==Symbol() && OrderMagicNumber() == Magic)
{jumlahOpensell++;}
} //----
return(0);
}

 

Terima kasih banyak pak

2018

terima kasih banyak pak atas jawabanya ... code nya sudah saya coba dan sudah sesuai keinginan saya

sekali saya ucapkan terima kasih ...dan mudah mudahan bapak sukses selalu
2019

@Admin Seputar Forex
kayaknya admin jago nih buat EA
Boleh minta tolong buatin EA sederhana min
EA yg entry 1x sehari
pada jam 2 siang
di pair EURUSD
posisi buy
Lot = 0.1
take profit = 20
Stop loss = 20
jadi cara kerjanya EA ini hanya open di jam 2 siang dengan posisi selalu buy. sederhana min, tapi saya kesulitan buatnya,bantuin dong min kayak contoh di atas untuk MT5. Terima kasih min

2019

@ahmad nezar:
Mohon maaf pak. Kami bukan jasa pembuat Robot Trading (EA) di sini. Mungkin Bapak bisa belajar sedikit-sedikit terlebih dahulu. Nanti hasilnya silahkan dipaparkan di sini, dan akan kami coba bantu jika ada yg error atau tidak bisa dijalankan. Terima kasih

Kategori Expert Advisor

Pertanyaan Penanya Balasan Dilihat Aktivitas
Cara membuat kunci password pada indicator/EA? Flo 17 20772 2015
Tanya Tentang EA net89? Jemmy 15 41400 2019
Apakah Robot EA akan sering loss? Ari Sucipto 12 621 2022
rekomendasi EA gratis? Cicilia 9 17289 2018
Apakah Foward Test Hasilnya Bisa Sama dengan Back Test? Edwin 9 4710 2018
Bagaimana Menghindari Robot EA Abal-Abal? Arif Santoso 8 798 2022