Open Forex4you Account

Server รัน EA 1000 / ปี

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

Author Topic: สอบถามเรื่อง order ครับ  (Read 7161 times)

pa_don

  • Newbie
  • *
  • Posts: 37
สอบถามเรื่อง order ครับ
« on: เมษายน 15, 2011, 10:32:10 pm »
คือถ้าเปิดorderแล้วติดลบซัก 20 จุดให้เปิดเซลต้องเขียนไงครับ

for(int i=0;i<OrdersTotal();i++)
               {
                  OrderSelect( i,SELECT_BY_POS,MODE_TRADES) ;
                  if(Ask<-20){
                  Print("opensell :",i);
                  }
               }
คือผมไม่รู้จะเอาค่าติดลบจาก orderที่เปิดอยู่มาอ้างอิงยังไงครับ adminช่วยทีครับ

อีกข้อครับ ถ้าผมอยากให้ ea หน่วงการเข้าเทรด สมมุติว่าสัญญาณเทรดเข้าแล้ว แต่อยากให้ดูแท่งเทียนซัก2แท่ง ถ้าเกิดเป็นบวกให้เข้าเทรดเลย ถ้าเป็นลบก็ไม่ต้องเทรดครับ

รบกวน2ข้อนี้ครับ ขอadminยกตัวอย่างให้ดูหน่อยครับ ขอบคุณครับ

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: สอบถามเรื่อง order ครับ
« Reply #1 on: เมษายน 16, 2011, 03:56:00 pm »
ต้องถามก่อนครับว่าจะเรียกค่าที่ติด ลบ ของ order ที่เปิดอยู่ order ไหนขึ้นมาครับหรือว่าเปิดครั้งละ 1 order ส่วนของที่ 2 มีหลายวิธีที่ทำได้ครับ วิธีที่ง่ายที่สุดคือการใช้ Sleep ครับ
เช่น

// ตรวจสอบค่าอินครั้งแรกถ้าเข้าเงื่อนไข

 Sleep((Period( ) *60000)*จำนวนแท่งเทียนที่จะให้หยุดรอ)
 ลองใช้ง่ายๆๆแบบนี้ก่อนคือให้EA มันหยุดที่ตำแหน่งที่มันตรวจสอบเงื่อนไขพบเลยครับ จากนั่นรอว่าเวลาผ่านไปตามที่คุณกำหนดก็ให้ตรวสอบอีกครั้ง
//// ตรวจสอบค่าอินครั้งที่2ถ้าเข้าเงื่อนไขก็เปิด order ถ้าไม่ก็จบโปรแกรมไปครับ

pa_don

  • Newbie
  • *
  • Posts: 37
Re: สอบถามเรื่อง order ครับ
« Reply #2 on: เมษายน 16, 2011, 04:09:27 pm »
เปิดครั้งละ1order ครับ

ตอนนี้ผมเขียนเทียบค่าได้แล้วครับ

double pips = Ask - OrderOpenPrice();
if(pips < -0.00021)
                           {
                              OrderSelect(ticket,SELECT_BY_POS,MODE_TRADES);
                              OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,Blue);
                              pips = 0.00000;
                           }
แต่ปัญหาต่อมาก็คือว่า มันดันเก็บค่าทศนิยม4ตำแหน่งคับ ผมเขียนกับโบรก5ตำแหน่ง
มีคำสั่งในการเก็บ ทศนิยมห้าจุดมั้ยคับ พอดีว่า ผมลองprint ค่า Ask ออกมามันมี 4 ตำแน่งอ่ะคับเช่น

ราคาปัจจุบัน 1.34414 แต่ว่าลองปริ้นค่า ask ออกมาดู มันดันเป็น 1.3441

ขอบคุณครับ

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: สอบถามเรื่อง order ครับ
« Reply #3 on: เมษายน 16, 2011, 04:19:50 pm »
ตอน print มันจะแสดงแค่ 4 ตำแหน่งถ้าตัวแปรนั่นเป้น double ครับแต่ถ้าอยากให้มันเป็น 5 ตำแหน่งให้เปลี่ยนเป็น string แบบนี้ Print("Ask", DoubleToStr(Ask,5));
ถ้าคุณอยากรู้ว่าในระบบมันเก็บ 4 ตำแหน่งหรือค่าตำแหน่งก็ลองให้มัน บวกลบ ดูก่อนจากนั่นใช้คำสั่ง print แล้วเปลี่ยนค่าที่ได้เป็น String ก่อนค่อยให้มัน print ออกมาครับ