Tuesday 21 May 2013

Ngoprek EA 1

http://jumforex.blogspot.com/2013/04/ngoprek-ea-1.html

Ha bagi para  trader yang sudah biasa bermain dengan coding EA tentu hal yang lumrah bila sekali waktu ngoprek ,..............Tentu ngoprek EA maksudnya!
Nah Kali ini saya akan mengajak temen2 untuk mencoba mengoprek sebuah EA yang cukup baik yang berasal dari library mql4 , dan asal EA nya dari negeri beruang ==>Rusia
VR---SETKA---3 ini nama aslinya dari sononya

Begini Eanya!



Bagi temen2 yang mau nyoba silahkan di copas  dan mungkin bisa diamati programnya.
Ea ini termsuk sudah cukup baik karena sudah menggunakan perhitungan Bep untuk Take profitnya. (emang ada sedikit error untuk modifikasi ordernya tapi tidak menggganggu).

Kalo diamati emang sepertinya EA ini edisi free dan untuk signalnya belum lengkap tetapi sudah cukup baik untuk di coba di buat demo atau riel heeeee dan mungkin edisi lengkapnya dibuat premium (kali aja loh)

Nah Pada kesempatan kali ini saya akan ngoprek dengan sedikit saya tambahakan:
  1. Target persen = artinya kalo target equety sudah tercapai maka EA akan berhenti trading
  2. Penambahan signal berdasarkan indikator yang ada 
  3. dan sedikit diberi pemanis buatan heeeeeeee
Nah sementara di sini dulu yah
hasil ngopreknya sabar dulu atau ada temen2 yang akan menyumbangkan hasil oprekannya , silahkan di kasih link atau email juga boleh

3 komentar:

  1. gan ini ea nga ada SL nya ya?
    takut MC gara2 nga ada SL nya
    klo ditambahkan SL nya gimana ya cara naruhnya yang pas.

    ditunggu jawabnnya
    makasih
    Balas
  2. Maaf master mau nanya, apakah ada EA yang bisa mengaktifkan stop order setelah harga melewati sekian pips dari harga patokan. ilustrasinya begini. misal untuk EU harga sedang bergerak naik dari level 1.2950 ke 1.3000, biasanya kalo kita mau sell di 1.3000 kan pake order Sell limit di 1.30000, tapi sering harga malah terus naik sampai menyentuh SL kita. nah saya pengennya sell stop di harga 1.30000 setelah harga menyentuh misal 1.3020. jadi EA nya mengkatifkan sell stop setelah harga naik 20 pips dari level 1.3020. terimakasi sebelumya
    Balas
    Balasan

    1. Kalo ea yang udah jadi sy gak punya bro , tapi seperti bisa dibuat silahkan kunjungi kisaran part 21 untuk referensi membuatnya!

Belajar Membuat EA Sederhana 33 (Proteksi EA)

http://jumforex.blogspot.com/2013/05/belajar-membuat-ea-sederhana-33.html

Salam Profit semuanya!

Sepertinya udah banyak sih share coding EA  sampai part 32.......

Nah kali ini kita akan belajar tentang proteksi EA ....karena ada bebepa temen di Ym yang minta di ajari proteksi EA ...............

Ada banyak cara untuk proteksi EA ataupun script dan Indikator al:


  1. Proteksi Demo ==> EA hanya bisa digunakan untuk account demo.
  2. Proteksi accout khusus ==> hanya bisa digunakan account tertentu saja.
  3. Proteksi Broker ==> hanya bisa digunakan broker tertentu saja
  4. Proteksi Pair ==> hanya bisaa digunakan pair tertentu saja.
  5. Proteksi waktu ==> dibatasi sampai waktu tertentu : tgl -bulan-tahun
  6. Proteksi Nama==>hanya bisa digunakan dengan nama account tertentu
  7. Proteksi Pasword==> menggunakan pasword tertentu ,lisensi number 
  8. Proteksi dll ==>menggunakan file dll
  9. Proteksi webs==> harus tersambung dengan webs
  10. dll.
Nah kita akan bahas beberapa proteksi ..............

Yang Pertama 
Proteksi account demo
Untuk memproteksi supaya  EA hanya bisa digunakandi account demo disini kita tambahkan pembaca account demo yaitu:  IsDemo()
Nah dari sini kita kembangkan dalam sebuah operasi

if(!IsDemo()){Alert("Maaf bos hanya untuk demo");return(0);}

Nah , if(!IsDemo()){ ini artinya bila tidak demo maka blabla.............yaitu Alert("Maaf bos hanya untuk demo") =>maka alert akan berbunyi dan memberi tahu ..............
ditambahkan untuk menghentikan perintah berikutnya yaitu return(0);

Code tersebut di tempatkan di dalam atau dibawah  int start(){ 
contoh:

int start(){ if(!IsDemo()){Alert("Maaf bos hanya untuk demo");return(0);}

Nah untuk lebih jelasnya saya akan proteksi EA di part 21

sehingga jadinya begini



Ternyata hanya dengan sebaris perintah tersebut cukup ampuh bahwasanya EA   hanya akan bisa digunakan di account demo he he he..............Mudah kan?

Oke deh sementara disini dulu ya nanti kita saambung lagi
sabar deh

Belajar Membuat EA Sederhana 32

Salam Profit semuanya

Pada part kali saya share  EA sederhana yang gunanya untuk menutup semua  order dalam 1 pair pada jam tertentu,
 kebetulan EA ini pernah saya share di forum IndoMt5 , Karena ada permintaan seorang temen untuk di tambahi fungsi hari  supaya bisa diseting harinya.

Mudah2an menambah wawasan



Pastikan mengikuti:


  • Belajar Membuat EA sederhana part 15
  • Belajar Membuat EA sederhana part 16
  • Belajar Membuat EA sederhana part 17
  • Belajar Membuat EA sederhana part 18
  • Belajar Membuat EA sederhana part 19
  • Belajar Membuat EA sederhana part 20
  • Belajar Membuat EA sederhana part 21
  • Belajar Membuat EA sederhana part 22
  • Belajar Membuat EA sederhana part 23
  • Belajar Membuat EA sederhana part 24
  • Belajar Membuat EA sederhana part 25
  • Belajar Membuat EA sederhana part 26
  • Belajar Membuat EA sederhana Part 27
  • Belajar Membuat EA sederhana part 28
  • Belajar Membuat EA sederhana Part 29
  • Belajar Membuat EA sederhana Part 30
  • Belajar Membuat EA sederhana Part 31
  • Belajar Membuat EA Sederhana 31 (Multi Pair)

    http://jumforex.blogspot.com/2013/04/belajar-membuat-ea-sederhana-31-multi.html

    Pastikan sudah mengikuti part sebelumnya di sini

    Untuk melengkapi wawasan kita tentang membuat EA, disini saya akan coba share tentang Membuat EA multi pair (Ea untuk 6 pair). Hal ini untuk memenuhi permintaan beberapa teman melalui email.

    Ea ini hanya sebagai dasar2 saja dan untuk pengembangan lebih lanjut silahkan untuk berkreasi
    Dasar2 Ea dilengkapi dengan fungsi yang mudah untuk di comot  ,al :
    1. fungsi order untuk multi pair
    2. close semua order multi pair
    3. menghitung total order perpair
    4. Kebetulan signal diambil dari close candel dan open candel
    Mungkin bagi temen2 yang berminat silahkan mengamati code berikut dan mudah2an pas untuk belajar

    //koreksi 10/04/2013


    Bila ada yang mau memberikan penjelasan dan atau pertanyaan silahkan  comment di bawah !

    semoga bermanfaat untuk semua 
    Salam Sukses trader Indonesia

    Belajar Membuat EA Sederhana 30

    http://jumforex.blogspot.com/2013/03/belajar-bikin-ea-sederhana-20.html

    Assalamualaikum .............semuanya Salam profit dan sukses selalu! Sampai hari ternyata masih banyak email dan juga Ym ==>minta dibuatkan Ea ... Padahal dengan saya  share dari part 1 sampai ini part 30 ini dengan harapan temen2 mau belajar membuat EA , meski hanya sederhana.
    Part 1 sampai dengan 30 tanpa terasa ternyata sudah banyak hee.

    Disini kebetulan gak share tentang dasar2 mql tapi ini sebenarnya bisa dipelajari di metaeditor.
    Coba aja buka metaeditor dan perhatikan di sebelah kanan tab atau klik di bagian dictionary buka satu persatu bagian dari semua hal yang terkait dengan pemrogram mql4 ada semuanya...atau kesini http://book.mql4.com  .....hem  lengkap kan?
    Tinggal kemauan kita untuk mempelajarinya ...saya belajar juga mulai dai 0 (nol) kecil loh

    Loh dulu saya juga belajar dari 0 dengan banyak i membaca dan praktek ditambah rajin bertanya kepada para master eeeeeeeeee , banyak di forum2 master yang selalu siap membantu kita ...gratis pula...,,Enak kan?
    Dulu saya belajar tentang EA dimulai ketika sakit gara2 banyak nongkrong di depan komputer dan mata melotot ngelihat chart heee ditambah banyak berdebar debar gara2 loncatan news rilis dengan  floting menganga heeee

    Ternyata dengan diberi sakit ada banyak hikmah ................ saya  jadi bisa membuat  EA , meski hanya EA yang sederhana.
    Alhamdulillah  udah 1,5 tahun terakhir  semua Ea yang saya gunakan di account riel adalah buatan sendiri.
    Nah mudaha2 ini memberi motivasi rekan2 trader untuk bisa membuat EAnya sendiri .

    Alhamdulillah lagi deh......... sekarang saya santai gak banyak didepan kompi loh.......... buat apa capek2 di depan kompi kalo bisa ditinggal jalan2  dan eee profitnya juga sama ...ya kan?
    Kalo udah rejeki yah gak akan kemana   ..........untuk apa capek heee didepan kompi eeee bisa vertigo itu sih pengalaman saya


    Nah EA sebenarnya hanyalah pembantu yang mewakili trading kita ..
    dengan pemahaman yang baik Ea juga sangat membantu transaksi kita.

    Apa sih susah nya bikin EA?
    Bikin Ea itu gampang koq (hee mentang2 udah bisa)
    tapi ada yang bilang sulit yahhh bagi yang belum mempelajarinya haaahaa
    Sampai hari ini saya juga masih belajar !

    Yang penting ada kemauan pasti ada jalan ....
    Jangan sungkan2 bertanya kepada siapapun ...loh itu kuncinya

    Kalo belum bisa mulailah dari awal atau mulai klik sini http://jumforex.blogspot.com/2012/08/yuk-belajar-bikin-ea-sederhana-1.html

    Oh ya hampir lupa nih EA di part 30  ini sebagai wawasan saja ... dan pada bagian ini saya sengaja tidak kasi penjelasan tapi harapan saya ada yang mau kasih comment dengan penjelasan2 hee


    Semoga berhasil semuanya deh!

    Belajar Membuat EA Sederhana 29 (daily marti lepas)

    Salam Profit semuanya .....pastikan sudah membaca pada part sebelumnya disini

    Karena kali ini saya akan mengoprek EA pada  part 28  ini untuk di sesuaikan dengan rule yang ada pada permintaan di forum indomt5  ini 

    Lansung aja deh silahkan di copas





    setelah di becktes EA ini udah jalan

    karena ada penyesuaian rule di forum maka sedikit disesuaikan
    cuma filter doji nya belum ada ><



    Hasil BTnya


    Okey semuanya........................Salam profit

    Jangan Lupa kasih comment ya

    Belajar Membuat EA Sederhana 28 ( order Harian)

    Kita lanjut lagi deh  ....
    Dan pastikan sudah mengikuti part 27 disini

    Pada kesempatan ini saya akan sedikit mengoprek EA Cutswicting pada part 25 untuk ditambahkan boolean  supaya dalam sehari trading kalo sudah takeprofit berhenti trading.
    Jadi ditambahkan :
    extern bool    Trading_Continue = false; // artinya kalau false kalo sudah nyentuh takeprofit dalam hari itu akan berhenti trade, sebaliknya bila true akan terus trading .

    Bagian yang penting didalam hal ini perlu ditambahkan adalah membaca history  jumlah trade dalam sehari.
    adalah bagian ini :
    sebelumnya
    double trad(int m)
    {
      double pr,op;
      for (int i = 0; i < OrdersHistoryTotal(); i++) {
       if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;
       if (OrderSymbol() != Symbol()/* || OrderComment() != Nama_EA*/) continue;
       if(m==1)pr=OrderProfit();
       if(m==2)pr=OrderType();
       if(m==3)pr=OrderMagicNumber();
        }
    return(pr);
    }
    ditambahkan menghitung jumlah order dalam sehari  jadinya sbb:

    double trad(int m)
    {
      double pr,op;
      for (int i = 0; i < OrdersHistoryTotal(); i++) {
       if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;
       if (OrderSymbol() != Symbol()/* || OrderComment() != Nama_EA*/) continue;
       if(m==1)pr=OrderProfit();
       if(m==2)pr=OrderType();
       if(m==3)pr=OrderMagicNumber();
       datetime tclose=OrderCloseTime();
       datetime topen=OrderOpenTime();
       if (iBarShift(Symbol(),PERIOD_D1,topen)==0) {
       if (iBarShift(Symbol(),PERIOD_D1,tclose)==0){
       if(m==4)pr++;
       }
       }
     }
    return(pr);
    }

    Jadi untuk memanggil / menghitung jumlah order dalam sehari adalah trade(4) 
    Nah dari script diatas dibuatlah logika sbb
      bool  trs=false;
      if(!Trading_Continue){if(trad(4)>0)trs=true;else trs=false; }else trs=false;
    Nah di coding di atas bila dirangkai maka jadinya sebagai berikut:


    Nah jadi deh
    Siap tempur !
    Jangan Lupa kasih comment ya !

    Belajar Membuat EA Sederhana 27 (Compounding Lots)

    Sebelumnya ikuti dulu di part 26 disini

    Kali ini saya akan sedikit membahas tentang Compounding lots (atas permintaan dari dari seorang rekan)
    Compounding itu sendiri sebanarnya banyak cara dan ragamnya tapi pada intinya adalah melipatkan lots karena ada pertambahan equety .

    Nah dalam kesempatan ini saya hanya  akan membahas 2 macem cara membuat compounding lots, (sebenarnya ada banyak  banyak cara ) Hal ini sebenarnya berhubungan dengan Management Money (MM). => bisa dengan Balance , Equety, Freemargin dll
    1. Cara pertama dengan cara membagi balance dan atau Equety
    • Membagi balance  =      AccountBalance()/Pembagi
    • Membaci Equety  =      AccountEquity()/Pembagi
    Contoh nya kita akan menambahkan pada ea yang ada pada part 13
    EA nya begini : Cross AntiQ



    Nah langkah pertama dibuat  dulu tambahan deklarasi  boolean dan pembaginya

    extern bool    Compounding             = true;

    extern double  Pembagi                 = 1000;
    double x;

    Kita bual perintah untuk menyisipkan
    if(Compounding ) x=AccountBalance() / Pembagi; else x=Lots; 
    artinya kalau compounding ==true maka akan di compouding bila else maka tetap berlaku Lots
    Bagian yang lain perlu diganti adalah pada bagian yang berhubungan dengan lots , yaitu
    OrderSend(Symbol(),OP_BUY,NR(Lots), bla bla...............
    Nah ini diganti dengan
    OrderSend(Symbol(),OP_BUY,NR(x), bla bla..............
    Bila menghendaki Equety yang dibagi yah tinggal diganti aja
    if(Compounding ) x=AccountEquety() / Pembagi; else x=Lots; 
    Sehingga jadinya begini:


    Untuk model compound  yang kedua adalah compounding dengan kelipatan balance (jadi tiap kelipatan balance maka lots bisa di atur pertambahannya) ... Tapi  kita bahas  di part berikutnya ya...

    He he sabar aja dulu !

     bila belum jelas kasih cooment ya!

    Semoga bermanfaat!

    Handling OrderSend Error 131 in MetaTrader 4


    July 10th, 2008
    OrderSend Error 131 is a very popular problem that is usually encountered when testing MT4 expert advisors. What causes this error? It’s called ERR_INVALID_TRADE_VOLUME in the MT4 code. That means that your expert advisor is trying to send an order with invalid trade volume. On the absolute majority of the MT4 brokers setting some EA to open an order 0.123 lots will generate this error. But sometimes it’s generated when the EA, created for mini or micro accounts, is used on the standard account. If you stumble on OrderSend Error 131 during your testing, you can quickly find out the wrong settings of your EA — find the standard init() function inside your EA’s code and insert these lines of code there:

    Print(MarketInfo(Symbol(), MODE_LOTSIZE));
    Print(MarketInfo(Symbol(), MODE_MINLOT));
    Print(MarketInfo(Symbol(), MODE_LOTSTEP));
    Print(MarketInfo(Symbol(), MODE_MAXLOT));

    The first line will give you the information regarding how many units one lot holds when you trade in this account (100000 would mean a standard-sized lot). Remember, that in your expert advisor’s log this line will be first starting from down to up, not vice versa. The second line will tell you the minimum amount of lots you can trade (this is the most usual error; you’ll probably just need to fix the amount of lots your EA trades from 0.1 to 1). The third one will give the minimum step for the trade volume in lots. The fourth line will tell you the maximum amount of lots that your EA can trade.
    For example, demo account at FXOpen generates this info when I insert those lines into the code:

    2008.07.10 15:13:37 MACD Sample EURUSD, H1: 10000
    2008.07.10 15:13:37 MACD Sample EURUSD, H1: 0.01
    2008.07.10 15:13:37 MACD Sample EURUSD, H1: 0.01
    2008.07.10 15:13:37 MACD Sample EURUSD, H1: 100000

    That means that 1 lot is 100,000 units (a standard size), minimum trade volume is 0.01 lot (so, one can trade starting from $10 on 1 position in a dollar-based currency pair), minimum trade volume step is also 0.01 lot (one can trade 0.33, 0.4 or 1.25 lot volumes, but can’t send orders with 0.333 lot size) and the maximum volume one can use to open a position is 10,000 lots.
    You can incorporate the MarketInfo() function at a more complex level into your EA, so it could automatically check the allowed values and correct its settings. But if you don’t want to code much, you can just use the code above to find out the right values and correct the settings manually.

    5 Responses to “Handling OrderSend Error 131 in MetaTrader 4”

    1. chief2000
      This is some Enhancement:
      // ===============================================
      Print(“MODE_LOTSIZE = “, MarketInfo(Symbol(),MODE_LOTSIZE), “, Symbol = “, Symbol());
      Print(“MODE_MINLOT = “, MarketInfo(Symbol(),MODE_MINLOT), “, Symbol = “, Symbol());
      Print(“MODE_LOTSTEP = “, MarketInfo(Symbol(),MODE_LOTSTEP), “, Symbol = “, Symbol());
      Print(“MODE_MAXLOT = “, MarketInfo(Symbol(),MODE_MAXLOT), “, Symbol = “, Symbol());
      // ===============================================
      Reply
      Ogün POLAt Reply:

      Thanks for your help.But ı have used this code and i learned max lot size is 30.
      How can i increase max lot size.
      Yours sincerely.
      Reply
      admin Reply:

      Only your broker can increase your allowed max lot size. You may try contacting their support service about that but I am not sure that they will increase it. Do you really have to open such big positions?
      Reply
    2. Chad
      “You can incorporate the MarketInfo() function at a more complex level into your EA, so it could automatically check the allowed values and correct its settings”
      Please what is the code. I need it but I am not a coder. Grateful. Chad
      Reply
    3. Andrei
      Chad, If you aren’t coder it’d be better for you to use the solution proposed in this post. Integration of MarketInfo() into code for automatic adjustments is different in each case and I won’t be able to help you here. More than that, you don’t really need it if you aren’t a professional coder.

    Wednesday 15 May 2013

    tes trigger op stoch

    //+-----------------------------------------------------------------------+
    //|                                        ~~ tes trigger op stoch ~~.mq4 |
    //|                                          @tes trigger op stoch        |
    //|                                                                       |
    //+-----------------------------------------------------------------------+
    #property copyright "@tes trigger op stoch"

    /*-- Parameter ini ditampilkan di EA dan bisa diubah --*/

    extern   int      TakeProfit  10;    // Nilai TP setiap OP di EA Martingale ini
    extern   int      PipStep     10;    // Jarak pip dimana akan buka OP baru
    extern   int      Slippage    3;    // Apa itu slippage ? Googling sendiri ya..
    extern   double   Lots        0.05;  // Nilai lots awal, nantinya akan digandakan setiap step
    extern   double   Multiply    3.0;  // Nilai pengali setiap step OP baru
    extern   int      MaxTrade    7;   // Banyak OP maksimal yang boleh dijalankan
    extern   bool     UseTime     TRUE// Pilihan apakah memakai waktu bekerjanya EA ?
    extern   int      HourStart   24;   // Waktu mulai EA bekerja
    extern   int      HourEnd     13;   // Waktu akhir EA bekerja

    /*-- Parameter ini tidak ditampilkan di EA --*/

    string   EAName    "~~tes trigger op stoch~~"// Nama EA, untuk ditampilkan di layar
    string   EAComment "~~tes trigger op stoch~~"; // Variabel ini akan kita masukkan di setiap OP sebagai Comment
    int      EAMagicNumber 8095;  // Magic Number
    double   SetPoint      0;     // Variabel SetPoint untuk kode digit broker 4 atau 5


    //+------------------------------------------------------------------+
    //| expert initialization function                                   |
    //+------------------------------------------------------------------+

    int init()
      {

       //----

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

    //+------------------------------------------------------------------+
    //| expert deinitialization function                                 |
    //+------------------------------------------------------------------+

    int deinit()
      {
    //----

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

    //+------------------------------------------------------------------+
    //| expert start function                                            |
    //+------------------------------------------------------------------+

    int start()
      {

       //----

       
    int   iTrade=0;


       
    Comment(EAName);             // Tampilkan Nama EA di layar

       /* -- Jika tidak ada OP sama sekali, maka jalankan fungsi berikut --*/
       /* -- Disinilah tempat anda memasukkan koding indikator untuk memicu OP --*/
       
    if(OrdersTotal()==0)
       {

           if ((
    iStochastic(NULLNULL,4,14,1,MODE_SMA,0,MODE_MAIN,0) > iStochastic(NULLNULL,4,14,1,MODE_SMA,0,MODE_SIGNAL,0)))
          {
             
    /*-- Order Buy --*/
             
    OrderSend(Symbol(), OP_BUYLots,  AskSlippage0Ask+TakeProfit*SetPointEACommentEAMagicNumber);

          }
          else if ((
    iStochastic(NULLNULL,4,14,1,MODE_SMA,0,MODE_MAIN,0) < iStochastic(NULLNULL,4,14,1,MODE_SMA,0,MODE_SIGNAL,0)))
          {
             
    /*-- Order Sell --*/
             
    OrderSend(Symbol(), OP_SELLLotsBidSlippage0Bid-TakeProfit*SetPointEACommentEAMagicNumber);   
          }

       }


       
    /* -- Inilah Fungsi Martingale. Jika ada OP yang salah, maka lakukan martingale --*/
       
    if(OrdersTotal()>=1)
       {
          
    GoMartingale();
       }

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

    //+------------------------------------------------------------------+

    /*--agar EA bisa running di Broker 4 Digit atau 5 Digit--*/

    void SetBroker()
    {
       if (
    Digits==|| Digits==5// Perintah untuk broker 5 Digits
          
    {SetPoint=Point*10;}
       else                        
    // Perintah untuk broker 4 Digits
          
    {SetPoint=Point;}
    }
    void GoMartingale()
    {
             
    int      iCount      =  0;
             
    double   LastOP      =  0;
             
    double   LastLots    =  0;
             
    bool     LastIsBuy   =  FALSE;
             
    int      iTotalBuy   =  0;
             
    int      iTotalSell  =  0;
             
    int      Spread=0;

             
    SpreadMarketInfo(Symbol(), MODE_SPREAD);


             for(
    iCount=0;iCount<OrdersTotal();iCount++)
             {
               
               
    OrderSelect(iCount,SELECT_BY_POS,MODE_TRADES);
      
               if(
    OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderComment()==EAComment && OrderMagicNumber()==EAMagicNumber)
               {
                   if(
    LastOP==0) {LastOP=OrderOpenPrice();}
                   if(
    LastOP>OrderOpenPrice()) {LastOP=OrderOpenPrice();}
                   if(
    LastLots<OrderLots()) {LastLots=OrderLots();}
                   
    LastIsBuy=TRUE;
                   
    iTotalBuy++;
          
                   
    /* Bila mencapai batas OP maksimal, jangan tambah OP lagi */
                   
    if(iTotalBuy==MaxTrade) {return(0);}
               }

               if(
    OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderComment()==EAComment && OrderMagicNumber()==EAMagicNumber)
               {
                   if(
    LastOP==0) {LastOP=OrderOpenPrice();}
                   if(
    LastOP<OrderOpenPrice()) {LastOP=OrderOpenPrice();}
                   if(
    LastLots<OrderLots()) {LastLots=OrderLots();}
                   
    LastIsBuy=FALSE;
                   
    iTotalSell++;
          
                   
    /* Bila mencapai batas OP maksimal, jangan tambah OP lagi */
                   
    if(iTotalBuy==MaxTrade) {return(0);}
               }

             }

             
    /* Jika arah Price adalah DOWNTREND...., Periksa nilai Bid (*/
             
    if(LastIsBuy)
             {
                if(
    Bid<=LastOP-(Spread*SetPoint)-(PipStep*SetPoint))
                {
                   
    OrderSend(Symbol(), OP_BUYMultiply*LastLotsAskSlippage0Ask+TakeProfit*SetPointEACommentEAMagicNumber);
                   
    ModifyTP();
                   
    LastIsBuy=FALSE;
                   return(
    0);
                }
             }
             
    /* Jika arah Price adalah Sell...., Periksa nilai Ask (*/
             
    else if(!LastIsBuy)
             {
                if(
    Ask>=LastOP+(Spread*SetPoint)+(PipStep*SetPoint))
                {
                   
    OrderSend(Symbol(), OP_SELLMultiply*LastLotsBidSlippage0Bid-TakeProfit*SetPointEACommentEAMagicNumber);  
                   
    ModifyTP();
                   return(
    0);
                }
             }

    }

    /*-- Fungsi ModifyTP ini untuk mengubah semua OP agar TP di titik yang sama --*/
    void ModifyTP()
    {
       
    int      iCount=0;
       
    double   NewTP=0;

            
    /*- Ambil nilai Take Profit dari Order terakhir -*/
             
    for(iCount=0;iCount<OrdersTotal();iCount++)
             {
      
               
    OrderSelect(iCount,SELECT_BY_POS,MODE_TRADES);

               
    /*-- Kalau OP-nya adalah BUY, ambil nilai TP yang paling kecil. Jadikan TP bersama --*/
               
    if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderComment()==EAComment && OrderMagicNumber()==EAMagicNumber)
               {
                   if(
    NewTP==0) {NewTP=OrderTakeProfit();}
                   if(
    NewTP>OrderTakeProfit()) {NewTP=OrderTakeProfit();}
          
               }
      
               
    /*-- Kalau OP-nya adalah SELL, ambil nilai TP yang paling besar. Jadikan TP bersama --*/
               
    if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderComment()==EAComment && OrderMagicNumber()==EAMagicNumber)
               {
                   if(
    NewTP==0) {NewTP=OrderTakeProfit();}
                   if(
    NewTP<OrderTakeProfit()) {NewTP=OrderTakeProfit();}
               }
                
             }

            
    /*- Ubah semua nilai OP TakeProfit dengan yang baru (2x lipat) -*/
             
    for(iCount=0;iCount<OrdersTotal();iCount++)
             {
      
               
    OrderSelect(iCount,SELECT_BY_POS,MODE_TRADES);

               
    /*- Kalau semua OP adalah BUY, maka ubahlah TP mereka -*/
               
    if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderComment()==EAComment && OrderMagicNumber()==EAMagicNumber)
               {
                   
    OrderModify(OrderTicket(), OrderLots(), 0NewTP0);
               }
      
               
    /*- Kalau semua OP adalah SELL, maka ubahlah TP mereka -*/
               
    if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderComment()==EAComment && OrderMagicNumber()==EAMagicNumber)
               {
                   
    OrderModify(OrderTicket(), OrderLots(), 0NewTP0);
               }    

             }