Open Forex4you Account

Server รัน EA 1000 / ปี

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

Author Topic: ขอวิธีดึงข้อมูล order จาก server ครับ  (Read 16920 times)

BenooB

  • Newbie
  • *
  • Posts: 26
ขอวิธีดึงข้อมูล order จาก server ครับ
« on: พฤษภาคม 27, 2011, 06:48:15 am »
เป็นสมาชิกใหม่ครับ พอดีไปดูจาก EA ตัวเดิมๆที่เคยเห็นคนโพสต์แล้วสงสัย code ที่ใช้ มี 2 ตัวนะครับ
1. Fxdoublelots (ใช้จนเจ๊งกันหลายจริง ตัวนี้)
ดูจาก code ต้นแบบใช้ดูเหมือนจะใช้วิธีจำข้อมูล จาก back test พอเปิดไปนานๆ จะมี หยุดเทรดเป็นช่วงๆ
จึงต้องการสอบถามว่า ถ้าต้องการด฿งข้อมูลจาก server ว่า

order ที่เปิดล่าสุดเป็น buy หรือ sell , เปิดกี่ lots , เปิดที่ราคาเท่าไร
(ตามรูปแบคือ ถ้าเปิด ที่  1 แล้วราคาลงมาที่ขุดล่าสุดตามรูป )  จะต้องใช้ code อะไรในการดึงข้อมูล ขอโค๊ดด้วยครับ

BenooB

  • Newbie
  • *
  • Posts: 26
Re: ขอวิธีดึงข้อมูล order จาก server ครับ
« Reply #1 on: พฤษภาคม 27, 2011, 06:48:49 am »


2. UK hunter (ของ demoinvest จาก thailandinvestorclub , เห็นบอกเจ๊งแล้วเหมือนกัน)
ระบบจะเป็นตามรูป อยากรู้ว่า code ที่ใช้ดึงข้อสัญญาที่ปิดไปแล้วล่าสุด ต้องใช้ code อะไรครับ
order buy หรือ sell , เปิดกี่ lots , กำไร, ขาดทุนเท่าไร

ขอบคุณครับ พอดีหา code ส่วนนี้ไม่เจอ อ่านที่เขาแจกแล้วไม่เข้าใจครับ

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: ขอวิธีดึงข้อมูล order จาก server ครับ
« Reply #2 on: พฤษภาคม 27, 2011, 10:57:55 am »
หลักการก็เหมือนการดึงข้อมูลที่ยังเปิดนั่นหละครับแต่ใช้ code ลักษณะนี้ครับ
OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY); // เรียกดู order ที่ปิดไปล่าสุด   
จากนั่นก็เรียกดูค่า lot ค่า sl tp ด้วยฟังก์ชั่น OrdersLot OrdersTp OrdersSl ได้เหมือนเวลาเราเรียกดู order ที่ยังเปิดอยู่ครับ 

BenooB

  • Newbie
  • *
  • Posts: 26
Re: ขอวิธีดึงข้อมูล order จาก server ครับ
« Reply #3 on: พฤษภาคม 27, 2011, 05:49:32 pm »
ขอโทษครับยังไม่เข้าใจ แบบนี้ถูกไหมครับสำหรับ ข้อมูล orderที่ปิดไปแล้วล่าสุด

double lot;
double way;//buy = 1 , sell = 2 //
double lastprice; // ราคาที่เปิด //
OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY)
 {
 lot = OrdersLot;(แบบนี้จะได้ lot ล่าสุดที่ปิดไปแล้วใช่ไหมครับ)
 way = (อันนี้ต้องทำยังไงให้ได้ค่า 1 ,2 ครับ)
 lastprice = orderopenprice;
 }

ถูกไหมครับ


แล้วถ้าต้องการ order ล่าสุดที่ยังเปิดอยู่ต้องแก้เป็นแบบไหนครับ
การเรียกข้อมูลนี่ จะสามารถเก็บได้นานแค่ไหนครับ เช่นวันจันทร์ ยังสามารถเรียกข้อมูลของวันศุกร์ได้ไหมครับ

ขอบคุณท่าน admin ที่ช่วยตอบครับ ถ้าช่วยลง code ให้เลยจะขอบคุณมากครับ , ตอนนี้พยายามดูจากกระทู้เก่าๆครับ

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: ขอวิธีดึงข้อมูล order จาก server ครับ
« Reply #4 on: พฤษภาคม 27, 2011, 07:27:18 pm »
OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY);
 lot = OrderLots();
 way = OrderType();// 0 = buy 1 =sell
 lastprice = OrderOpenPrice();
 

ถ้าอยาได้ order สุดท้ายที่เปิดล่าสุดใช่แบบนี้แล้วทุกอย่างเหมือนกัน
OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES);

BenooB

  • Newbie
  • *
  • Posts: 26
Re: ขอวิธีดึงข้อมูล order จาก server ครับ
« Reply #5 on: พฤษภาคม 27, 2011, 09:11:28 pm »
OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY);
 lot = OrderLots();
 way = OrderType();// 0 = buy 1 =sell
 lastprice = OrderOpenPrice();
 

ถ้าอยาได้ order สุดท้ายที่เปิดล่าสุดใช่แบบนี้แล้วทุกอย่างเหมือนกัน
OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES);

ขอโทษนะครับงงกับคำตอบครับ
ไม่ต้องใช้ {} เลยหรือครับตรง ต้องใส่แล้ว return ค่าไหมครับ
OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY);
 {
 lot = OrderLots();
 way = OrderType();// 0 = buy 1 =sell
 lastprice = OrderOpenPrice();
 }

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: ขอวิธีดึงข้อมูล order จาก server ครับ
« Reply #6 on: พฤษภาคม 27, 2011, 10:34:17 pm »
ไม่ต้องใช้ครับเพราะมันไม่ใช้เงื่อนไข ครับ ส่วนจะ return 0 หรือไม่ return 0 ต้องดูว่าคุณเขียน code ไวที่ฟังก์ชั่นที่มีการคืนค่าหรือเปล่าด้วยนะครับ  ถ้าคุณเขียนอยู่ในฟังก์ชั่น int start() มันก็ต้องมีการ return ค่าที่เป็น int ออกมาก่อนจบ ฟังก์ชั่นอยู่แล้ว ครับ

BenooB

  • Newbie
  • *
  • Posts: 26
Re: ขอวิธีดึงข้อมูล order จาก server ครับ
« Reply #7 on: พฤษภาคม 28, 2011, 06:01:41 am »

ขอถามเพิ่มครับ
ถ้าใช้

OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES);
     lot = OrderLots();
     lastprice = OrderOpenPrice();

จากรูปข้างบน  (Fxdoublwlots) ถ้ามีหลายสัญญา(0.1,0.2,0.4)
    ราคาจะเป็นของเฉลี่ยของทุกสัญญา หรือ เฉพาะ 0.4
    lots ด้วยครับจะเป็น 0.4 หรือ 0.7 ครับ
ถ้าเรามี buy/selllimit จะต้องใช้คำสั่งอะไรตรวจครับ (รู้จักแต่ ordertotal() อะ  ???)

//////////////////////////////////
อันนี้ของสัญญาที่ปิดแล้วครับ
และจาก
 
OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY);
 lot = OrderLots();
 way = OrderType();// 0 = buy 1 =sell
 lastprice = OrderOpenPrice();
ผลกำไรขาดทุนใช้คำสั่งอะไรครับ
« Last Edit: พฤษภาคม 28, 2011, 06:09:36 am by BenooB »

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: ขอวิธีดึงข้อมูล order จาก server ครับ
« Reply #8 on: พฤษภาคม 28, 2011, 12:36:55 pm »
ขอถามเพิ่มครับ
ถ้าใช้

OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES);
     lot = OrderLots();
     lastprice = OrderOpenPrice();

จากรูปข้างบน  (Fxdoublwlots) ถ้ามีหลายสัญญา(0.1,0.2,0.4)
    ราคาจะเป็นของเฉลี่ยของทุกสัญญา หรือ เฉพาะ 0.4
ตอบ เฉพาะตัวล่าสุดครับคือ 0.4 ถ้าต้องการ 0.2 ก็ต้องใช้ OrdersTotal()-2 ครับ   
ถ้าเรามี buy/selllimit จะต้องใช้คำสั่งอะไรตรวจครับ (รู้จักแต่ ordertotal() อะ  )
ตอบ ใช้ OrderType() ตรวจได้ครับ ค่าที่ได้ออกมา
OP_BUY         = 0
OP_SELL        = 1
OP_BUYLIMIT    = 2
OP_BUYSTOP     = 3
OP_SELLLIMIT   = 4
OP_SELLSTOP    = 5


//////////////////////////////////
อันนี้ของสัญญาที่ปิดแล้วครับ
และจาก
 
OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY);
 lot = OrderLots();
 way = OrderType();// 0 = buy 1 =sell
 lastprice = OrderOpenPrice();
ผลกำไรขาดทุนใช้คำสั่งอะไรครับ
ตอบใช้  OrderProfit( )

TvT

  • Full Member
  • ***
  • Posts: 133
Re: ขอวิธีดึงข้อมูล order จาก server ครับ
« Reply #9 on: พฤษภาคม 29, 2011, 09:55:41 am »
ผมเคยใช้คำสั่ง OrderSelect(OrdersTotal(),SELECT_BY_POS,MODE_TRADES); ไม่มี -1
แตกต่างจากที่แอดมินแนะนำในนี้รึปล่าวครับ
แล้วก็กรณีที่ไม่มีการเปิดออเดอร์อยู่จะไม่มีค่าออกมาหรือปล่าว ส่งค่าเก่าออกมา