Open Forex4you Account

Server รัน EA 1000 / ปี

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

Author Topic: ถามการใช้คำสั่งครับ  (Read 10148 times)

TvT

  • Full Member
  • ***
  • Posts: 133
ถามการใช้คำสั่งครับ
« on: กุมภาพันธ์ 06, 2011, 11:57:19 pm »
คือผมต้องการ ดึงค่า ask ขณะนั้นๆ ไปตั้ง
pending order ตอนนี้ลองใช้วิธีนี้ ปัญหาคือ ไม่สามารถทำงานได้

            {
            ticket = OrderSend(Symbol(),OP_BUYLIMIT,1,Ask,0,pc - cut,pc + tp,"Buy",0,expire,Green);
            OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
            Print("buy");
            return(0);
            }


ดูเหมือนไม่สามารถใส่ลงมาโดยตรง ไม่แน่ใจว่าต้องแก้ยังไงครับ
รบกวนช่วยบอกวิธีแก้ทีครับ

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: ถามการใช้คำสั่งครับ
« Reply #1 on: กุมภาพันธ์ 07, 2011, 01:30:53 am »
pending order ไม่สามารถนำค่า ask หรือ bid มาตั้งเลยได้ครับเพราะเป็นการตั้ง order ให้เปิดล่วงหน้าโดย order นั่นต้องมี ราคาที่ห่างจากปัจจุบันอย่างน้อยตามที่แต่ละโบรเกอรืกำหนดครับ

TvT

  • Full Member
  • ***
  • Posts: 133
Re: ถามการใช้คำสั่งครับ
« Reply #2 on: กุมภาพันธ์ 07, 2011, 06:33:28 pm »
มีคำแนะนำไหมครับ
 (fxopen) ถ้าจะใช้วิธี ให้ EA ตั้งแบบรอรับซื้อแทน (ที่ลงไปผิดนะครับ จะให้รับที่ bid)  
หรือต้องใช้วิธีให้จำค่า ask และเวลาขณะนั้นเช่น
double memo , time(จะบันทึกเวลาต้องใช้ double ถูกไหมครับ);
if (A)
 {memo = bid;
   time = CurTime();
บันทึก memo,time ลงเครื่อง(ใช้คำสั่งอะไรครับ) , อันนี้คิดไวเผื่อเวลาปิดโปรแกรมเปิดใหม่  (ไม่มีก็ไม่น่ามีผล)
  }
if (B)
 {memo = ask;
   time = CurTime();   
บันทึก memo,time ลงเครื่อง(ใช้คำสั่งอะไรครับ) , อันนี้คิดไวเผื่อเวลาปิดโปรแกรมเปิดใหม่ (ไม่มีก็ไม่น่ามีผล)
  }
เรียก memo,time (ใช้คำสั่งอะไรครับ)

if (A) && ((CurTime() - time) > 600(ในที่นี้รอไม่เกินสิบนาที)) && (ask < memo) (long เมื่อราคา ask < ราคาที่กำหนดไว้)
                  {
                  ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,2,Ask - cut,Ask + tp,"Buy",0,0,Green);
                  OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
                  Print("buy");
                  return(0);
                  } 
if (B) && ((CurTime() - time) > 600(ในที่นี้รอไม่เกินสิบนาที))  && (bid > memo)(short เมื่อราคา bid > ราคาที่กำหนดไว้)
                  {
                  ticket = OrderSend(Symbol(),OP_SELL,lots,Bid,2,Bid + cut,Bid - tp,"sell",0,0,Red);
                  OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
                  Print("sell");                 
                  return(0);
                  }   

วิธีนี้พอจะทำให้ได้ราคาที่มากกว่าราคา ask เดิม / น้อยกว่า bid เดิม (ซัก 1-2 ช่อง)
พอจะทำได้ไหมครับ

ขอคำแนะนำคำสั่งบางอย่างด้วยครับ
ขอบคุณครับ
« Last Edit: กุมภาพันธ์ 07, 2011, 08:35:42 pm by TvT »

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: ถามการใช้คำสั่งครับ
« Reply #3 on: กุมภาพันธ์ 08, 2011, 01:36:45 pm »
(จะบันทึกเวลาต้องใช้ double ถูกไหมครับ)
ใช้ datatime ครับ

จะเก็บค่า time ลงเครื่องจะใช้อะไร
จริงๆๆ ประกาศตัวแปร  static datetime time ไวส่วนบนของ code ก็พอครับ เพราะตัวแปร static จะจำค่าไวจนกว่าเราจะปิด ea ครับ