Open Forex4you Account

Server รัน EA 1000 / ปี

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

Author Topic: ถามเกี่ยวกับการเลือก order  (Read 20294 times)

TvT

  • Full Member
  • ***
  • Posts: 133
ถามเกี่ยวกับการเลือก order
« on: กุมภาพันธ์ 25, 2011, 06:54:09 pm »
ถ้าเกิดส่งออเดอร์ไปเป็น limit order แล้วจะสามารถเลือก selectorder ได้หรือไม่
คือเป้าหมายเพื่อ หา lot ที่ีส่งไป และตรวจสอบว่ามีอยู่หรือไม่ แสดงผลเป็น true false หรือ 0-1 ก็ได้

TvT

  • Full Member
  • ***
  • Posts: 133
Re: ถามเกี่ยวกับการเลือก order
« Reply #1 on: กุมภาพันธ์ 26, 2011, 11:29:34 pm »
ถ้าตั้ง
double x=0
x=ordersend (....................................)
orderselect (x,....)
lot= orderlot
ถูกมั๊ยครับ จะเลือกออดเดอร์นี้ แต่สงสัยจะรู้ได้ไงว่าเปิดไปรึยังจะได้ตั้งใหม่

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: ถามเกี่ยวกับการเลือก order
« Reply #2 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();
        }
   
   }

TvT

  • Full Member
  • ***
  • Posts: 133
Re: ถามเกี่ยวกับการเลือก order
« Reply #3 on: กุมภาพันธ์ 27, 2011, 12:35:12 am »
แล้วถ้าอยากรู้ว่าที่ตั้งไว้เปิดไปรึยังนี่ต้องทำไงอ่ะครับ

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: ถามเกี่ยวกับการเลือก order
« Reply #4 on: กุมภาพันธ์ 27, 2011, 12:39:22 am »
ก้ต้องสร้างฟังก์ชั่นขึ้นมาอีกตัวครับเพื่อ check ชนิดของ order ที่มัน pending อยู่ครับว่ามันมีอะไรเหลืออยู่มั้ง

TvT

  • Full Member
  • ***
  • Posts: 133
Re: ถามเกี่ยวกับการเลือก order
« Reply #5 on: มีนาคม 01, 2011, 10:01:05 pm »
ต้องใช้ฟังชั่นอะไรในการตรวจสอบครับ ว่า pending เหลืออยู่หรือไม่

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: ถามเกี่ยวกับการเลือก order
« Reply #6 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 ไปใช้

  

TvT

  • Full Member
  • ***
  • Posts: 133
Re: ถามเกี่ยวกับการเลือก order
« Reply #7 on: มีนาคม 06, 2011, 12:34:45 pm »
เอาไปใช้แล้วไม่ได้น่ะครับ คืออยากให้เลือกดูว่า Op_Buylimit ที่สั่งไว้เปิดไปรึยัง
เพื่อหาค่า Orderopenprice ที่เปิดไปแล้วค่าล่าสุดเอามาใช้คำนวนกำไร

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: ถามเกี่ยวกับการเลือก order
« Reply #8 on: มีนาคม 06, 2011, 12:58:58 pm »
ก็ต้องเปลี่ยนจาก OP_BUYSTOP เป็น OP_BUYLIMIT ก่อนสิครับ code บางครั้งผมยกตัวอย่างมาต้องนำไปปรับแก้ไขเองด้วยนะครับ

TvT

  • Full Member
  • ***
  • Posts: 133
Re: ถามเกี่ยวกับการเลือก order
« Reply #9 on: มีนาคม 06, 2011, 01:16:51 pm »
ลองแล้วครับแต่มันแยกระหว่างเปิดแล้วกับยังไม่เปิดไม่ได้
คือ  อยากได้เฉพาะที่เปิดไปแล้วครับ

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: ถามเกี่ยวกับการเลือก order
« Reply #10 on: มีนาคม 06, 2011, 02:10:33 pm »
ถ้าคุณอยากได้แบบนั่นก็เขียนเงื่อนไขเพิ่มแบบนี้เลยสิครับ
if(OrderType()==OP_BUY)
 buy+=1;
if(OrderType()==OP_SELL)
 sell+=1;
เอาไวดูว่า order ที่เปิดไปแล้วมีอะไรมั้ง
ส่วน order ที่ยังไม่เปิดก็ใช้แบบเดิมแล้วก็ใช้ ตัวแปรนับเหมือนกัน คุณก็จะรู้ว่า order ที่เปิดไปแล้วมีอะไรมั้ง แล้วก็ order ที่ยัง pending อยู่มีอะไรมั้ง

TvT

  • Full Member
  • ***
  • Posts: 133
Re: ถามเกี่ยวกับการเลือก order
« Reply #11 on: มีนาคม 06, 2011, 02:32:18 pm »
อันนี้ครับคือตัวที่ผมเขียนคล้ายๆๆ FxDoublelot แต่ผมติดตรงการปิด order ผมใช้ two
ยังไงช่วยเปลี่ยนจาก two เป็น orderopenprice ของ order ที่เปิดล่าสุดทีนะครับ
พยายามแก้มาหลายทีแล้วไม่รู้จะเอาค่านั้นมาใช้ยังไง

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
Re: ถามเกี่ยวกับการเลือก order
« Reply #12 on: มีนาคม 06, 2011, 05:47:49 pm »
เมื่อเราวางเพนดิ้งไว้  มันจะเป็น BUYLIMIT และเมื่อราคาวิ่งมาชน BUYLIMIT จะแปลงร่างเป็น BUY
หลังจากนั้นเราจะไม่มีทางรู้เลย ว่าเราเคยวาง BUYLIMIT ไว้หรือเปล่า  ออเดอร์บายอันนี้มันเปิดด้วยเพนดิ้งหรือเปล่า

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

ถ้า Buylimit ไม่มี  Buy ก็ไม่มี  แสดงว่าอีเอยังไม่ทำงาน  หรือปิดกำไรได้หมดแล้ว  รอเริ่มบายใหม่
ถ้า Buylimit ไม่มี  Buy มี       แสดงว่าเปิดออเดอร์ล่าสุดไปแล้ว  ต้องวางเพนดิ้งใหม่ในสเตปต่อไป
ถ้า Buylimit มี     Buy ไม่มี    แสดงว่าปิดกำไรไปแล้ว  ต้องลบเพนดิ้งทิ้ง ไม่งั้นมันเบิ้ลต่อ
« Last Edit: มีนาคม 06, 2011, 05:54:06 pm by D_Diamond »

TvT

  • Full Member
  • ***
  • Posts: 133
Re: ถามเกี่ยวกับการเลือก order
« Reply #13 on: มีนาคม 07, 2011, 09:12:17 am »
หลักการคิดนี่เข้าใจอยู่ครับ แต่ไม่เข้าใจว่าจะรู้ได้ไงว่า
Buylimit ไม่มี Buy มี แสดงว่าเปิดออเดอร์ล่าสุดไปแล้ว
แล้วก็จะเอา orderopenprice ของออเดอร์ล่าสุดที่เปิดไปแล้ว

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: ถามเกี่ยวกับการเลือก order
« Reply #14 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 ค่าออกมาดูไงครับ