EA Programing => ปัญหาที่พบในการเขียน EA => Topic started by: TvT on กุมภาพันธ์ 25, 2011, 06:54:09 pm

Title: ถามเกี่ยวกับการเลือก order
Post by: TvT on กุมภาพันธ์ 25, 2011, 06:54:09 pm
ถ้าเกิดส่งออเดอร์ไปเป็น limit order แล้วจะสามารถเลือก selectorder ได้หรือไม่
คือเป้าหมายเพื่อ หา lot ที่ีส่งไป และตรวจสอบว่ามีอยู่หรือไม่ แสดงผลเป็น true false หรือ 0-1 ก็ได้
Title: Re: ถามเกี่ยวกับการเลือก order
Post by: TvT on กุมภาพันธ์ 26, 2011, 11:29:34 pm
ถ้าตั้ง
double x=0
x=ordersend (....................................)
orderselect (x,....)
lot= orderlot
ถูกมั๊ยครับ จะเลือกออดเดอร์นี้ แต่สงสัยจะรู้ได้ไงว่าเปิดไปรึยังจะได้ตั้งใหม่
Title: Re: ถามเกี่ยวกับการเลือก order
Post by: admin on กุมภาพันธ์ 26, 2011, 11:55:24 pm
 for(int i=0;i<OrdersTotal();i++)
   {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

     if(OrderType( ) ==OP_BUYLIMIT)
        {
          lots=OrdersLots();
        }
   
   }
Title: Re: ถามเกี่ยวกับการเลือก order
Post by: TvT on กุมภาพันธ์ 27, 2011, 12:35:12 am
แล้วถ้าอยากรู้ว่าที่ตั้งไว้เปิดไปรึยังนี่ต้องทำไงอ่ะครับ
Title: Re: ถามเกี่ยวกับการเลือก order
Post by: admin on กุมภาพันธ์ 27, 2011, 12:39:22 am
ก้ต้องสร้างฟังก์ชั่นขึ้นมาอีกตัวครับเพื่อ check ชนิดของ order ที่มัน pending อยู่ครับว่ามันมีอะไรเหลืออยู่มั้ง
Title: Re: ถามเกี่ยวกับการเลือก order
Post by: TvT on มีนาคม 01, 2011, 10:01:05 pm
ต้องใช้ฟังชั่นอะไรในการตรวจสอบครับ ว่า pending เหลืออยู่หรือไม่
Title: Re: ถามเกี่ยวกับการเลือก order
Post by: admin on มีนาคม 02, 2011, 02:04:00 am
ต้องใช้ฟังชั่นอะไรในการตรวจสอบครับ ว่า pending เหลืออยู่หรือไม่
ต้องสร้างขึ้นมาใช้เองครับ

   int buystop=0;
   int  sellstop =0;
   for(int i=0;i<OrdersTotal();i++)
   {
     OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
     if(OrderType()==OP_BUYSTOP)
     buystop+=1;
    
     if(OrderType()==OP_SELLSTOP)
     sellstop+=1;
  
   }
แล้วเอาค่า sellstop หรือ buystop ไปใช้

  
Title: Re: ถามเกี่ยวกับการเลือก order
Post by: TvT on มีนาคม 06, 2011, 12:34:45 pm
เอาไปใช้แล้วไม่ได้น่ะครับ คืออยากให้เลือกดูว่า Op_Buylimit ที่สั่งไว้เปิดไปรึยัง
เพื่อหาค่า Orderopenprice ที่เปิดไปแล้วค่าล่าสุดเอามาใช้คำนวนกำไร
Title: Re: ถามเกี่ยวกับการเลือก order
Post by: admin on มีนาคม 06, 2011, 12:58:58 pm
ก็ต้องเปลี่ยนจาก OP_BUYSTOP เป็น OP_BUYLIMIT ก่อนสิครับ code บางครั้งผมยกตัวอย่างมาต้องนำไปปรับแก้ไขเองด้วยนะครับ
Title: Re: ถามเกี่ยวกับการเลือก order
Post by: TvT on มีนาคม 06, 2011, 01:16:51 pm
ลองแล้วครับแต่มันแยกระหว่างเปิดแล้วกับยังไม่เปิดไม่ได้
คือ  อยากได้เฉพาะที่เปิดไปแล้วครับ
Title: Re: ถามเกี่ยวกับการเลือก order
Post by: admin on มีนาคม 06, 2011, 02:10:33 pm
ถ้าคุณอยากได้แบบนั่นก็เขียนเงื่อนไขเพิ่มแบบนี้เลยสิครับ
if(OrderType()==OP_BUY)
 buy+=1;
if(OrderType()==OP_SELL)
 sell+=1;
เอาไวดูว่า order ที่เปิดไปแล้วมีอะไรมั้ง
ส่วน order ที่ยังไม่เปิดก็ใช้แบบเดิมแล้วก็ใช้ ตัวแปรนับเหมือนกัน คุณก็จะรู้ว่า order ที่เปิดไปแล้วมีอะไรมั้ง แล้วก็ order ที่ยัง pending อยู่มีอะไรมั้ง
Title: Re: ถามเกี่ยวกับการเลือก order
Post by: TvT on มีนาคม 06, 2011, 02:32:18 pm
อันนี้ครับคือตัวที่ผมเขียนคล้ายๆๆ FxDoublelot แต่ผมติดตรงการปิด order ผมใช้ two
ยังไงช่วยเปลี่ยนจาก two เป็น orderopenprice ของ order ที่เปิดล่าสุดทีนะครับ
พยายามแก้มาหลายทีแล้วไม่รู้จะเอาค่านั้นมาใช้ยังไง
Title: Re: ถามเกี่ยวกับการเลือก order
Post by: D_Diamond on มีนาคม 06, 2011, 05:47:49 pm
เมื่อเราวางเพนดิ้งไว้  มันจะเป็น BUYLIMIT และเมื่อราคาวิ่งมาชน BUYLIMIT จะแปลงร่างเป็น BUY
หลังจากนั้นเราจะไม่มีทางรู้เลย ว่าเราเคยวาง BUYLIMIT ไว้หรือเปล่า  ออเดอร์บายอันนี้มันเปิดด้วยเพนดิ้งหรือเปล่า

ดังนั้นมันจะมีอยู่่2สถานะครับ คือต้องนับว่า มี Buylimit เปิดอยู่กี่อัน มี Buy เปิดอยู่กี่อัน

ถ้า Buylimit ไม่มี  Buy ก็ไม่มี  แสดงว่าอีเอยังไม่ทำงาน  หรือปิดกำไรได้หมดแล้ว  รอเริ่มบายใหม่
ถ้า Buylimit ไม่มี  Buy มี       แสดงว่าเปิดออเดอร์ล่าสุดไปแล้ว  ต้องวางเพนดิ้งใหม่ในสเตปต่อไป
ถ้า Buylimit มี     Buy ไม่มี    แสดงว่าปิดกำไรไปแล้ว  ต้องลบเพนดิ้งทิ้ง ไม่งั้นมันเบิ้ลต่อ
Title: Re: ถามเกี่ยวกับการเลือก order
Post by: TvT on มีนาคม 07, 2011, 09:12:17 am
หลักการคิดนี่เข้าใจอยู่ครับ แต่ไม่เข้าใจว่าจะรู้ได้ไงว่า
Buylimit ไม่มี Buy มี แสดงว่าเปิดออเดอร์ล่าสุดไปแล้ว
แล้วก็จะเอา orderopenprice ของออเดอร์ล่าสุดที่เปิดไปแล้ว
Title: Re: ถามเกี่ยวกับการเลือก order
Post by: admin on มีนาคม 07, 2011, 01:41:34 pm
หลักการคิดนี่เข้าใจอยู่ครับ แต่ไม่เข้าใจว่าจะรู้ได้ไงว่า
Buylimit ไม่มี Buy มี แสดงว่าเปิดออเดอร์ล่าสุดไปแล้ว
แล้วก็จะเอา orderopenprice ของออเดอร์ล่าสุดที่เปิดไปแล้ว
ลองเอา code นี้ไปทดสอบดูครับ

 static int buy;
 static int sell;
 static int buylimit;
 static int selllimit;
 int start()
 {
     buy =0;
     sell =0;
    buylimit =0;
    selllimit =0;
 
   for(int i=0;i<OrdersTotal();i++)
   {
     OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
     if(OrderType()==OP_BUYSTOP)
     buylimit+=1;
     
     if(OrderType()==OP_SELLSTOP)
     selllimit+=1;
     
     if(OrderType()==OP_BUY)
     buy+=1;
     
     if(OrderType()==OP_SELLSTOP)
     sell+=1;
   
   }
   
   Print("buy :",buy);
   Print("buylimit :",buylimit);
   Print("sell :",sell);
   Print("selllimit :",selllimit);


}

ใน code เราสั่งให้มันเก็บค่า buy buylimit sell selllimt เอาไวในตัวแปรแบบ static ถ้าอยากรู้ว่ามี order ไหนมั้งก็แค่ลองสั่ง print ค่าออกมาดูไงครับ