Open Forex4you Account

Server รัน EA 1000 / ปี

สั่งชื้อคู่มือการโปรแรกม MQL4

Author Topic: ตั้ง Takeprofit เป็นเปอร์เซ็นต์ของพอร์ตยังไงครับ  (Read 17435 times)

momocoong

  • Newbie
  • *
  • Posts: 26
    • MyFacebook
โมอยากจะตั้ง Takeprofit มห้เป็น % ของจำนวนเงินทั้งหมดอ่ะครับ

แบบว่าพอปิดออร์เดอร์แล้วก็ได้กำไรเท่า % นั้นๆเลยอ่ะครับ

แต่ ปล.ครับ กรณีมีหลายออร์เดอร์ครับ เช่น

ออร์เดอร์ที่ 1 Lots 0.01 ติดลบอยู่
ออร์เดอร์ที่ 2 Lots 0.03 ติดลบอยู่
ออร์เดอร์ที่ 3 Lots 0.09 กำลังบวก

คือต้องการคำนวณ Takeprofit ให้ปิดออร์เดอร์ทั้ง 3 ออร์เดอร์นี้ให้ได้กำไรเป็น % ของพอร์ตอ่ะครับ
จะคำนวณยังไงดี จนปัญญาแล้วจิงๆ :(

momocoong

  • Newbie
  • *
  • Posts: 26
    • MyFacebook
โมอยากจะตั้ง Takeprofit มห้เป็น % ของจำนวนเงินทั้งหมดอ่ะครับ

แบบว่าพอปิดออร์เดอร์แล้วก็ได้กำไรเท่า % นั้นๆเลยอ่ะครับ

แต่ ปล.ครับ กรณีมีหลายออร์เดอร์ครับ เช่น

ออร์เดอร์ที่ 1 Lots 0.01 ติดลบอยู่
ออร์เดอร์ที่ 2 Lots 0.03 ติดลบอยู่
ออร์เดอร์ที่ 3 Lots 0.09 กำลังบวก

คือต้องการคำนวณ Takeprofit ให้ปิดออร์เดอร์ทั้ง 3 ออร์เดอร์นี้ให้ได้กำไรเป็น % ของพอร์ตอ่ะครับ
จะคำนวณยังไงดี จนปัญญาแล้วจิงๆ :(

เอาแบบตั้ง Takeprofit คำนวณออกมาเป็น จำนวนจุดน่ะครับ
เพระาว่าถ้าใช้แบบ เอา Profit มารวมกันแล้วปิดออร์เดอร์ทั้งหมด มันจะปิดได้ไม่หมดถ้าหากเกิดการกระชากของกราฟน่ะครับ
« Last Edit: กันยายน 11, 2012, 02:04:59 am by momocoong »

linconz

  • VIP
  • Sr. Member
  • *
  • Posts: 357
extern double expectpercent = 5.0;


double pfpercent=accountprofit()*100/accountbalance();

if (expectpercent > pfpercent)

 closeall();

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
ไม่มีไรยาก ก็ต้องรวม lot ทั้งหมดแล้วหาราคาเปิด เฉลี่ยทั้ง 3 Order ก่อนว่าเป็นเท่าไร จากนั่น เราได้ขนาดของ lot รวมแล้วเราก็จะรู้ว่าถ้าราคาขึ้นลง 1 จุด ตัวเงินจะเพิ่มลดเท่าไร จากนั่น ให้คำนวณหาว่าถ้าเราต้องการกำไร เป็น % ของ Balance นี้เท่ากับตัวเงินเท่าไร ก็ให้นำมาหารด้วย ตัวเงินที่เกิดจากการเปิด lot ที่พูดไปเมื่อกี้ว่าราคาขึ้นลง 1 จุดตัวเงินเปลี่ยนแปลงเท่าไร พอหารเสร็จเราจะได้ผลลัพธ์ที่เป้นจุด ว่าถ้าราคาวิ่งไปกี่จุดจากราคาเปิดเฉลี่ยทั้ง 3 Orderแล้วเท่ากับผลกำไรที่คิดเป้น % ของ Balance   จากนั้นเราก็ตั้งราคาปิดได้แล้ว โม

phoenicis

  • Newbie
  • *
  • Posts: 27
อันนี้จาก EA ของผมนะครับ ThePhoenicis 127

Code: [Select]
void TheTakeProfit()
{
   if (BuyOrders == 0 && SellOrders == 0)
   {
      gi57640 = AccountEquity();
   }else
   {
      gi57640 = AccountBalance();
   }
   double val1 = AccountEquity() - gi57640;
     if (val1>0)
     {
         double percent33 = (val1 *100) / gi57640;
         if (percent33>TakeProfitPercentage)
         {
               int total = OrdersTotal();
               for(int i=total-1;i>=0;i--)
                {
                   if(OrderSelect(i, SELECT_BY_POS))
                   {
                      if (OrderSymbol()==Symbol())
                      {
                         if (OrderMagicNumber() == magic)
                         {
                           RefreshRates();
                           int ticket = OrderClose(OrderTicket(), OrderLots(),NormalizeDouble(OrderClosePrice(),Digits), Slippage, Red );
                           if(ticket>0)
                           {
                             Print("Order : ",OrderTicket(), " closed by Group order TakeProfit : " , TakeProfitPercentage , " % ($", DoubleToStr(val1,2) ," /$",  DoubleToStr(gi57640,2) ,")");
                           }
                           else Print("Error close order : ",GetLastError());
                         }
                      }
                   }
                }
         }
   
     }   
}

แต่ถ้าอยากทำตาม Admin ข้างบนก็ได้นะครับ แถมยังสามารถเพิ่มให้มัน set TP ได้เลย เพราะรู้ราคาที่จะปิดแน่นอน
ที่ผมไม่ทำแบบ SET TP เพราะขี้เกียจไปเขียนฟังก์ชั่น เพราะบางโบรกเรื่องมาก ในเรื่องพวก PIP ต่ำสุดที่จะปิด หรือ เวลาปิดไรพวกนี้

momocoong

  • Newbie
  • *
  • Posts: 26
    • MyFacebook
แก้ปัญหาได้แล้วครับ
"ข้าน้อยยังอ่อนด้อยวิชายิ่งนัก หากมีเรื่องอันใดให้ช่วย ข้าน้อยจักมาใหม่นะขอรับ"

ขอบคุณท่านพี่ๆทั้งหลายขอรับ :)