saya pengen EA dg basic indikator stokastik oscilator dg parameter %K=5 %D=5 Slowing=7 (utk pair EURUSD).
saya ingin melakukan BUY jika %K cross UP %D dan SELL jika %K cross DOWN %D
nah itu gimana ngaturnya??
//+------------------------------------------------------------------+
//| This MQL is generated by Expert Advisor Builder |
//| http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/ |
//| |
//| In no event will author be liable for any damages whatsoever. |
//| Use at your own risk. |
//| |
//+------------------- DO NOT REMOVE THIS HEADER --------------------+
#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
#property copyright "Expert Advisor Builder"
#property link "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"
extern int MagicNumber = 0;
extern bool SignalMail = False;
extern bool EachTickMode = True;
extern double Lots = 1.0;
extern int Slippage = 3;
extern bool UseStopLoss = True;
extern int StopLoss = 20;
extern bool UseTakeProfit = True;
extern int TakeProfit = 25;
extern bool UseTrailingStop = False;
extern int TrailingStop = 30;
int BarCount;
int Current;
bool TickCheck = False;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init() {
BarCount = Bars;
if (EachTickMode) Current = 0; else Current = 1;
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit() {
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start() {
int Order = SIGNAL_NONE;
int Total, Ticket;
double StopLossLevel, TakeProfitLevel;
if (EachTickMode && Bars != BarCount) TickCheck = False;
Total = OrdersTotal();
Order = SIGNAL_NONE;
//+------------------------------------------------------------------+
//| Variable Begin |
//+------------------------------------------------------------------+
double Buy1_1 = iStochastic(NULL, 0, 5, 5, 7, MODE_SMA, 0, MODE_MAIN, Current + 1);
double Buy1_2 = iStochastic(NULL, 0, 5, 5, 7, MODE_SMA, 0, MODE_SIGNAL, Current + 1);
double Buy2_1 = iStochastic(NULL, 0, 5, 5, 7, MODE_SMA, 0, MODE_MAIN, Current + 0);
double Buy2_2 = iStochastic(NULL, 0, 5, 5, 7, MODE_SMA, 0, MODE_SIGNAL, Current + 0);
double Sell1_1 = iStochastic(NULL, 0, 5, 5, 7, MODE_SMA, 0, MODE_MAIN, Current + 1);
double Sell1_2 = iStochastic(NULL, 0, 5, 5, 7, MODE_SMA, 0, MODE_SIGNAL, Current + 1);
double Sell2_1 = iStochastic(NULL, 0, 5, 5, 7, MODE_SMA, 0, MODE_MAIN, Current + 0);
double Sell2_2 = iStochastic(NULL, 0, 5, 5, 7, MODE_SMA, 0, MODE_SIGNAL, Current + 0);
double CloseBuy1_1 = iStochastic(NULL, 0, 5, 5, 7, MODE_SMA, 0, MODE_MAIN, Current + 0);
double CloseBuy1_2 = iStochastic(NULL, 0, 5, 5, 3, MODE_SMA, 0, MODE_SIGNAL, Current + 0);
double CloseSell1_1 = iStochastic(NULL, 0, 5, 5, 7, MODE_SMA, 0, MODE_MAIN, Current + 0);
double CloseSell1_2 = iStochastic(NULL, 0, 5, 5, 7, MODE_SMA, 0, MODE_SIGNAL, Current + 0);
//+------------------------------------------------------------------+
//| Variable End |
//+------------------------------------------------------------------+
//Check position
bool IsTrade = False;
for (int i = 0; i < Total; i ++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
IsTrade = True;
if(OrderType() == OP_BUY) {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Buy) |
//+------------------------------------------------------------------+
if (CloseBuy1_1 < CloseBuy1_2) Order = SIGNAL_CLOSEBUY;
//+------------------------------------------------------------------+
//| Signal End(Exit Buy) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Point * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
} else {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Sell) |
//+------------------------------------------------------------------+
if (CloseSell1_1 > CloseSell1_2) Order = SIGNAL_CLOSESELL;
//+------------------------------------------------------------------+
//| Signal End(Exit Sell) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {
if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| Signal Begin(Entry) |
//+------------------------------------------------------------------+
if (Buy1_1 < Buy1_2 && Buy2_1 > Buy2_2) Order = SIGNAL_BUY;
if (Sell1_1 > Sell1_2 && Sell2_1 < Sell2_2) Order = SIGNAL_SELL;
//+------------------------------------------------------------------+
//| Signal End |
//+------------------------------------------------------------------+
//Buy
if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (1000 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("BUY order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");
} else {
Print("Error opening BUY order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
Tampilkan postingan dengan label Membuat EA tanpa Coding. Tampilkan semua postingan
Tampilkan postingan dengan label Membuat EA tanpa Coding. Tampilkan semua postingan
Selasa, 18 September 2012
Membuat EA tanpa Coding, EA Ichimoku part 2
Praktek: Menambahkan Filter Awesome Oscillator pada EA Ichimoku.
Teman-teman, kita coba tambah prakteknya ya ? Kali ini saya jadikan PR buat teman-teman yang sedang tekun belajar membuat EA di thread ini. Silakan dicoba sendiri agar lancar ilmu EA-nya
Dalam pembuatan EA Ichimoku kemarin (Membuat EA tanpa Coding, EA Ichimoku part 1), kita menemukan ada sinyal-sinyal yang 'salah'. Kita membutuhkan filter agar sinyal yang salah itu bisa dihindari. Saya coba memasukkan Awesome Oscillator sebagai filter. Gambarnya ada di bawah ini.
Ketika Tenkan-Sen dan Kijun-Sen memberi sinyal buy, periksa dulu apakah Awesome ada di atas garis 0 ? Jika tidak maka batalkan OP Buy. Kebalikannya, jika Tenkan-Sen dan Kijun-Sen memberikan sinyal sell, apakah AO sudah berada di bawah garis 0 ? Jika tidak, maka batalkan OP sell.
Ayo silakan teman-teman mencoba sendiri. Kalau sudah, silakan hasil EA-nya dijembreng di thread ini ya ?
http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/
Membuat EA tanpa Coding, EA Ichimoku part 1
Teman-teman,
Mari kita lanjutkan praktek pembuatan EA-nya. Kali ini kita akan mempelajari bagaimana memasukkan setting Trailing Stop, dan bagaimana kalau close order jika signal memberi tanda berlawanan dengan OP awal-nya. Untuk contoh bahasan, kita akan memakai indikator Ichimoku Kinko Hyo yang terkenal itu.
Pair yang kita gunakan adalah EURUSD, pada TF 1H.
Perhatikan dulu komponen Ichimoku pada gambar di bawah ini.
- Garis merah muda disebut Tenkan-Sen
- Garis hijau disebut Kijun-Sen

EA akan melakukan OP SELL pada lingkaran pertama di gambar atas, apabila :
Tenkan-Sen (Shift 1) > Kijun-Sen (Shift 1) AND Tenkan-Sen (Shift-0) < Kijun-Sen (Shift-0)
Apakah masih kebingungan dengan persamaan di atas barusan ?
Nah, sekarang gambar lingkaran 2. Disitu terlihat Signal berbalik arah. Di titik inilah SELL harus di-close. Maka di EA Builder kita masukkan persamaanCLOSE-SELL Strategy.
Persamaannya adalah :
Tenkan-Sen (Shift 1) < Kijun-Sen (Shift 1) AND Tenkan-Sen (Shift-0) > Kijun-Sen (Shift-0)
Lihat lebih teliti, persamaan close-sell hanya kebalikan dari persamaan sell strategy. Mudah kan ?
Sekarang sebelum kita memasukkan persamaan-persamaan ini ke dalam EA Builder, maka tugas anda : buatlah persamaan BUY STRATEGY dan persamaan CLOSE-BUY STRATEGY-nya.
Seperti biasa, kita mulai memasukkan ORDER OPTION di EA Builder.
Perhatikan bahwa setting TRAILING STOP di-enabled-kan, dengan pada 25 pip. Artinya jika sudah profit 25 pip, maka trailing stop akan mulai bergerak.

Selanjutnya kita masukkan parameter di BUY STRATEGY. Sesuaikan dengan PR yang anda buat di atas barusan

DAN sekarang, masukkan persamaan kebalikannya di CLOSE-BUY strategy. Silakan diperhatikan dan diamati lagi sampai jelas.

Yuk, kita lanjut. Pembuatan EA belum selesai lho. Masih harus memasukkan parameter ke SELL strategy dan CLOSE SELL strategy
Kita hanya cukup melihat persamaan di atas dan memasukkannya ke EA Builder.

Sekarang kita masukkan persamaan kebalikannya untuk menutup OP sell, di CLOSE SELL strategy.

Sip !, parameter sudah masuk semua ke EA Builder. Tinggal klik icon complete, dan kita dapatkan hasil EA-nya.
Ini hasil penampakannya di chart, sudah bisa untuk trading. Terlihat Trailing Stop sudah berfungsi, dan close-buy atau close-sell sudah aktif.

--------------------------------------------------------------------
kalau untuk menambahkan strategi seperti martil atau averaging gimana gan? ane masih bingung banget dan perlu banyak penjelasan,,,, ane pengen buat EA dengan system averaging, tapi dengan indi yang ane sukai,,,
EA Builder Online ini sebetulnya hanya merupakan 'template' standar dari proses pembuatan EA. Jadi jika ingin membuat EA dengan sistem Averaging atau Martingale, pertama buat dulu EA simple-nya dengan indikator -- lalu berikutnya ditambahkan coding sendiri. EA Builder ini tidak menyediakan template untuk coding Averaging dan Martingale. Jadi harus ditambahkan sendiri.
------------------------------------------------------------
Mari kita lanjutkan praktek pembuatan EA-nya. Kali ini kita akan mempelajari bagaimana memasukkan setting Trailing Stop, dan bagaimana kalau close order jika signal memberi tanda berlawanan dengan OP awal-nya. Untuk contoh bahasan, kita akan memakai indikator Ichimoku Kinko Hyo yang terkenal itu.
Pair yang kita gunakan adalah EURUSD, pada TF 1H.
Perhatikan dulu komponen Ichimoku pada gambar di bawah ini.
- Garis merah muda disebut Tenkan-Sen
- Garis hijau disebut Kijun-Sen
EA akan melakukan OP SELL pada lingkaran pertama di gambar atas, apabila :
Tenkan-Sen (Shift 1) > Kijun-Sen (Shift 1) AND Tenkan-Sen (Shift-0) < Kijun-Sen (Shift-0)
Apakah masih kebingungan dengan persamaan di atas barusan ?
Nah, sekarang gambar lingkaran 2. Disitu terlihat Signal berbalik arah. Di titik inilah SELL harus di-close. Maka di EA Builder kita masukkan persamaanCLOSE-SELL Strategy.
Persamaannya adalah :
Tenkan-Sen (Shift 1) < Kijun-Sen (Shift 1) AND Tenkan-Sen (Shift-0) > Kijun-Sen (Shift-0)
Lihat lebih teliti, persamaan close-sell hanya kebalikan dari persamaan sell strategy. Mudah kan ?
Sekarang sebelum kita memasukkan persamaan-persamaan ini ke dalam EA Builder, maka tugas anda : buatlah persamaan BUY STRATEGY dan persamaan CLOSE-BUY STRATEGY-nya.
Seperti biasa, kita mulai memasukkan ORDER OPTION di EA Builder.
Perhatikan bahwa setting TRAILING STOP di-enabled-kan, dengan pada 25 pip. Artinya jika sudah profit 25 pip, maka trailing stop akan mulai bergerak.
Selanjutnya kita masukkan parameter di BUY STRATEGY. Sesuaikan dengan PR yang anda buat di atas barusan
DAN sekarang, masukkan persamaan kebalikannya di CLOSE-BUY strategy. Silakan diperhatikan dan diamati lagi sampai jelas.
Yuk, kita lanjut. Pembuatan EA belum selesai lho. Masih harus memasukkan parameter ke SELL strategy dan CLOSE SELL strategy
Kita hanya cukup melihat persamaan di atas dan memasukkannya ke EA Builder.
Sekarang kita masukkan persamaan kebalikannya untuk menutup OP sell, di CLOSE SELL strategy.
Sip !, parameter sudah masuk semua ke EA Builder. Tinggal klik icon complete, dan kita dapatkan hasil EA-nya.
Ini hasil penampakannya di chart, sudah bisa untuk trading. Terlihat Trailing Stop sudah berfungsi, dan close-buy atau close-sell sudah aktif.
--------------------------------------------------------------------
kalau untuk menambahkan strategi seperti martil atau averaging gimana gan? ane masih bingung banget dan perlu banyak penjelasan,,,, ane pengen buat EA dengan system averaging, tapi dengan indi yang ane sukai,,,
EA Builder Online ini sebetulnya hanya merupakan 'template' standar dari proses pembuatan EA. Jadi jika ingin membuat EA dengan sistem Averaging atau Martingale, pertama buat dulu EA simple-nya dengan indikator -- lalu berikutnya ditambahkan coding sendiri. EA Builder ini tidak menyediakan template untuk coding Averaging dan Martingale. Jadi harus ditambahkan sendiri.
------------------------------------------------------------
Langganan:
Postingan (Atom)