Nevalyashka_BreakdownLevel: ระบบเทรดที่คุณต้องรู้!

Mike 2017.08.10 21:51 12 0 0
ไฟล์แนบ

ผู้คิดค้นไอเดียVladimir Khlystov, ผู้เขียนโค้ด MQL5barabashkakvn.

กลยุทธ์การเทรด: การทะลุผ่านจุดสูง/ต่ำในช่วงเวลาที่เลือก ใช้ระบบการเทรด "Nevalyashka" และเทคนิคมาร์ติงเกลในการเพิ่มล็อตเพื่อกู้คืนตำแหน่งที่ขาดทุน

ระบบจะคำนวณราคาสูงและต่ำในช่วงเวลาที่กำหนดจาก "Time start" ถึง "Time end":

Nevalyashka BreakdownLevel

ถ้าราคาเกินจุดสูงในช่วงนี้ จะมีการเปิดตำแหน่ง BUY ถ้ารราคาต่ำกว่าจุดต่ำ จะมีการเปิดตำแหน่ง SELL โดยตั้ง StopLoss ไว้ที่ขอบตรงข้ามของช่วงเวลา เช่นที่ราคาต่ำสำหรับตำแหน่ง BUY และที่ราคาสูงสำหรับตำแหน่ง SELL ส่วน TakeProfit จะถูกตั้งตามความสูงของช่วงควบคุม

ถ้า Use time close ถูกตั้งเป็นจริง พารามิเตอร์ Time close (เวลาปิดตำแหน่งทั้งหมด) จะถูกเปิดใช้งาน

จะพิจารณาแค่ชั่วโมงและนาทีสำหรับพารามิเตอร์ "Time start", "Time end" และ Time close

การปิดตำแหน่งด้วย StopLoss จะถูกตรวจสอบใน OnTradeTransaction

เมื่อพบ "DEAL_ENTRY_OUT" (การออกจากการเข้า) ให้ตรวจสอบช่องคอมเมนต์ของดีลนี้ หาก คอมเมนต์มี "sl" หมายความว่าดีลถูกปิดโดย StopLoss:

      if(deal_symbol==m_symbol.Name() && deal_magic==m_magic)
         if(deal_entry==DEAL_ENTRY_OUT)
           {
            MqlDateTime str1;
            TimeToStruct(TimeCurrent(),str1);
            //--- มีโอกาสที่การปิดนี้จะเป็นการปิดที่ TakeProfit
            if(StringFind(deal_comment,"tp",0)!=-1 || deal_profit>=0.0)
              {
               TradeDey=str1.day;
               return;
              }
            //--- มีโอกาสที่การปิดนี้จะเป็นการปิดที่ StopLoss
            if(StringFind(deal_comment,"sl",0)!=-1)
              {
               if(TradeDey!=str1.day)
                 {
                  Print("ตรวจพบการปิดด้วย StopLoss!");

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

                  if(deal_type==DEAL_TYPE_SELL) // ตำแหน่งซื้อถูกปิด
                {
                     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) // ตำแหน่งขายถูกปิด
                    {
                     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;
              }
          }

เปิดตำแหน่งตรงข้ามกับตำแหน่งที่ถูกปิด (ถ้าประเภทดีลคือ "DEAL_TYPE_SELL" หมายความว่าตำแหน่ง BUY ถูกปิด; "DEAL_TYPE_BUY" หมายความว่าตำแหน่ง SELL ถูกปิด) ด้วยล็อตที่เพิ่มขึ้นโดยคูณด้วย K. martin. หากตำแหน่งถูกปิดด้วยกำไรเชิงบวก ระบบจะรอเวลาเริ่มต้นของช่วงถัดไป "Time end", และทำซ้ำกระบวนการข้างต้น

 "No loss" หมายถึงจุดคุ้มทุน; เมื่อได้กำไรจากตำแหน่งครึ่งหนึ่ง StopLoss จะถูกย้ายไปที่ราคาที่เปิดตำแหน่ง

ตัวอย่างหากทดสอบใน EURUSD,M30:

Nevalyashka BreakdownLevel test EURUSD M30

    รายการ
    ความคิดเห็น 0