• Welcome back! Thank you for being a part of this Traders Community. Let's discuss and share :)
    Selamat datang kembali! Trimakasih telah menjadi bagian dari Komunitas Trader ini. Mari berdiskusi dan berbagi :)
General chit-chat
Help Users
  • No one is chatting at the moment.

      Tutorial Contoh EA Martiangle

      master Trancexe , kalo martingle/ea stop setelah clear all position dan op lagi jam 00 waktu broker bagaimana master ?
      saya bukan orang yang berpikir sederhana c. jadi mungkin ga sesimple master2 disini.
      1. buat parameter jam OP
      2. perhitungan oder yang sudah di close dan order yang masih OP
      3. buat fungsi if(!HourTrade && CountOrderHistory()>0 && OrdersTotal()==0) {signal==0;}
      saya terbiasa membuat setiap OP dengan menggunakan signal.
      misal if MA5>MA10 signal=1; else signal=0;
      1 artinya boleh op, 0 artinya tidak OP.

      btw bisa menulis scriptnya sendiri kan?
       
      saya bukan orang yang berpikir sederhana c. jadi mungkin ga sesimple master2 disini.
      1. buat parameter jam OP
      2. perhitungan oder yang sudah di close dan order yang masih OP
      3. buat fungsi if(!HourTrade && CountOrderHistory()>0 && OrdersTotal()==0) {signal==0;}
      saya terbiasa membuat setiap OP dengan menggunakan signal.
      misal if MA5>MA10 signal=1; else signal=0;
      1 artinya boleh op, 0 artinya tidak OP.

      btw bisa menulis scriptnya sendiri kan?

      Wokeh ..... thanks master Trancexe ,,,
      Experimen dulu,,,,, mau pahami signal dulu ....
       
      permisi master master di sini.. minta ijin untuk share coding EA Martiangle.
      jujur ini bukan tulisan saya. tapi hanya copas dari forum sebelah.

      dalam sebuah EA martiangel ada tiga poin dasar.
      1. Fungsi Pemicu sebagai trigger OP pertama :Ini terserah strategi teman-teman, hanya untuk OP pertama saja. Misalnya teman-teman memakai cross 2 buah MA untuk OP buy atau sell.

      2. Fungsi Martingale : Fungsi ini memeriksa apakah ada OP yang salah ? Jika ya, maka akan dibuat OP baru searah dengan OP semula. Dengan lot yang digandakan.

      3. Fungsi Modifikasi TP : Di dalam fungsi ini, semua OP martingale akan dimodifikasi TP-nya.

      ==============================
      1. Fungsi Pemicu, terserah bagaimana logic yang mau di pake. bisa dengan MA, bisa instan OP, bisa dengan bermacam2 logic yang beredar di forum ini.

      2. Fungsi Martiangle
      Tugas fungsi ini adalah memeriksa apakah OP-nya salah arah. Jika salah arah, maka fungsi akan membuat satu OP lagi searah dengan sebelumnya, dengan lot yang sudah digandakan.
      Code:
      void GoMartingale()
      {
               int      iCount      =  0;
               double   LastOP      =  0;
               double   LastLots    =  0;
               bool     LastIsBuy   =  FALSE;
               int      iTotalBuy   =  0;
               int      iTotalSell  =  0;
               int      Spread=0;
        
               Spread= MarketInfo(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_BUY, Multiply*LastLots, Ask, Slippage, 0, Ask+TakeProfit*SetPoint, EAComment, EAMagicNumber);  
                     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_SELL, Multiply*LastLots, Bid, Slippage, 0, Bid-TakeProfit*SetPoint, EAComment, EAMagicNumber);          
                     ModifyTP();
                     return(0);
                  }
               }
      
      }

      3. Funsi ModifyTP
      ungsi ModifyTP ini menyamakan TP di satu titik. Sehingga jika TP ini kena, maka semua OP martingale akan tertutup dengan hasil balance bertambah. Memang ada OP awal yang loss, tapi karena OP selanjutnya lot-nya ditambah, maka jika kena TP ini hasil akhirnya akan menambah balance.
      alternatif lain sebenernya bisa dengan membaca profit per OP, jadi nanti dibuat close sersuai order. biasanya ini TP in Money, tpi untuk case saat ini menggunakan TP in PIP

      Code:
      /*-- 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(), 0, NewTP, 0);
                 }
                
                 /*- Kalau semua OP adalah SELL, maka ubahlah TP mereka -*/
                 if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderComment()==EAComment && OrderMagicNumber()==EAMagicNumber)
                 {
                     OrderModify(OrderTicket(), OrderLots(), 0, NewTP, 0);
                 }            
              
               }      
      }


      ====================================================================
      Nah dari kode di atas. oleh si pemberi materi di buatlah kode utuh 1 ea.
      Kode ini saya modifikasi biar ada target Profit per Harinya.

      =====EDITED=====
      walah maksimal ternyata 10.000 karakter.. jadi saya ga bisa copas code nya di sini..
      silahkan download mq4 untuk jadi refrensi


      selamat mencoba

      Saya ingin mengganti fungsi martiangel dengan kondisi jika RSI OB baru open buy dan kondisi RSI OS baru open sell gimana ya ? Saya coba tapi ketika di jalankan 1 candle bisa lebih dari 1 order..
       
      Kalo Kode Martingale dengan Single OP seperti apa ya master, jadi kalo OP kita Loss maka Lot di marti. Boleh kasih contoh yang benar kah

      aku buatkan contoh yg buy aja ya...
      Code:
      static double floatingBuy = 0.0;
      static double lastLotSizeBuy = 0.0;
      double tempFloatingBuy = 0.0;
      int nBuy = 0;
      for (int i=OrdersTotal()-1; i>=0; i--){
         bool hsl = OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
         if (OrderType() == 0){
            floatingBuy = OrderProfit();
            lastLotSizeBuy = OrderLots();
            nBuy +=1;
         }
      }
      double lotSize = 0.01;
      if (nBuy == 0 && floatingBuy < 0){
         //Marti lot size nya ya...
         lotSize = lastLotSizeBuy * 2.0; //martingale 2.0
         //Alert ("Belajar code MQL t.me/codeMQL");
      }

      Untuk belajar code MQL silakan klik link : t.me/codeMQL
       
      Meskipun ane bukan pecinta strategi trading martingale.
      namun pembahasan ini sangat bagus untuk menambah wawasan.
       
      bagaimana caranya menghitung bahwa akumulasi buy/sell profit sekian PIPS atau profit sekian DOLLAR, jadi close berdasarkan net pips atau net money.

      Buat input untuk mengisi nilai profit yang diinginkan:

      Code:
      input double targetProfit=1.5;//--- nilai profit dalam USD ---

      Kemudian gunakan data target profit tersebut untuk closing:

      Code:
      if(OrderProfit()+OrderCommission()+OrderSwap()>=targetProfit) closeAllOP();

      Bila perlu menghitung profit dari beberapa OP sekaligus maka bisa digunakan kode berikut:

      Code:
      if(profitTotal()>=targetProfit) closeAllOP();

      Dan berikut ini function untuk menghitung profitTotal-nya:

      Code:
      //--- function untuk menghitung profit ---
      double profitTotal() {
      double pt=0;
      for(int i=0;i<OrdersTotal();i++){
      if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
      if(OrderSymbol()==_Symbol) pt+=OrderProfit()+OrderCommission()+OrderSwap();
      }
      return(pt);
      }

      Semoga penjelasan singkat di atas, bermanfaat bagi teman-teman, happy trading .. Have a nice day :)
       
      Bagaimana fungsi untuk multiply lot by step?

      contoh:
      order 1 lot 0.01,
      order 2 lot 0.01,
      order 3 lot 0.02
      dst.

      jadi multiply 1.33 per trade bukan full dobel lot tiap trade. high risk sekali
       
      gimana cara nya membuka posisi averaging atau martingale memakai indikator jangan melulu menggunakan jarak dari buy terbawah atau sell tertinggi ,, ada yang tau ga ya cara penulisan membuka posisi averaging menggunakan indikator atau memakai Support dan resistance

      mohobnb di bantu ,, udah nyari tahu kemana mana tidak nemu,
       
      gimana cara nya membuka posisi averaging atau martingale memakai indikator jangan melulu menggunakan jarak dari buy terbawah atau sell tertinggi ,, ada yang tau ga ya cara penulisan membuka posisi averaging menggunakan indikator atau memakai Support dan resistance

      mohobnb di bantu ,, udah nyari tahu kemana mana tidak nemu,

      ini kan udah dijelaskan sama master trancexe kalau buka posisi bisa pakai signal

      upload_2024-9-10_22-6-50.png
       

      Attachments

      • upload_2024-9-10_22-6-50.png
        upload_2024-9-10_22-6-50.png
        71.4 KB · Views: 21
      Back
      Top