Unstable
|
|
Platform
|
MT 4
|
ปรับปรุงครั้งสุดท้ายเมื่อ
: ๒๖ มกราคม พ.ศ.๒๕๖๒
|
|
ไม่รับประกันความเสียหาอันเนื่องมาจากการทำงานของ EA ชุดนี้
|
สำหรับ My MA100 BB10 Fractals PSAR MACD RSI Thai EA เป็น EA ที่มีการใช้อินดิเคเตอร์จำนวน 6 อย่าง ประกอบด้วย Moving Average (MA)Bollinger Band (BB), Fractals, Parabolic SAR (PSAR), MACD, RSI ดังที่ปรากฏในชื่อของ EA นอกจากนี้ยังมีการพิจารณาแท่งราคาประกอบด้วย
Moving Average (MA100)
อินดีเคเตอร์ตัวแรกที่จะต้องใช้ใน EA ชุดนี้คือ เส้น Moving Average หรือที่เรียกสั้นๆ ว้าเส้น MA โดยค่าที่ใช้ใน EA ชุดนี้ คือ เส้น MA 100 ค่า MA method เป็นแบบ Simple และ Apply to Close โดยเวลาเขียนคำสั่งภาษา MQL4 ของ Mata Trader 4อ่านค่ามาใช้ใน EA ขะใช้จะใช้คำสั่ง iMA() ซึ่งมีรูปcบบคำสั่งดังนี้
double iMA(
string symbol, // symbol
int timeframe, // timeframe
int ma_period, // MA averaging period
int ma_shift, // MA shift
int ma_method, // averaging method
int applied_price, // applied price
int shift // shift
);
string symbol, // symbol
int timeframe, // timeframe
int ma_period, // MA averaging period
int ma_shift, // MA shift
int ma_method, // averaging method
int applied_price, // applied price
int shift // shift
);
โดยที่
symbol | หมายถึง |
ชื่อคู่เงินหรือสินทรัพย์
(String) ที่จะมาคำนวณหาค่า
Moving Average
ถ้าต้องการใช้คู่เงินหรือสินทรัพย์ที่ปรากฏอยู่บนหน้าจอกราฟของ
MT4 ในขณะนั้น
จะใส่ค่าเป็น NULL
|
timeframe | หมายถึง | กรอบเวลาที่ต้องการวัดค่า MA |
ma_period | หมายถึง | คาบเวลาที่ต้องการหาค่า MA |
ma_shift | หมายถึง | ค่าเยื้องคาบเวลาโดยปรกติจะใส่ค่าเป็น 0 |
ma_method | หมายถึง |
วิธีการคำนวนหาค่า MA
มี 4 แบบ
คือ Simple (SMA),
Exponential (EMA), Smoothed (SMMA) และ Linear
Weighted(LWMA)
|
applied_price | หมายถึง |
กำหนดให้ใช้ค่าใดจากแท่งราคามาในการนวนค่า
MA มี 9
ค่า เช่น High,
Open, Close, Low, ฯลฯ
|
shift | หมายถึง |
แท่งราคาเริ่มต้นที่จะคำนวณค่า
MA ปรกติจะใส่ค่าเป็น
0
ซึ่งหมายถึงเริ่มที่แท่งราคาปัจจุบัน
|
สำหรับค่า MA ที่เราจะอ่านขึ้นมาเพื่อใช้ใน EA ชุดนี้ ชุดคำสั่งที่เราจะใช้ สามารถเขียนได้ดังนี้
MA100 = iMA(NULL, PERIOD_CURRENT, 100, 0, MODE_SMA, PRICE_CLOSE, 0);
หมายเหตุ |
ชุดคำสั่งข้างต้น
จะทำหน้าที่คำคำนวณค่าอินดิเคเตอร์ตามที่กำหนด
มาเก็บไว้ในตัวแปรเพื่อไว้ใช้ในการดำเนินงานของ
EA
ชุดคำสั่งดังกล่าวจะไม่ได้วาดรูปร่างชองของอินดิเคเตอร์บนหน้าจอกราฟของ
MT4
|
Bollinger Band (BB10)
Bollinger Band เป็นอินดิเคเตอร์อีกตัวหนึ่งที่ถูกนำมาใช้ใน EA ชุดนี้ โโยอาสัยคุณสมบัติของ Bollinger Band ที่เส้นกลางคือเส้น Moveing Average และมีเส้นกรอบแสดงขอบเขตการเคลื่อนของราคา และความหนาแน่นของการซื้อ/ขาย ใน EA ชุดนี้ จะกำหนดค่า Period เท่ากับ 10 และ ค่า Deviations เท่ากับ 2 ใน EA ชุดนี้ จะใช้เส้นกลางของ Bollinger Band ร่วมกับ MA100 ในการบอกทิศทาง (Trend) ของราคา ใช้เปรียบเทียบเส้นกลางที่แท่งราคาปัจจุบันกับที่แท่งราคาย้อนหลัง 5 แท่งเพื่อบอกทิศทางของราคาว่าขึ้นหรือลง และใช้เส้นขอบของ Bollinger Band สังเกตุการกลับตัว สำหรับชุดคำสั่ง MQL4 สำหรับอ่านค่าต่างๆ ของ Bollinger Band ได้แก้คำสั่ง iBands() ซึ่งมีรูปบบคำสั่งดังนี้
double iBands(
string symbol, // symbol
int timeframe, // timeframe
int period, // averaging period
double deviation, // standard deviations
int bands_shift, // bands shift
int applied_price, // applied price
int mode, // line index
int shift // shift
);
string symbol, // symbol
int timeframe, // timeframe
int period, // averaging period
double deviation, // standard deviations
int bands_shift, // bands shift
int applied_price, // applied price
int mode, // line index
int shift // shift
);
โดยที่
deviation | หมายถึง | ค่า deviation ของ Bollinger Band ปรกติจะมีค่าเป็น 2 |
bands_shift | หมายถึง |
ค่าเยื้องหรือแท่งราคาที่จะให้เริ่มสร้างเส้นขอบของ
Bollinger Band
ปรกติจะมีค่าเป็น 0
คือเริ่มจากแท่งราคาปัจจุบัน
|
mode
|
หมายถึง |
ค่าที่ต้องการจากคำสั่ง
iBands() ซึ่งมีอยู่ด้วยกัน
3 ค่า คือ 0
– MODE_MAIN หมายถึง เส้นกลาง
, 1 – MODE_UPPER
หมายถึง เส้นขอบบน,
และ 2 –
MODE_LOWER หมายถึง เส้นขอบล่าง
|
สำหรับคำสั่งที่ใช้ใน EA ชุดนี้ คือการอ่านค่า เส้นกลางของ Bollinger Band ที่แท่งราคาย้อนหลังไป 5 แท่งนับจากแท่งราคาปัจจุบัน ชุดคำสั่งที่ใช้คือ
เส้นกลางBBก่อนหน้า5แท่ง = iBands(NULL, PERIOD_CURRENT, 12, 2, 0, PRICE_CLOSE,MODE_MAIN, 4);
ส่วนการอ่านค่าต่างๆ ของ Bollinger Bands ที่ต้องใช้ทั้งค่า เส้นกลาง, เส้นขอบบน และเส้นขอบล่างจะใช้ชุดคำสั่ง ดังนี้
ขอบบนBB=iBands(NULL, PERIOD_CURRENT, 10, 2, 0, PRICE_CLOSE, MODE_UPPER, 0);
เส้นกลางBB=iBands(NULL, PERIOD_CURRENT, 10, 2, 0, PRICE_CLOSE, MODE_MAIN,0);
ขอบล่างBB=iBands(NULL, PERIOD_CURRENT, 10, 2, 0, PRICE_CLOSE, MODE_LOWER, 0);
Fractals
Fractals เป็นอินดิเคเตอร์ที่ใช้บ่งบอกถึงจุดกลับตัวในการเคลื่อนที่ของราคา โดยจะแสดงเป็นรูปหัวลูกศรชี้ขึ้นหรือลง ตรงแท่งราคาที่มีราคาสุงสุดอยู่เหนือแท่งราคาอื่นๆ ที่อยู่บริเวณใกล้ๆ กัน โดยจะสแดงเป็นรูปลูกศรชี้ขึ้น หรือตรงแท่งราคาที่มีค่าต่ำสุดต่ำกว่าแท่งราคาอื่นๆที่อยู่บริเวณใกล้กัน Fractal เป็นอินดิเคเตอร์ที่แสดงผลช้ากว่าราคาตลาด แต่เป็นเครื่องบ่งบอกได้ว่า ถ้าเกิด Fractal ที่แท่งราคาใด ไม่ว่าจะเป็นจุดต่ำสุดหรือสูงสุดแสดงว่า โอกาสที่แท่งราคาจะเคลื่อนไปในทิศทางที่เกิด Fractal น้อยมาก ใกล้
ใน EA ชุดนี้จะทำการตรวจสอบหา Fractal ที่อยู่ใกล้ราคาปัจจุบันมากที่สุด วิธีการก็คือ เราจะกำหนดตัวแปรขึ้นมา 2 ชุด สำหรับเก็บค่า Fractal ที่แท่งราคามีหัวลูกศรของ Fractal ชี้ขึ้น และอีกตัวหนึ่งเก็บค่า Fractal ของแท่งราคาที่มีหัวลูกศรของ Fractal ชี้ลง โดยกำหนดค่าเริ่มต้นเป็น 0 แล้วใช้คำสั่ง iFractals() ของ MQL4 ทำการตรวจสอบแท่งราคาจากปัจจุบันและไล่ย้อนหลังจนกว่าจะเจอแท่งที่เกิด Fractal คำสั่งดังกล่าจะนำค่าซึ่งก็คือ ราคาสูงสุดหรือราคาต่ำสุดของแท่งที่เจอ Fractal เวลานำไปใช้เราจะตรวจสอบค่าตัวแปรตัวใดไม่เท่ากับ 0 ซึ่งตัว EA จะไม่เปิดคำสั่งซื้อขายในทิศทางของลูกศร Fractal และจะไม่เปิดคำสั่งซื้อ/ขายหากตัวแปรเก็บค่า Fractal ทั้งสองไม่เท่ากับ 0 เหมือนกัน ซึ่งแสดงว่าตลาดยังไม่เลือกทางว่าจะขึ้นหรือจะลง สำหรับรูปของชุดคำสั่ง iFractals มีดังนี้
double iFractals(
string symbol, // symbol
int timeframe, // timeframe
int mode, // line index
int shift // shift
);
โดยที่
mode | หมายถึง | สัญลักษณ์กำกับว่า จะให้คำสั่ง iFractals() แสดงค่าใดออกมาซึ่งมี 2 แบบ คือ 1=MODE_UPPER และ 2= MODE_LOWER |
สำหรับชุดคำสั่งในการหาและอ่่านค่า Fractals ใน EA ชุดนี้มีดังนี้
//หา Fractal ล่าสุด
ตำแหน่งแท่งเทียนที่เจอFractalUP = 0;
FractalUP = 0;
while (FractalUP == 0)
{
FractalUP = iFractals(NULL, PERIOD_CURRENT, MODE_UPPER, ตำแหน่งแท่งเทียนที่เจอFractalUP);
ตำแหน่งแท่งเทียนที่เจอFractalUP++;
}
ตำแหน่งแท่งเทียนที่เจอFractalDOWN = 0;
FractalDOWN = 0;
while (FractalDOWN == 0)
{
FractalDOWN = iFractals(NULL, PERIOD_CURRENT, MODE_LOWER, ตำแหน่งแท่งเทียนที่เจอFractalDOWN);
ตำแหน่งแท่งเทียนที่เจอFractalDOWN++;
}
Parabolic SAR
Parabolic SAR เป็นอินดิเคเตอร์ใช้บอกทิศทางการซื้อ/ขายหรือเทรนของตลาด โดย Parabolic SAR จะแสดงสัญลักษณ์จุดสีใต้แท่งราคา หากราคากำลังอยู่ในฝั่งขาขึ้น และแสดงจุดสีเหนือแท่งราคา หาราคากำลังอยู่ในฝั่งขาลง สำหรับใน EA ชุดนี้จะใช้ Parabolic SAR ในการยืนยันเทรนหรือทิศทางของราคา โดยใช้ค่าปริยาย ซึ่งเราสามารถอ่านค่า Parabolic SAR ด้วยคำสั่ง iSAR() ของ MQL4 โดยมีรูปแบบชุดคำสั่งดังนี้
double iSAR(
string symbol, // symbol
int timeframe, // timeframe
double step, // price increment step - acceleration factor
double maximum, // maximum value of step
int shift // shift
);
โดยที่
step | หมายถึง | จำนวนราคาที่ขยับในการคำนวณแต่ละครั้ง ปรกติจะใส่ค่าเป็น 0.02 |
maximum | หมายถึง | จำนวนราคาที่ขยับได้สูงสุดต่อการคำนวณแต่ละครั้งปรกติจะใส่ค่าเป็น 0.2 |
สำหรับชุดคำสั่งในการอ่านค่า Parabolic SAR ใน EA ชุดนี้มีดังนี้
PSAR = iSAR(NULL, PERIOD_CURRENT, 0.02, 0.2, 0);
MACD
โดยในกรณีแรก จะใช้หลักการตัดกันของเส้นสัญญาณกับแท่งฮิสโตแกรมของ MACD ในกรณีที่ ฮิสโตแกรมอยู่เหนือเส้นสัญญาณ จะถือว่าเป็นเทรนขาขึ้น แต่ถ้าฮิสโตรแกรมต่ำกว่าเส้นสัญญาณจะถือว่าเป็นเทรนขาลง
ส่วนในกรณีที่สอง จะใช้การเปรียบเทียบฮิสโตแกรมแท่งปัจจุบันกับแท่งก่อนหน้า
ดังนั้นค่าที่จะต้องอ่านออกมาจะมี 3 ค่า โดยในภาษา MQL4 จะใช้คำสั่ง iMACD() ซึ่งมีรูปแบบชุดคำสั่งดังนี้double iMACD(
string symbol, // symbol
int timeframe, // timeframe
int fast_ema_period, // Fast EMA period
int slow_ema_period, // Slow EMA period
int signal_period, // Signal line period
int applied_price, // applied price
int mode, // line index
int shift // shift
);
โดยที่
fast_ema_period | หมายถึง | ค่าเส้น EMA วิ่งเร็ว |
slow_ema_period | หมายถึง | ค่าเส้น EMA วิ่งช้า |
mode | หมายถึง | ค่าที่ต้องการหาจากคำสั่ง iMACD() มี 2 ค่า (0-MODE_MAIN, 1-MODE_SIGNAL) |
ชุดคำสั่งที่ใช้ใน EA ชุดนี้มีดังนี้
//อ่านค่า MACD
MACD = iMACD(NULL, PERIOD_CURRENT, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 0);
MACD_แท่งก่อนหน้า = iMACD(NULL, PERIOD_CURRENT, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 1);
MACD_Signal = iMACD(NULL, PERIOD_CURRENT, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, 0);
RSI
RSI เป็นอินดิเคเตอร์ที่ใช้บอกปริมาณการซื้อขาย โดยใน EA ชุดนี้ จะใช้ค่าปริยายคือ 14 โดยจะใน 2 ลักษณะ คือใช้ดูเขตซื้อมากเกินไป (> 83) หรือโซนขายมากเกิน (<27) และใช้ดูทิศทางการซื้อ/ขาย (เทียบแท่งราคาแท่งก่อนกับแท่งปัจจุบัน) โดยชุดคำสั่งที่ใช้อ่านค่า RSI คือ คำสั่ง iRSI() โดยมีรูปแบบชุดคำสั่งดังนี้
double iRSI(
string symbol, // symbol
int timeframe, // timeframe
int period, // period
int applied_price, // applied price
int shift // shift
);
สำหรับชุดคำสั่งที่ใช้ใน EA ชุดนี้ มีดังนี้
RSI = iRSI(NULL, PERIOD_CURRENT, 14,PRICE_CLOSE,0);
หมายเหตุ |
จะสังเกตุเห็นว่า
การใส่ค่าพารามิเตอร์ต่างๆ
ในชุดคำสั่งที่ต้องการอ่านค่าจากอินดิเคเตอร์ต่างๆ
ของภาษา MQL4
จะเป็นค่าเดียวกับการกำหนดค่าใน
Properties
ของ อินดิเคเตอร์บนหน้าจอกราฟของ
MT4
|
บทความที่เกี่ยวข้อง