ทุกครั้งที่มีการเปลี่ยนแปลงราคา Server จะส่งสัญญาณกลับมายัง Client ฟังก์ชั่น start จะทำงาน
int start () { /* สมมติว่าเราได้วิเคราะห์สัญญาณแล้วปรากฏว่าถึงจุดที่เราจะต้องทำการปิด Order */ /* ทำการเรียกฟังก์ชั่นเพื่อปิด Order จากตัวอย่างจะทำการปิด Order ซึ่งมีการเปิดแบบ BUY */ if(closeOrder(OP_BUY)) { /* ปิด Order สำเร็จ Order */ } else { /* ปิด Order ไม่สำเร็จสำเร็จ Order */ } return(0); }
จากตัวอย่างฟังก์ชั่น closeOrder นี้ เป็นการปิด Order แรก Order เดียว
bool closeOrder(int cmd) {
int count_close = 0;
double sp,price;
bool result;
int error;
string XSymbol;
int order_totals;
int i,count;
/* วนลูปเพื่อตรวจสอบ Order */
for(i=0;i<OrdersTotal();i++) {
/* เลือกตรวจสอบเฉพาะ Order ที่กำลังเปิดอยู่ */
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {
/* เลือกตรวจสอบเฉพาะคู่เงินที่ตรงกับคู่ที่ EA รันอยู่ */
if(OrderSymbol()==Symbol()) {
/* ตรวจอบว่า Order เปิดแบบตรงกับที่ต้องการปิดรึปล่าว */
if(cmd==OrderType()) {
count = 0;
result=false;
/* วนลูปจนกว่าจะปิด Order ได้ แต่ไม่เกิน 5 ครั้ง */
while ((result == false) && (count < 5)) {
/* เก็บค่าของ Order ที่กำลังตรวจสอบ*/
XSymbol = OrderSymbol();
/* ถ้า Order เปิดแบบ BUY จะอ่านค่าราคา Bid ที่จะปิด */
if(cmd==OP_BUY) price=MarketInfo(XSymbol,MODE_BID);
/* ถ้า Order เปิดแบบ SELL จะอ่านค่าราคา ASK ที่จะปิด */
if(cmd==OP_SELL) price=MarketInfo(XSymbol,MODE_ASK);
sp = GetSlippage(XSymbol);
/* ส่งคำสั่งเพื่อปิด Order */
result=OrderClose(OrderTicket(),OrderLots(),price,sp,CLR_NONE);
/* ถ้าไม่สามารถปิด Order ได้ */
if(!result) {
error=GetLastError();
Print("LastError = ",error," price=",price," Slippage=",sp);
if(error==129 || error==135 || error==146 || error==138) { RefreshRates(); }
/* สามารถปิด Order ได้ */
} else {
/* ส่งค่า true กลับไป */
return (true);
}
count++;
}
/* ไม่สามารถปิด Order ได้ ส่งค่า false กลับ */
return (false);
}
}
}
}
}
ฟังก์ชั่น GetSlippage ใช้คำนวนหาค่าความต่างของราคา ask กับ bid ว่าต่างกันกี่จุด
double GetSlippage(string XSymbol) { /* อ่านค่า ราคา Bid */ double bid = MarketInfo(XSymbol,MODE_BID); /* อ่านค่าราคา Ask */ double ask = MarketInfo(XSymbol,MODE_ASK); /* อ่านค่า point */ double point = MarketInfo(XSymbol,MODE_POINT); return((ask-bid)/point); }
มาถึงตอนนี้ก็จะได้ฟังก์ชั่นเปิดและปิด Order แล้ว ที่เหลือก็จะเป็นการใส่เทคนิคในการตรวจสอบสัญญาณซื้อขาย ซึ่งขึ้นอยู่กับแต่ละคนว่าจะใช้เครื่องมือไหน ขอบคุณสำหรับการติดตามครับ
QUANTUM BINARY SIGNALS
ตอบลบGet professional trading signals sent to your cell phone every day.
Follow our signals today and earn up to 270% per day.