ทำไมแท่งเทียน MT5 เดียวกันถึงดูต่างกันได้บนบัญชีโบรกเกอร์ต่างกัน
ทำไมแท่งเทียน MT5 ค่า SMA สัญญาณอินดิเคเตอร์ และพฤติกรรม EA จึงอาจต่างกันระหว่างบัญชีโบรกเกอร์ แม้ชื่อสัญลักษณ์จะดูเหมือนกันก็ตาม
ทำไมแท่งเทียน MT5 ถึงอาจแตกต่างกัน
แท่งเทียนไม่ใช่ข้อมูลตลาดสากลเสมอไป
เมื่อผู้คนเริ่มสร้างบอทเทรดหรืออินดิเคเตอร์ใน MetaTrader 5 ครั้งแรก มักจะคิดได้ง่ายว่าแท่งเทียนคือข้อมูลตลาดแบบสากล
ตัวอย่างเช่น คุณอาจคิดว่า:
"แท่ง H1 เวลา 20:00 ของวันที่ 6 พฤษภาคม 2026 ควรเหมือนกันทุกที่"
แต่ในทางปฏิบัติ นั่นไม่ได้เป็นจริงเสมอไป
คุณอาจมีเทอร์มินัล MT5 สองตัวรันอยู่คนละประเทศ ทั้งคู่แสดงแท่งเทียนเหมือนกัน แล้วคุณไปเปิดอีกบัญชีกับโบรกเกอร์และสัญลักษณ์ที่ดูเหมือนกัน แต่จู่ ๆ ค่าเปิด/ปิด ค่า SMA หรือสัญญาณอินดิเคเตอร์กลับต่างกันเล็กน้อย
บทความนี้อธิบายว่าทำไมจึงเกิดขึ้น.
ความเข้าใจผิด: MT5 ได้รับแท่งเทียนที่ปิดสมบูรณ์แล้ว
กราฟสดถูกสร้างจากทิกและโควต
ความเชื่อที่พบบ่อยคือ MetaTrader 5 ได้รับข้อมูลแท่งเทียนแบบนี้:
โบรกเกอร์ส่ง:
แท่ง H1 เวลา 20:00
Open = 3300.20
High = 3312.50
Low = 3298.10
Close = 3306.80
แต่โดยปกติกราฟสดไม่ได้ทำงานแบบนั้น
บนกราฟสด MT5 จะได้รับสตรีมของการอัปเดตราคาจากโบรกเกอร์ การอัปเดตเหล่านี้มักเรียกว่า ticks หรือ quotes
จากนั้นเทอร์มินัลจะใช้ราคาที่เข้ามาเพื่อสร้างแท่งเทียนปัจจุบัน
ดังนั้นแทนที่จะได้รับแท่ง H1 ที่สมบูรณ์ MT5 จะได้รับการอัปเดตราคาสดแบบนี้:
20:00:01 price = 3300.20
20:00:08 price = 3301.10
20:01:15 price = 3302.70
20:02:03 price = 3299.80
...
20:59:47 price = 3306.80
จากนั้น MT5 จะสร้างแท่งเทียนจากราคานั้น.
แท่งเทียนสดถูกสร้างอย่างไร
เวลาในแท่งเทียนคือจุดเริ่มต้นของช่วงเวลา
สมมติว่าเรากำลังดูแท่ง H1 ที่มีเวลา:
2026.05.06 20:00
นั่นไม่ได้หมายความว่าแท่งเทียนเกิดขึ้นเฉพาะตอน 20:00 เป๊ะ ๆ เท่านั้น
มันหมายความว่าแท่งเทียนครอบคลุมช่วงเวลาที่เริ่มที่ 20:00 และสิ้นสุดก่อนที่แท่ง H1 ถัดไปจะเริ่ม
พูดง่าย ๆ คือ:
แท่งเวลา 20:00 = ราคาตั้งแต่ 20:00:00 จนถึงก่อน 21:00:00
แท่งเทียนถูกสร้างดังนี้:
Open = ราคาแรกที่ได้รับในชั่วโมงนั้น
High = ราคาสูงสุดที่ได้รับในชั่วโมงนั้น
Low = ราคาต่ำสุดที่ได้รับในชั่วโมงนั้น
Close = ราคาล่าสุดที่ได้รับในชั่วโมงนั้น
ขณะที่แท่งเทียนยังสดอยู่ ค่า close ยังไม่ใช่ค่าสุดท้าย
ค่า close จะเปลี่ยนไปทุกครั้งที่มีราคาใหม่เข้ามา.
ตัวอย่างแท่งเทียนที่กำลังก่อตัว
ค่า close จะเปลี่ยนจนกว่าแท่งเทียนจะสมบูรณ์
ตัวอย่างเช่น:
20:00:01
Open = 3300.20
High = 3300.20
Low = 3300.20
Close = 3300.20
20:10:00
Open = 3300.20
High = 3305.40
Low = 3299.80
Close = 3303.10
20:45:00
Open = 3300.20
High = 3312.50
Low = 3298.10
Close = 3309.70
20:59:47
Open = 3300.20
High = 3312.50
Low = 3298.10
Close = 3306.80
เมื่อแท่ง H1 ถัดไปเริ่มขึ้น แท่งก่อนหน้าจะถือว่าปิดแล้ว
ในทางปฏิบัติ มักเกิดขึ้นเมื่อมีทิกแรกของชั่วโมงถัดไปเข้ามา.
ใครเป็นคนกำหนดค่าปิดสุดท้ายของแท่งเทียน?
ฟีดจากโบรกเกอร์และเวลาเซิร์ฟเวอร์เป็นตัวกำหนดกราฟ
ค่าปิดสุดท้ายของแท่งเทียนถูกกำหนดโดยฟีดราคาสดและเวลาเซิร์ฟเวอร์ของโบรกเกอร์
เทอร์มินัล MT5 ของคุณสร้างกราฟในเครื่อง แต่สร้างจากข้อมูลที่ส่งมาจากเซิร์ฟเวอร์ของโบรกเกอร์
ดังนั้นแท่งเทียนสุดท้ายจึงเป็นผลรวมของ:
ฟีดราคาจากโบรกเกอร์
+ เวลาเซิร์ฟเวอร์ของโบรกเกอร์
+ สเปกของสัญลักษณ์
+ การตั้งค่าเซสชันการซื้อขาย
+ สตรีมทิก/โควตที่เทอร์มินัลได้รับ
ตำแหน่งทางกายภาพของคุณโดยทั่วไปไม่ค่อยมีผล
เทรดเดอร์ในลอนดอนและเทรดเดอร์ในแอฟริกาใต้สามารถเห็นแท่งเทียนเดียวกันได้เป๊ะ หากเชื่อมต่อไปยังเซิร์ฟเวอร์โบรกเกอร์เดียวกัน ใช้ประเภทบัญชีเดียวกัน และใช้สัญลักษณ์เดียวกัน
แต่หากเป็นคนละเซิร์ฟเวอร์โบรกเกอร์หรือคนละเขตอำนาจของบัญชี ก็อาจได้แท่งเทียนที่ต่างกัน.
ตัวอย่าง: โบรกเกอร์เดียวกัน แต่ภูมิภาคบัญชีต่างกัน
สภาพแวดล้อมของบัญชีสำคัญกว่าตำแหน่งของเทอร์มินัล
สมมติว่าคุณมีเทอร์มินัล MT5 สามตัว:
เทอร์มินัล A:
สถานที่: ลอนดอน
บัญชีโบรกเกอร์: Deriv South Africa
สัญลักษณ์: XAUUSD
เทอร์มินัล B:
สถานที่: แอฟริกาใต้
บัญชีโบรกเกอร์: Deriv South Africa
สัญลักษณ์: XAUUSD
เทอร์มินัล C:
สถานที่: ลอนดอน
บัญชีโบรกเกอร์: Deriv UAE
สัญลักษณ์: XAUUSD
เทอร์มินัล A และเทอร์มินัล B อาจแสดงค่าแท่งเทียนเหมือนกัน เพราะเชื่อมต่อกับสภาพแวดล้อมข้อมูลฝั่งโบรกเกอร์เดียวกัน
พวกมันอาจมี:
- เซิร์ฟเวอร์เดียวกัน
- ฟีดสัญลักษณ์เดียวกัน
- โซนเวลาของเซิร์ฟเวอร์เดียวกัน
- สเปกสัญลักษณ์เดียวกัน
- การสร้างแท่งเทียนแบบเดียวกัน
แต่เทอร์มินัล C อาจต่างออกไป เพราะบัญชี UAE อาจเชื่อมต่อกับเซิร์ฟเวอร์หรือสภาพแวดล้อมการเทรดของ Deriv ที่ต่างกัน
บัญชีนั้นอาจมี:
- เวลาเซิร์ฟเวอร์ต่างกัน
- ฟีดสภาพคล่องต่างกัน
- การตั้งค่าสัญลักษณ์ต่างกัน
- โมเดลสเปรดต่างกัน
- เซสชันการซื้อขายต่างกัน
- การกรองโควตต่างกัน
- ข้อมูลย้อนหลังต่างกัน
แม้ชื่อสัญลักษณ์จะดูเหมือนกัน แต่สภาพแวดล้อมข้อมูลจริงอาจไม่เหมือนกัน.
ปัญหาเรื่องเวลา (timestamp)
แท่งเวลา 20:00 คือเวลาเซิร์ฟเวอร์ของโบรกเกอร์
หนึ่งในแหล่งความสับสนที่ใหญ่ที่สุดคือเวลาแท่งเทียน
เมื่อ MT5 แสดงแท่ง H1 ที่:
20:00
เวลานั้นอ้างอิงจากเวลาเซิร์ฟเวอร์ของโบรกเกอร์ ไม่จำเป็นต้องตรงกับเวลาในคอมพิวเตอร์ของคุณ
ดังนั้นสองบัญชีอาจแสดงแท่งที่ติดป้ายว่า:
20:00
เหมือนกัน แต่แท่งเหล่านั้นอาจอ้างถึงช่วงเวลา UTC ในโลกจริงที่ต่างกัน
ตัวอย่างเช่น:
เซิร์ฟเวอร์โบรกเกอร์ A:
เวลาเซิร์ฟเวอร์ 20:00 = 18:00 UTC
เซิร์ฟเวอร์โบรกเกอร์ B:
เวลาเซิร์ฟเวอร์ 20:00 = 16:00 UTC
ทั้งสองกราฟแสดงแท่งเวลา 20:00 แต่แท่งเหล่านั้นไม่ได้ครอบคลุมชั่วโมงจริงเดียวกัน
นั่นหมายความว่า open, high, low, close และอินดิเคเตอร์ทั้งหมดอาจต่างกัน.
ทำไมไทม์เฟรมที่สูงกว่าถึงได้รับผลมากกว่า
เวลาเซิร์ฟเวอร์เป็นตัวกำหนดแท่ง H1, H4, D1 และ W1
สิ่งนี้ยิ่งสำคัญมากสำหรับไทม์เฟรมที่สูงขึ้น เช่น:
- H1
- H4
- D1
- W1
ยิ่งไทม์เฟรมสูง เวลาเซิร์ฟเวอร์ยิ่งสำคัญ
แท่ง D1 ของโบรกเกอร์หนึ่งอาจเปิดและปิดในเวลาโลกจริงที่ต่างจากแท่ง D1 ของอีกโบรกเกอร์หนึ่ง
ซึ่งอาจส่งผลต่อ:
- จุดสูง/ต่ำรายวัน
- การปิดแท่งรายวัน
- ค่าเฉลี่ยเคลื่อนที่
- ATR
- ระดับเบรกเอาต์
- โซนแนวรับและแนวต้าน
- ผลการแบ็กเทสต์
- การเข้าและออกของ EA
ทำไมค่า SMA ถึงอาจต่างกัน
อินดิเคเตอร์คำนวณจากข้อมูลแท่งเทียนเฉพาะของโบรกเกอร์
SMA ไม่ได้ถูกคำนวณจากแหล่งข้อมูลตลาดสากลใด ๆ
มันคำนวณจากค่า close ของแท่งเทียนที่มีอยู่บนกราฟนั้น ๆ
ตัวอย่างเช่น SMA 10 ช่วงบน H1 คำนวณจากค่า close ของแท่ง H1 10 แท่งล่าสุด
แบบย่อ:
SMA = ค่าเฉลี่ยของ close 10 ค่า ล่าสุด
ดังนั้นหากสองบัญชีโบรกเกอร์มีค่า close ของ H1 ต่างกันเล็กน้อย พวกมันก็จะมีค่า SMA ต่างกันเล็กน้อยด้วย
นั่นทำให้เกิดเหตุการณ์แบบนี้ได้:
บัญชี A:
ราคาปิดต่ำกว่า SMA
EA ทริกเกอร์เงื่อนไขขาย
บัญชี B:
ราคาปิดสูงกว่า SMA เล็กน้อย
EA ไม่ทริกเกอร์
ทั้งสองแพลตฟอร์มอาจทำงานถูกต้อง แค่ใช้ข้อมูลแท่งเทียนพื้นฐานที่ต่างกัน.
กลยุทธ์ที่ได้รับผลจากความต่างของแท่งเทียน
ค่า close ที่เป๊ะ ๆ สามารถเปลี่ยนสัญญาณที่เป๊ะ ๆ ได้
สิ่งนี้เกี่ยวข้องเป็นพิเศษกับกลยุทธ์ที่พึ่งพาค่า close ของแท่งเทียนแบบแม่นยำ เช่น:
- กลยุทธ์ SMA cross
- กลยุทธ์เบรกเอาต์
- รูปแบบแท่งเทียนปฏิเสธราคา (rejection candle)
- ตรรกะ swing high / swing low
- กลยุทธ์ช่วงราคาในรายวัน (daily range)
- ระบบกล่องที่อิง ATR
ความต่างของแท่งเทียนเพียงเล็กน้อยก็อาจมากพอที่จะเปลี่ยนสัญญาณ ฟิลเตอร์ หรือการตัดสินใจในการจัดการเทรดได้.
กราฟสด vs กราฟย้อนหลัง
แท่งปัจจุบันเปลี่ยนไปทิกต่อทิก
บนกราฟสด MT5 สร้างแท่งเทียนปัจจุบันจากทิกสดที่เข้ามา
สำหรับแท่งปัจจุบัน ใน MQL5:
iClose(_Symbol, PERIOD_H1, 0)
จะคืนค่า close สดล่าสุดของแท่ง H1 ที่กำลังก่อตัวอยู่
ค่านั้นสามารถเปลี่ยนทิกต่อทิก
ส่วนแท่งก่อนหน้าถูกเข้าถึงด้วย:
iClose(_Symbol, PERIOD_H1, 1)
นั่นคือแท่ง H1 ล่าสุดที่ปิดแล้ว
อย่างไรก็ตาม แม้ค่านั้นที่ปิดแล้วก็เดิมทีเกิดจากสตรีมทิกสดของโบรกเกอร์ มันไม่ใช่ค่ากลางสากลที่แชร์ร่วมกันโดยทุกโบรกเกอร์
มันถูกสร้างขึ้นภายในสภาพแวดล้อมของโบรกเกอร์/บัญชี/เซิร์ฟเวอร์นั้น ๆ.
ทำไมเรื่องนี้สำคัญสำหรับ Expert Advisors
โค้ดเดียวกันสามารถทำงานต่างกันบนข้อมูลที่ต่างกัน
หากคุณกำลังสร้าง EA พฤติกรรมนี้สำคัญมาก
กลยุทธ์ที่ทำงานบนเซิร์ฟเวอร์โบรกเกอร์หนึ่งอาจทำงานต่างออกไปเล็กน้อยบนอีกเซิร์ฟเวอร์หนึ่ง แม้ใช้โค้ดเดียวกันและพารามิเตอร์อินพุตเดียวกัน
ตัวอย่างเช่น:
โบรกเกอร์ A:
ค่า close ของ H1 ตัดลงต่ำกว่า SMA
EA เตรียมกล่องเบรกเอาต์
โบรกเกอร์ B:
ค่า close ของ H1 ไม่ได้ตัดลงต่ำกว่า SMA
EA ไม่ทำอะไร
หรือ:
โบรกเกอร์ A:
Daily ATR = 24.5
โบรกเกอร์ B:
Daily ATR = 26.1
ความต่างเล็กน้อยนั้นสามารถเปลี่ยน:
- ขนาดกล่อง
- Stop loss
- Take profit
- จังหวะการเข้า
- การคำนวณความเสี่ยง
- ความถี่ในการเทรด
- ผลการแบ็กเทสต์
- ผลลัพธ์จริง
นี่ไม่ได้หมายความว่า MT5 พัง
มันหมายความว่า EA ของคุณไวต่อข้อมูล
วิธีที่โบรกเกอร์สร้างแท่งเทียนเป็นส่วนหนึ่งของสภาพแวดล้อมการเทรด.
วิธีเปรียบเทียบบัญชีสองบัญชีอย่างถูกต้อง
พิมพ์ข้อมูลแท่งเทียนจริงออกมา
หากคุณต้องการเปรียบเทียบบัญชี MT5 สองบัญชี อย่าดูแค่กราฟด้วยสายตา
ให้พิมพ์ข้อมูลจริงออกมา
ตัวอย่างเช่น ใน MQL5 คุณสามารถเปรียบเทียบ:
void OnStart()
{
MqlRates rates[];
ArraySetAsSeries(rates, true);
int copied = CopyRates(_Symbol, PERIOD_H1, 0, 20, rates);
Print("Account server: ", AccountInfoString(ACCOUNT_SERVER));
Print("Symbol: ", _Symbol);
Print("TimeTradeServer: ", TimeTradeServer());
for(int i = 0; i < copied; i++)
{
Print(
"shift=", i,
" time=", TimeToString(rates[i].time, TIME_DATE | TIME_MINUTES),
" open=", DoubleToString(rates[i].open, _Digits),
" high=", DoubleToString(rates[i].high, _Digits),
" low=", DoubleToString(rates[i].low, _Digits),
" close=", DoubleToString(rates[i].close, _Digits),
" tick_volume=", rates[i].tick_volume
);
}
}
รันโค้ดนี้บนทั้งสองบัญชีแล้วเปรียบเทียบ:
- ชื่อเซิร์ฟเวอร์
- ชื่อสัญลักษณ์
- เวลาแท่ง (bar timestamp)
- Open
- High
- Low
- Close
- Tick volume
เปรียบเทียบคุณสมบัติของสัญลักษณ์ด้วย
ฟีดอาจไม่ใช่ความต่างเพียงอย่างเดียว
คุณควรเปรียบเทียบคุณสมบัติของสัญลักษณ์ด้วย:
void OnStart()
{
Print("Server: ", AccountInfoString(ACCOUNT_SERVER));
Print("Symbol: ", _Symbol);
Print("Digits: ", SymbolInfoInteger(_Symbol, SYMBOL_DIGITS));
Print("Point: ", SymbolInfoDouble(_Symbol, SYMBOL_POINT));
Print("Tick size: ", SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE));
Print("Contract size: ", SymbolInfoDouble(_Symbol, SYMBOL_TRADE_CONTRACT_SIZE));
Print("Currency profit: ", SymbolInfoString(_Symbol, SYMBOL_CURRENCY_PROFIT));
}
บางครั้งความต่างไม่ได้มีแค่ฟีดแท่งเทียน
ตัวสัญลักษณ์เองอาจมีการตั้งค่าสัญญา (contract) ต่างกัน.
สรุปเชิงปฏิบัติ
แท่งเทียน MT5 เป็นของสภาพแวดล้อมโบรกเกอร์เฉพาะ
แท่งเทียน MT5 ไม่ได้เป็นแค่ "แท่งเทียนของตลาด"
มันคือ:
แท่งเทียนของสัญลักษณ์เฉพาะ,
บนเซิร์ฟเวอร์โบรกเกอร์เฉพาะ,
ใช้ฟีดราคาของโบรกเกอร์นั้น,
ใช้เวลาเซิร์ฟเวอร์ของโบรกเกอร์นั้น
ดังนั้นหากเทอร์มินัลสองตัวเชื่อมต่อกับเซิร์ฟเวอร์โบรกเกอร์และสภาพแวดล้อมบัญชีเดียวกัน โดยทั่วไปควรเห็นแท่งเทียนสดเหมือนกัน แม้เทอร์มินัลจะอยู่คนละประเทศ
แต่หากอีกบัญชีเชื่อมต่อกับเอนทิตีโบรกเกอร์ เซิร์ฟเวอร์ หรือฟีดสัญลักษณ์ที่ต่างกัน แท่งเทียนก็อาจต่างกันได้
นั่นอธิบายว่าทำไม:
บัญชี Deriv South Africa ในลอนดอน
=
บัญชี Deriv South Africa ในแอฟริกาใต้
แต่:
บัญชี Deriv UAE ในลอนดอน
!=
บัญชี Deriv South Africa ในลอนดอน
ตำแหน่งของเทอร์มินัลไม่ใช่ปัจจัยหลัก
เซิร์ฟเวอร์และฟีดของโบรกเกอร์คือปัจจัยหลัก.
ข้อสรุปสุดท้าย
กลยุทธ์ของคุณเทรด “เวอร์ชันของตลาด” ของโบรกเกอร์
สำหรับนักเทรดด้วยมือ นี่อธิบายว่าทำไมกราฟอาจต่างกันเล็กน้อยระหว่างบัญชี
สำหรับนักพัฒนา EA ยิ่งสำคัญกว่า: ความต่างของแท่งเทียนสามารถเปลี่ยนสัญญาณ แบ็กเทสต์ การเข้า การออก และความสามารถทำกำไรได้
เมื่อสร้างบอทเทรด โปรดจำไว้เสมอว่า:
กลยุทธ์ของคุณไม่ได้เทรดแค่ตลาดเท่านั้น
แต่มันกำลังเทรดเวอร์ชันของตลาดจากโบรกเกอร์.
เรียนรู้เพิ่มเติมเกี่ยวกับ MT5 และวิธีที่เครื่องมือของ Lanami ทำงานบนแพลตฟอร์มนี้
ทบทวนปัจจัยด้านโบรกเกอร์ที่อาจส่งผลต่อการส่งคำสั่ง สเปรด และพฤติกรรมการเทรดแบบเบรกเอาต์
ดูระบบเทรดเบรกเอาต์อัตโนมัติที่สร้างมาเพื่อการส่งคำสั่ง MT5 อย่างมีวินัย