Strategi Nevalyashka BreakdownLevel untuk MetaTrader 5: Panduan Lengkap

Mike 2017.08.10 21:51 16 0 0
Lampiran

Pengarang ideaVladimir Khlystov, pengarang kod MQL5barabashkakvn.

Strategi perdagangan ini berfokus kepada breakout dari High/Low dalam selang waktu yang ditentukan. Untuk memulihkan posisi yang rugi, EA ini menggunakan strategi "Nevalyashka" dan teknik martingale untuk meningkatkan jumlah lot.

EA ini mengira harga High dan Low dalam selang waktu yang ditentukan dari "Time start" hingga "Time end":

Nevalyashka BreakdownLevel

Jika harga melebihi High dalam tempoh ini, posisi BUY akan dibuka. Jika harga berada di bawah Low, posisi SELL akan dibuka. StopLoss ditetapkan pada batas yang bertentangan dalam tempoh tersebut, iaitu pada harga Low untuk posisi BUY dan pada harga High untuk posisi SELL. TakeProfit ditetapkan berdasarkan ketinggian tempoh kawalan.

Jika Use time close ditetapkan kepada benar, parameter Time close (masa untuk menutup semua posisi) akan aktif.

Hanya jam dan minit diambil kira untuk parameter "Time start", "Time end" dan "Time close".

Pantauan penutupan oleh StopLoss dilakukan dalam OnTradeTransaction.

Apabila "DEAL_ENTRY_OUT" dijumpai, semak ruangan komen transaksi tersebut. Jika komen mengandungi "sl", ini bermakna transaksi ditutup oleh StopLoss:

      if(deal_symbol==m_symbol.Name() && deal_magic==m_magic)
         if(deal_entry==DEAL_ENTRY_OUT)
           {
            MqlDateTime str1;
            TimeToStruct(TimeCurrent(),str1);
            //--- terdapat kemungkinan ini adalah penutupan pada TakeProfit
            if(StringFind(deal_comment,"tp",0)!=-1 || deal_profit>=0.0)
              {
               TradeDey=str1.day;
               return;
              }
            //--- terdapat kemungkinan ini adalah penutupan pada StopLoss
            if(StringFind(deal_comment,"sl",0)!=-1)
              {
               if(TradeDey!=str1.day)
                 {
                  Print("Penutupan StopLoss telah dikesan!");

                  double loss=MathAbs(deal_profit/m_symbol.TickValue()/deal_volume);

                  if(deal_type==DEAL_TYPE_SELL) // posisi buy ditutup
                {
                     double SL=m_symbol.Bid()+loss*m_symbol.Point();
                     double TP=m_symbol.Bid()-loss*m_symbol.Point();
                     double Lot=LotCheck(deal_volume*InpK_martin);
                     if(Lot==0.0)
                        return;
                     OpenSell(SL,TP,Lot,"Nevalyashka");

                  if(deal_type==DEAL_TYPE_BUY) // posisi sell ditutup
                    {
                     double SL=m_symbol.Ask()-loss*m_symbol.Point();
                     double TP=m_symbol.Ask()+loss*m_symbol.Point();
                     double Lot=LotCheck(deal_volume*InpK_martin);
                     if(Lot==0.0)
                        return;
                     OpenBuy(SL,TP,Lot,"Nevalyashka");
                    }
                  return;
              }
      }
      }

Buka posisi yang bertentangan dengan yang ditutup (jika jenis transaksi adalah "DEAL_TYPE_SELL", maka posisi BUY telah ditutup; "DEAL_TYPE_BUY" bermaksud bahawa posisi SELL ditutup), dengan jumlah lot yang ditingkatkan yang didarabkan dengan K. martin. Jika posisi ditutup dengan keuntungan positif, Expert Advisor akan menunggu masa permulaan tempoh seterusnya "Time end", dan mengulangi prosedur di atas.

Parameter "No loss" bermaksud breakeven; apabila separuh dari keuntungan posisi dicapai, StopLoss akan dipindahkan ke harga pembukaan posisi.

Contoh jika menguji pada EURUSD,M30:

Nevalyashka BreakdownLevel test EURUSD M30

Senarai
Komen 0