ผู้สร้างแนวคิด — Hazem, ผู้พัฒนาโค้ด MQL5 — barabashkakvn.
ปัญหาหลักของโค้ดนี้คือการเปรียบเทียบค่าของ iCCI และ iMACD กับตัวแปร "Buy Sell Level" ซึ่งค่าของอินดิเคเตอร์อาจแตกต่างกันหลายเท่าหรือแม้กระทั่งหลายสิบเท่าเลยทีเดียว
ตัวอย่างเช่น สำหรับสัญลักษณ์ EURUSD, USDJPY และ USDSEK รวมถึงค่าทั้งหมดที่มีใน MetaTrader 5:


จากที่เห็น iCCI มีความเสถียรในค่าที่อ่านได้ ขณะที่ iMACD ขึ้นอยู่กับราคาของสัญลักษณ์อย่างมาก เพื่อแก้ไขปัญหานี้ เราสามารถ คูณค่าของ iMACD ด้วยอัตราส่วนหนึ่ง:
void OnTick()
{
//----
m_ext_lot=NormalizeDouble(m_account.Balance()/50001.0,2);
if(m_ext_lot<0.1)
m_ext_lot=0.1;
m_cci=iCCIGet(0);
m_macd=iMACDGet(MAIN_LINE,0)*1000000;
m_buy_total=0;
m_sell_total=0;
{
//----
m_ext_lot=NormalizeDouble(m_account.Balance()/50001.0,2);
if(m_ext_lot<0.1)
m_ext_lot=0.1;
m_cci=iCCIGet(0);
m_macd=iMACDGet(MAIN_LINE,0)*1000000;
m_buy_total=0;
m_sell_total=0;

เคล็ดลับ: ขอแนะนำให้ใช้ EURUSD M30.
ผลลัพธ์จากวันที่ 08 มกราคม 2016 ถึง 06 พฤศจิกายน 2016, EURUSD M30, เงินฝากเริ่มต้น — 10,000:

ความคิดเห็น 0