EA Programing => ปัญหาที่พบในการเขียน EA => Topic started by: kusitnas on พฤศจิกายน 09, 2012, 08:11:10 am

Title: เรื่อง Lot ครับ
Post by: kusitnas on พฤศจิกายน 09, 2012, 08:11:10 am
ตอนนี้ ผมใช้ exness cent มันให้เปิดได้สูงสุดแค่ 1.0 Lot
แต่เราคำนวณแล้ว ว่า ให้เปิด 1.5 Lot จะเขียนลูปยังไง ให้เช็ค
และเปิดออกมา 2 ออเดอร์ครับ 1.0 Lot กับ 0.5 Lot
ขอบคุณครับ
Title: Re: เรื่อง Lot ครับ
Post by: weva1234 on พฤศจิกายน 09, 2012, 02:34:59 pm
ตอนนี้ ผมใช้ exness cent มันให้เปิดได้สูงสุดแค่ 1.0 Lot
แต่เราคำนวณแล้ว ว่า ให้เปิด 1.5 Lot จะเขียนลูปยังไง ให้เช็ค
และเปิดออกมา 2 ออเดอร์ครับ 1.0 Lot กับ 0.5 Lot
ขอบคุณครับ

if (Lot > 1.0)

    double lot1  =  1.0;
    double lot2  =  Lot -1.0;
   
   OrderSend(Symbol(), OP_BUY,lot1   , Ask, 3, 0, 0, "", 0, 0, Green);
   OrderSend(Symbol(), OP_BUY,lot2   , Ask, 3, 0, 0, "", 0, 0, Green);


}
Title: Re: เรื่อง Lot ครับ
Post by: kusitnas on พฤศจิกายน 09, 2012, 03:06:17 pm
ตอนนี้ ผมใช้ exness cent มันให้เปิดได้สูงสุดแค่ 1.0 Lot
แต่เราคำนวณแล้ว ว่า ให้เปิด 1.5 Lot จะเขียนลูปยังไง ให้เช็ค
และเปิดออกมา 2 ออเดอร์ครับ 1.0 Lot กับ 0.5 Lot
ขอบคุณครับ

if (Lot > 1.0)

    double lot1  =  1.0;
    double lot2  =  Lot -1.0;
   
   OrderSend(Symbol(), OP_BUY,lot1   , Ask, 3, 0, 0, "", 0, 0, Green);
   OrderSend(Symbol(), OP_BUY,lot2   , Ask, 3, 0, 0, "", 0, 0, Green);


}


อ้อ ขอโทษครับ
คือผมใช้การคำนวณ Lot ดังนี้ครับ

   Lots=NormalizeDouble(AccountFreeMargin()*MaxRisk/MarketInfo(Symbol(),MODE_MARGINREQUIRED),2);
   if (Lots<=MarketInfo(Symbol(),MODE_MINLOT)) Lots=MarketInfo(Symbol(),MODE_MINLOT);
   if (Lots>=MarketInfo(Symbol(),MODE_MAXLOT)) Lots=MarketInfo(Symbol(),MODE_MAXLOT);

แล้วพอมันเกิน Max Lot อยากให้โปรแกรมทำการคำนวณว่าต้อง เปิด กี่ครั้ง และเศษ ครับ
Title: Re: เรื่อง Lot ครับ
Post by: weva1234 on พฤศจิกายน 09, 2012, 04:13:00 pm
ตอนนี้ ผมใช้ exness cent มันให้เปิดได้สูงสุดแค่ 1.0 Lot
แต่เราคำนวณแล้ว ว่า ให้เปิด 1.5 Lot จะเขียนลูปยังไง ให้เช็ค
และเปิดออกมา 2 ออเดอร์ครับ 1.0 Lot กับ 0.5 Lot
ขอบคุณครับ

if (Lot > 1.0)
{  
    double lot1  =  1.0;
    double lot2  =  Lot -1.0;
  
   OrderSend(Symbol(), OP_BUY,lot1   , Ask, 3, 0, 0, "", 0, 0, Green);
   OrderSend(Symbol(), OP_BUY,lot2   , Ask, 3, 0, 0, "", 0, 0, Green);


}


อ้อ ขอโทษครับ
คือผมใช้การคำนวณ Lot ดังนี้ครับ

   Lots=NormalizeDouble(AccountFreeMargin()*MaxRisk/MarketInfo(Symbol(),MODE_MARGINREQUIRED),2);
   if (Lots<=MarketInfo(Symbol(),MODE_MINLOT)) Lots=MarketInfo(Symbol(),MODE_MINLOT);
   if (Lots>=MarketInfo(Symbol(),MODE_MAXLOT)) Lots=MarketInfo(Symbol(),MODE_MAXLOT);

แล้วพอมันเกิน Max Lot อยากให้โปรแกรมทำการคำนวณว่าต้อง เปิด กี่ครั้ง และเศษ ครับ


double  LotMax = NormalizeDouble(MarketInfo(Symbol(),MODE_MAXLOT),2);
double  LotMin  = NormalizeDouble(MarketInfo(Symbol(),MODE_MINLOT),2);

 if (Lots > LotMax )
{
   int iLoop  =  NormalizeDouble(Lots/ LotMax,0) ;
   double  lots2  =  NormalizeDouble(Lots%LotMax,2);
  
for (int x = 0 ; x<iLoop  ; x++)
{
  OrderSend(Symbol(), OP_BUY,LotMax , Ask, 3, 0, 0, "", 0, 0, Green);
}
 
if (lots2   > 0.0)
{
  if (lots2   < LotMin  )
     OrderSend(Symbol(), OP_BUY,LotMin  , Ask, 3, 0, 0, "", 0, 0, Green);
  else
     OrderSend(Symbol(), OP_BUY,lots2    , Ask, 3, 0, 0, "", 0, 0, Green);
}

}
else
{
  if (Lots < LotMin )  Lots  = LotMin  ;
   OrderSend(Symbol(), OP_BUY,Lots  , Ask, 3, 0, 0, "", 0, 0, Green);
}
Title: Re: เรื่อง Lot ครับ
Post by: kusitnas on พฤศจิกายน 09, 2012, 05:35:26 pm
เข้าใจละ ขอบคุณครับ