การสร้างสัญญาณจาก Indicator Crossovers
Indicator Crossovers เป็นวิธีที่นิยมใช้ในการสร้างสัญญาณเทรด โดยอาศัยการตัดกันของเส้น Indicator หรือการตัดผ่านค่าที่กำหนด ต่อไปนี้เป็นตัวอย่างชุดคำสั่งสำหรับสร้างสัญญาณจาก Indicator Crossovers ที่ใช้บ่อย:
1. Moving Average Crossover
การตัดกันของ Moving Average สองเส้นที่มีช่วงเวลาต่างกัน เป็นวิธีที่นิยมใช้ในการระบุแนวโน้มและสร้างสัญญาณเทรด
int MAcrossover(int fastPeriod, int slowPeriod)
{
double fastMA = iMA(NULL, 0, fastPeriod, 0, MODE_SMA, PRICE_CLOSE, 0);
double slowMA = iMA(NULL, 0, slowPeriod, 0, MODE_SMA, PRICE_CLOSE, 0);
double prevFastMA = iMA(NULL, 0, fastPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
double prevSlowMA = iMA(NULL, 0, slowPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
if (prevFastMA <= prevSlowMA && fastMA > slowMA)
return 1; // สัญญาณซื้อ
else if (prevFastMA >= prevSlowMA && fastMA < slowMA)
return -1; // สัญญาณขาย
return 0; // ไม่มีสัญญาณ
}
วิธีใช้งาน:
int signal = MAcrossover(10, 30);
if (signal == 1)
Print("สัญญาณซื้อจาก MA Crossover");
else if (signal == -1)
Print("สัญญาณขายจาก MA Crossover");
2. MACD Crossover
MACD (Moving Average Convergence Divergence) เป็น Indicator ยอดนิยมที่ใช้การตัดกันของเส้น MACD และ Signal Line เพื่อสร้างสัญญาณเทรด
int MACDcrossover(int fastEMA, int slowEMA, int signalPeriod)
{
double macd = iMACD(NULL, 0, fastEMA, slowEMA, signalPeriod, PRICE_CLOSE, MODE_MAIN, 0);
double signal = iMACD(NULL, 0, fastEMA, slowEMA, signalPeriod, PRICE_CLOSE, MODE_SIGNAL, 0);
double prevMACD = iMACD(NULL, 0, fastEMA, slowEMA, signalPeriod, PRICE_CLOSE, MODE_MAIN, 1);
double prevSignal = iMACD(NULL, 0, fastEMA, slowEMA, signalPeriod, PRICE_CLOSE, MODE_SIGNAL, 1);
if (prevMACD <= prevSignal && macd > signal)
return 1; // สัญญาณซื้อ
else if (prevMACD >= prevSignal && macd < signal)
return -1; // สัญญาณขาย
return 0; // ไม่มีสัญญาณ
}
วิธีใช้งาน:
int signal = MACDcrossover(12, 26, 9);
if (signal == 1)
Print("สัญญาณซื้อจาก MACD Crossover");
else if (signal == -1)
Print("สัญญาณขายจาก MACD Crossover");
3. Stochastic Crossover
Stochastic Oscillator ใช้การตัดกันของเส้น %K และ %D เพื่อสร้างสัญญาณเทรด โดยมักจะใช้ร่วมกับการพิจารณาสภาวะ Overbought และ Oversold
int StochasticCrossover(int kPeriod, int dPeriod, int slowing)
{
double k = iStochastic(NULL, 0, kPeriod, dPeriod, slowing, MODE_SMA, 0, MODE_MAIN, 0);
double d = iStochastic(NULL, 0, kPeriod, dPeriod, slowing, MODE_SMA, 0, MODE_SIGNAL, 0);
double prevK = iStochastic(NULL, 0, kPeriod, dPeriod, slowing, MODE_SMA, 0, MODE_MAIN, 1);
double prevD = iStochastic(NULL, 0, kPeriod, dPeriod, slowing, MODE_SMA, 0, MODE_SIGNAL, 1);
if (prevK <= prevD && k > d && k < 20) return 1; // สัญญาณซื้อ (และอยู่ในสภาวะ Oversold) else if (prevK >= prevD && k < d && k > 80)
return -1; // สัญญาณขาย (และอยู่ในสภาวะ Overbought)
return 0; // ไม่มีสัญญาณ
}
วิธีใช้งาน:
int signal = StochasticCrossover(5, 3, 3);
if (signal == 1)
Print("สัญญาณซื้อจาก Stochastic Crossover");
else if (signal == -1)
Print("สัญญาณขายจาก Stochastic Crossover");
4. การรวมสัญญาณจากหลาย Indicator
ในการสร้างระบบเทรดที่มีประสิทธิภาพ เราอาจใช้การรวมสัญญาณจากหลาย Indicator เพื่อยืนยันสัญญาณและลดความเสี่ยงของสัญญาณหลอก
int CombinedSignals()
{
int maSignal = MAcrossover(10, 30);
int macdSignal = MACDcrossover(12, 26, 9);
int stochSignal = StochasticCrossover(5, 3, 3);
// ต้องมีสัญญาณตรงกันอย่างน้อย 2 ใน 3
if ((maSignal == 1 && macdSignal == 1) || (maSignal == 1 && stochSignal == 1) || (macdSignal == 1 && stochSignal == 1))
return 1; // สัญญาณซื้อ
else if ((maSignal == -1 && macdSignal == -1) || (maSignal == -1 && stochSignal == -1) || (macdSignal == -1 && stochSignal == -1))
return -1; // สัญญาณขาย
return 0; // ไม่มีสัญญาณหรือสัญญาณไม่ชัดเจน
}
วิธีใช้งาน:
int signal = CombinedSignals();
if (signal == 1)
Print("สัญญาณซื้อที่ยืนยันจากหลาย Indicator");
else if (signal == -1)
Print("สัญญาณขายที่ยืนยันจากหลาย Indicator");
การใช้ Indicator Crossovers เป็นวิธีที่นิยมในการสร้างสัญญาณเทรด อย่างไรก็ตาม ควรระมัดระวังในการใช้งาน เนื่องจาก:
- สัญญาณอาจเกิดขึ้นล่าช้ากว่าการเคลื่อนไหวของราคาจริง
- อาจเกิดสัญญาณหลอกในตลาดที่เคลื่อนไหวในกรอบแคบ
- ควรใช้ร่วมกับการวิเคราะห์ปัจจัยอื่นๆ เช่น แนวโน้มตลาด, วอลุ่มการซื้อขาย, และการวิเคราะห์ปัจจัยพื้นฐาน
การทดสอบย้อนหลังและการปรับแต่งพารามิเตอร์ให้เหมาะสมกับคู่สกุลเงินและTimeframeที่ต้องการเทรดเป็นสิ่งสำคัญในการพัฒนาระบบเทรดที่มีประสิทธิภาพ
FOREXDUCK (นามปากกา) นักเขียนของเรามีประสบการณ์การเงินการลงทุนกว่า 10 ปี มีความเชี่ยวชาญในการวิเคราะห์ตลาด Forex และคริปโต โดยเฉพาะการวิเคราะห์ทางเทคนิค รวมถึงเทคนิคต่าง