มาดูฟังก์ชั่นในการเปิด Order ซึ่งเป็นฟังก์ชั่นหลักฟังก์ชั่นหนี่งของ EA ก็ว่าได้ เพราะถ้าฟังก์ชั่นนี้ทำงานผิดพลาดนั่นหมายถึงหายนะกำลังมาเยือน เพราะฉะนั้นต้องมั่นใจว่าฟังก์ชั่นนี้จะไม่ทำงานผิดพลาด ไม่ว่าสถานการณ์ของตลาดจะผันผวนก็ตาม
/* ฟังก์ชั่นนี้จะทำงานเมื่อมีสัญญาณมาจากฝั่ง Server */
int start(){
/* เมื่อเราตรวจสอบราคาด้วยอินดิเคเตอร์ใดๆแล้ว แล้วถึงจุดที่ต้องการเปิด Order */
/* ยกตัวอย่าง ถ้าต้องการเปิด ORDER BUY และ Lotsize เท่ากับ 1
openOrder(OP_BUY,1);
/* ยกตัวอย่าง ถ้าต้องการเปิด ORDER SELL และ Lotsize เท่ากับ 1
openOrder(OP_SELL,1);
return(0);
}
/* ฟังก์ชั่นสำหรับเปิด Order
bool openOrder(int cmd,double lot,double tp=0.0) {
int ticket,count;
int error;
double price;
count = 0;
ticket = -1;
/* วนลูปเพื่อส่งคำสั่งซื้อจนกว่าจะเปิด Order ได้ แต่ไม่เกิน 5 ครั้ง */
while((ticket<0) && (count < 5)){
/* ถ้าเป็นคำสั่ง BUY ให้ซื้อที่ Ask */
if(cmd==OP_BUY) price=Ask;
/* ถ้าเป็นคำสั่ง SELL ให้ซื้อที่ Bid */
else price=Bid;
/* ถ้าเป็นคำสั่ง BUY */
if(cmd==OP_BUY){
ticket=OrderSend(Symbol(),OP_BUY,lot,price,3,0.0,tp,NULL,255,0,CLR_NONE);
/* ตรวจสอบว่าเปิด Order สำเร็จรึปล่าว */
if(ticket<0){
error = GetLastError();
Print("Error:Send Buy Order LastError = ",error," price=",price);
/* ถ้า error code เกี่ยวกับราคาที่เปลี่ยนไปจากราคาที่ต้องการให้อ่านค่าใหม่ */
if(error==129 || error==135 || error==146 || error==138){
RefreshRates();
}
}else{
/* ได้รับค่า ticket แสดงว่าเปิด Order สำเร็จ */
return (true);
}
/* ถ้าเป็นคำสั่ง SELL */
}else {
ticket=OrderSend(Symbol(),OP_SELL,lot,price,3,0.0,tp,NULL,255,0,CLR_NONE);
if(ticket<0 ){
error = GetLastError();
Print("Error:Send Sell Order LastError = ",error," price=",price);
if(error==129 || error==135 || error==146 || error==138){
RefreshRates();
}
}else {
/* เปิด Order สำเร็จ */
return (true);
}
}
/* เปิด Order ไม่สำเร็จกับไปเปิดใหม่ */
count++;
}
/* ไม่สามารถเปิด Order ได้ */
return (false);
}
พยายามคิดการทำงานออกมาให้เป็นส่วนๆ แต่ละส่วนทำงานแยกขาดออกจากกัน จะทำให้เราได้ฟังก์ชั่นที่สามารถนำเอาไปใช้ทำงานร่วมกับ EA ตัวอื่นได้ ขอให้สนุกับการเขียน EA ครับ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น