ปิดคำสั่งทั้งหมดเมื่อการขาดทุนถึงเปอร์เซ็นต์ที่กำหนด - ระบบเทรดสำหรับ MetaTrader 4

Mike 2016.01.13 19:24 11 0 0
ไฟล์แนบ

ในโพสต์นี้เราจะมาแนะนำวิธีการปิดคำสั่งทั้งหมดใน MetaTrader 4 เมื่อการขาดทุนถึงเปอร์เซ็นต์ที่กำหนด ซึ่งจะช่วยให้คุณจัดการความเสี่ยงได้ดีขึ้น

เพียงแค่กรอกหมายเลขมิติของคำสั่ง (หากต้องการควบคุมคำสั่งทั้งหมดให้ใส่ 0) และกำหนดเปอร์เซ็นต์สูงสุดของการขาดทุนที่คุณยอมรับได้ เพื่อให้โค้ดทำการปิดคำสั่งเมื่อถึงระดับนั้น

คุณสามารถเรียกใช้ฟังก์ชัน DD_close เพื่อใช้งานโค้ดนี้ได้เลย

ไฟล์หัวเรื่องที่แนบมานี้คือโค้ดของ EA ที่สร้างจากโค้ดนี้

// เพื่อใช้ตัวเลือกนี้คุณเพียงแค่ต้องเรียกใช้ฟังก์ชัน : ( DD_close ) 
//+------------------------------------------------------------------+
//|                 ขอบเขตทั่วไป                                 |
//+------------------------------------------------------------------+
bool Close_All_V;
//+------------------------------------------------------------------+
//|                 ฟังก์ชันหลัก                                   |
//+------------------------------------------------------------------+
// DD:    เปอร์เซ็นต์การขาดทุน ที่ 100 หมายถึงไม่ปิดคำสั่งใดๆ
// Magic_Number: หมายเลข EA ของคุณ ใส่ 0 เพื่อควบคุมคำสั่งทั้งหมด
void DD_close(int DD,int Magic_Number)
  {
   if(DD(Magic_Number)>=DD)
      Close_All_V=true;
   if(Close_All_V)
      Close_All(Magic_Number);
  }
//+------------------------------------------------------------------+
//|                 ตรวจสอบการปิด                                   |
//+------------------------------------------------------------------+
void Check_Close(int Check_Number) // ตรวจสอบการปิดคำสั่ง
  {
   if(Check_Number<0) Print("OrderClose failed with error: ",ErrorDescription(GetLastError()));
   else Close_All_V=false;
  }
//+------------------------------------------------------------------+
//|                 ปิดทั้งหมด                                     |
//+------------------------------------------------------------------+
void Close_All(int M_N)
  {
   int Loop=0;
   for(int i=0; Loop<OrdersTotal(); i++)
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         Loop++;
         if(OrderSymbol()==Symbol())
            if(OrderMagicNumber()==M_N || OrderMagicNumber()==0)
              {
               if(OrderType()==OP_BUY)
                  Check_Close(OrderClose(OrderTicket(),OrderLots(),Bid,100,clrNONE));
               if(OrderType()==OP_SELL)
                  Check_Close(OrderClose(OrderTicket(),OrderLots(),Ask,100,clrNONE));
              }
        }
  }
//+------------------------------------------------------------------+
//|                 คำนวณการขาดทุน                               |
//+------------------------------------------------------------------+
double Loss(int M_N)
  {
   double re=0;
   int Loop=0;
   for(int i=0; Loop<OrdersTotal(); i++)
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         Loop++;
         if(OrderSymbol()==Symbol())
            if(OrderMagicNumber()==M_N || OrderMagicNumber()==0)
               re=re+OrderProfit();
        }
   return re * -1;
  }
//+------------------------------------------------------------------+
//|                 คำนวณเปอร์เซ็นต์การขาดทุน                  |
//+------------------------------------------------------------------+
double DD(int M_N)
  {
   return ( 100 / AccountBalance ( ) ) * Loss ( M_N );
  }
//+------------------------------------------------------------------+
รายการ
ความคิดเห็น 0