EA Programing => ปัญหาที่พบในการเขียน EA => Topic started by: momocoong on กันยายน 07, 2012, 01:55:16 pm

Title: ตั้ง Takeprofit เป็นเปอร์เซ็นต์ของพอร์ตยังไงครับ
Post by: momocoong on กันยายน 07, 2012, 01:55:16 pm
โมอยากจะตั้ง Takeprofit มห้เป็น % ของจำนวนเงินทั้งหมดอ่ะครับ

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

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

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

คือต้องการคำนวณ Takeprofit ให้ปิดออร์เดอร์ทั้ง 3 ออร์เดอร์นี้ให้ได้กำไรเป็น % ของพอร์ตอ่ะครับ
จะคำนวณยังไงดี จนปัญญาแล้วจิงๆ :(
Title: Re: ตั้ง Takeprofit เป็นเปอร์เซ็นต์ของพอร์ตยังไงครับ
Post by: momocoong on กันยายน 07, 2012, 01:59:08 pm
โมอยากจะตั้ง Takeprofit มห้เป็น % ของจำนวนเงินทั้งหมดอ่ะครับ

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

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

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

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

เอาแบบตั้ง Takeprofit คำนวณออกมาเป็น จำนวนจุดน่ะครับ
เพระาว่าถ้าใช้แบบ เอา Profit มารวมกันแล้วปิดออร์เดอร์ทั้งหมด มันจะปิดได้ไม่หมดถ้าหากเกิดการกระชากของกราฟน่ะครับ
Title: Re: ตั้ง Takeprofit เป็นเปอร์เซ็นต์ของพอร์ตยังไงครับ
Post by: linconz on กันยายน 07, 2012, 07:13:44 pm
extern double expectpercent = 5.0;


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

if (expectpercent > pfpercent)

 closeall();
Title: Re: ตั้ง Takeprofit เป็นเปอร์เซ็นต์ของพอร์ตยังไงครับ
Post by: admin on กันยายน 07, 2012, 07:15:04 pm
ไม่มีไรยาก ก็ต้องรวม lot ทั้งหมดแล้วหาราคาเปิด เฉลี่ยทั้ง 3 Order ก่อนว่าเป็นเท่าไร จากนั่น เราได้ขนาดของ lot รวมแล้วเราก็จะรู้ว่าถ้าราคาขึ้นลง 1 จุด ตัวเงินจะเพิ่มลดเท่าไร จากนั่น ให้คำนวณหาว่าถ้าเราต้องการกำไร เป็น % ของ Balance นี้เท่ากับตัวเงินเท่าไร ก็ให้นำมาหารด้วย ตัวเงินที่เกิดจากการเปิด lot ที่พูดไปเมื่อกี้ว่าราคาขึ้นลง 1 จุดตัวเงินเปลี่ยนแปลงเท่าไร พอหารเสร็จเราจะได้ผลลัพธ์ที่เป้นจุด ว่าถ้าราคาวิ่งไปกี่จุดจากราคาเปิดเฉลี่ยทั้ง 3 Orderแล้วเท่ากับผลกำไรที่คิดเป้น % ของ Balance   จากนั้นเราก็ตั้งราคาปิดได้แล้ว โม
Title: Re: ตั้ง Takeprofit เป็นเปอร์เซ็นต์ของพอร์ตยังไงครับ
Post by: phoenicis on กันยายน 10, 2012, 11:28:21 am
อันนี้จาก 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 ต่ำสุดที่จะปิด หรือ เวลาปิดไรพวกนี้
Title: Re: ตั้ง Takeprofit เป็นเปอร์เซ็นต์ของพอร์ตยังไงครับ
Post by: momocoong on กันยายน 11, 2012, 02:07:15 am
แก้ปัญหาได้แล้วครับ
"ข้าน้อยยังอ่อนด้อยวิชายิ่งนัก หากมีเรื่องอันใดให้ช่วย ข้าน้อยจักมาใหม่นะขอรับ"

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