การแจ้งเตือนในตัวบ่งชี้ วิธีการแทรกการแจ้งเตือนและลูกศรลงในตัวบ่งชี้ของคุณ?

การทำงานกับ Telegram ใน MetaTrader ช่องทาง Telegram และบอท

ความลับ Autolot ของฉัน ล็อตไดนามิกหรือ Autolot ความเสี่ยงจากความสมดุล

การทำงานกับ Telegram ใน MetaTrader ช่องทาง Telegram และบอท

ความลับ Autolot ของฉัน ล็อตไดนามิกหรือ Autolot ความเสี่ยงจากความสมดุล

Description

Alert: คำค้นหาบ่อยที่สุดในเครื่องมือค้นหาและหัวข้อยอดนิยมในฟอรั่มมักมีวลีต่อไปนี้

การแจ้งเตือนในหัวข้อเหล่านี้ช่วยให้คุณติดตามแนวโน้มล่าสุดได้

  • “ตัวบ่งชี้การแจ้งเตือน”
  • “คุณจะเพิ่มสัญญาณเสียงลงในตัวบ่งชี้ได้อย่างไร”
  • “ช่วยฉันใส่สัญญาณเสียงเข้าไปในตัวบ่งชี้หน่อย”
  • “วิธีใส่การแจ้งเตือนและลูกศร”
  • “จะส่งข้อความไปยังอีเมลหรือโทรศัพท์เมื่อสัญญาณมาจากตัวบ่งชี้ได้อย่างไร”

ในบทความนี้ ฉันจะอธิบายอย่างละเอียดเกี่ยวกับวิธีง่ายๆ ในการเพิ่ม Alert, Mail, Push, และ Arrow ลงในตัวบ่งชี้ (Indicator) ใดก็ได้ โดยใช้โค้ดเพิ่มเติมที่มีให้ที่ Expforex.

เครื่องมือสร้างโค้ด Alert สำหรับ MetaTrader

เครื่องมือสำหรับนักพัฒนา MQL4 / MQL5
สร้างโค้ด Alert สำหรับอินดิเคเตอร์ MetaTrader ของคุณ
ตั้งค่าแหล่งสัญญาณ ช่องทางแจ้งเตือน bar shift และสร้างเทมเพลต MQL Alert ที่พร้อมใช้สำหรับอินดิเคเตอร์ของคุณ
ตัวสร้างโค้ด
เปิดการตั้งค่าโค้ด Alert
หมายเหตุสำหรับนักพัฒนา: ให้ใส่บล็อกที่สร้างขึ้นหลังจากคำนวณบัฟเฟอร์ของอินดิเคเตอร์หรือเงื่อนไขสัญญาณแล้ว เทมเพลตนี้ใช้สำหรับ alerts หากต้องการเทรดอัตโนมัติจากสัญญาณของอินดิเคเตอร์ ให้ใช้ xCustomEA
การตั้งค่าแหล่งสัญญาณ
บัฟเฟอร์ที่มีค่าลูกศร BUY
บัฟเฟอร์ที่มีค่าลูกศร SELL
บัฟเฟอร์เดียวที่ค่าภายในกำหนด BUY และ SELL
เลือกวิธีตีความค่าของบัฟเฟอร์สัญญาณ
ตัวอย่างเงื่อนไขง่าย ๆ สำหรับ alerts ที่อิงกับแท่งเทียน
เส้น/บัฟเฟอร์แรกที่ใช้ในตรรกะ crossover
เส้น/บัฟเฟอร์ที่สองที่ใช้ในตรรกะ crossover
ระดับราคาคงที่ที่ใช้เป็นตัวอย่างตรรกะ breakout
เลือกว่าราคาควรโต้ตอบกับระดับนี้อย่างไร
ป้องกัน alerts ซ้ำในทุก tick ของแท่งเทียนเดียวกัน
ช่องทางแจ้งเตือน
เลือกวิธีแจ้งเตือนทั้งหมดที่จะรวมไว้ในโค้ดที่สร้างขึ้น
ไฟล์เสียงมาตรฐานของ MetaTrader
ข้อความเสริมที่จะเพิ่มในข้อความ Alert ที่สร้างขึ้น
ต้องการเทรดอัตโนมัติจากสัญญาณของอินดิเคเตอร์หรือไม่? เทมเพลต Alert นี้มีประโยชน์สำหรับการแจ้งเตือน หากคุณต้องการ Expert Advisor ที่อ่านบัฟเฟอร์ของอินดิเคเตอร์แบบกำหนดเองและเปิดออเดอร์อัตโนมัติ ให้ใช้ The xCustomEA

  

Foreword 

ในการติดตั้ง Alert ลงในตัวบ่งชี้ของคุณอย่างถูกต้อง คุณจำเป็นต้องมีซอร์สโค้ดแบบเปิดของตัวบ่งชี้นั้น

โค้ดที่ถูกดึงกลับมา (decompiled code) ไม่แนะนำให้ใช้ เพราะสำหรับมือใหม่ โค้ดที่ถูกดึงกลับมา จะให้ข้อมูลน้อยมากและเข้าใจยาก

นอกจากนี้ คุณอาจพบปัญหาการคอมไพล์หลังการแก้ไขได้

xCustomEA

หากคุณกำลังมองหาวิธีที่ง่ายกว่าในการ ทำให้กลยุทธ์การเทรดเป็นอัตโนมัติ โดยไม่ต้องเขียนโค้ดเฉพาะทางที่ซับซ้อน ขอแนะนำ xCustomEA.

Expert Advisor ตัวนี้จาก Expforex ถูกออกแบบมาให้ทำงานร่วมกับตัวบ่งชี้ที่สร้างสัญญาณลูกศรได้อย่างราบรื่น ด้วย xCustomEA คุณสามารถทำให้ตัวบ่งชี้ที่แสดงลูกศรซื้อหรือขายเป็นอัตโนมัติ ช่วยให้คุณสร้างกลยุทธ์แบบอัตโนมัติได้อย่างง่ายดาย โดยไม่ต้องพัฒนาโค้ดที่ยุ่งยาก

xCustomEA ทำให้การใช้สัญญาณจากตัวบ่งชี้เพื่อเทรดโดยอัตโนมัตินั้นเป็นเรื่องง่าย ผู้เทรดสามารถโฟกัสไปที่การปรับปรุงประสิทธิภาพการเทรด แทนที่จะเสียเวลาไปกับการพัฒนาโปรแกรมที่ซับซ้อน Expert Advisor นี้เป็นทางเลือกที่ดี แทนการจ้างโปรแกรมเมอร์ให้มาเขียนโค้ดเฉพาะทาง ด้วยโซลูชันที่ใช้งานได้อย่างตรงไปตรงมา

หากต้องการข้อมูลเพิ่มเติม โปรดเยี่ยมชม หน้าของ xCustomEA หรือสำรวจ Expert Advisor อื่นๆ จาก Expforex

Beginning of Work to insert Alert

   ขั้นแรก คุณต้องกำหนดว่าบัฟเฟอร์ (buffer) ใดในตัวบ่งชี้ที่ให้สัญญาณ จุดประสงค์ในการสร้างการแจ้งเตือน และเงื่อนไขในการกำหนดสัญญาณตามตัวบ่งชี้นั้น

Important: ตัวบ่งชี้บางตัวอาจแสดงเฉพาะบัฟเฟอร์ภายนอกที่กำหนดไว้ในโค้ดส่วนต้นเท่านั้น

#property indicator_buffers 1

อย่างไรก็ตาม ตัวบ่งชี้อาจมีบัฟเฟอร์ที่ซ่อนอยู่ ซึ่งถูกกำหนดในฟังก์ชัน init() และประกาศเป็นตัวแปรไว้

IndicatorBuffers(7): เราอาจต้องการเฉพาะบัฟเฟอร์แรก

ตัวอย่างเช่น หากคุณมี 1 บัฟเฟอร์ภายนอก ให้ดูตัวแปร:

SetIndexBuffer(0, SarBuffer);
  • 0 คือบัฟเฟอร์ตัวแรก
  • 1 คือบัฟเฟอร์ตัวที่สอง

บัฟเฟอร์เหล่านี้หรือชื่อบัฟเฟอร์อาจระบุได้ โดยนำเมาส์ไปชี้ที่เส้นใดเส้นหนึ่งของตัวบ่งชี้บนกราฟ

Value1 – หมายถึงบัฟเฟอร์ตัวแรกหรือ 0 ในระบบอินเด็กซ์ของโค้ด

SetIndexBuffer(0, SarBuffer); // ชื่อบัฟเฟอร์ที่เราต้องการ

หากใช้ SarBuffer ก็จะเป็นตัวที่ใช้

เพิ่ม Alert และลูกศรใน Indicator Forex
ตัวอย่างค่าบัฟเฟอร์ใน Indicator สำหรับ MT4/MT5

จากนั้นจึงเป็นเรื่องทางเทคนิคในการกำหนดว่า สัญญาณจะเกิดขึ้นในรูปแบบใด

ตัวอย่างเช่น ถ้าเป็นการตัดผ่านเส้น 0 จากด้านบน (ล่าง) ลงมา (ขึ้น) ก็จะมีรูปแบบเงื่อนไขดังนี้:

SarBuffer[shift+1] >= 0 && SarBuffer[shift] < 0

การตัดผ่านราคาปัจจุบันหรือแท่งเทียน (การทะลุแท่งเทียนโดยตัวบ่งชี้) เป็นต้น:

SarBuffer[shift+1] >= Close[shift] && SarBuffer[shift] < Close[shift]

ถ้าเป็นการตัดผ่านระดับ (level) ที่กำหนด เช่น stochastics:

SarBuffer[shift+1] <= 75 && SarBuffer[shift] > 75;

SarBuffer[shift+1] >= 25 && SarBuffer[shift] < 25;

ถ้าในตัวบ่งชี้ของคุณมีลูกศรอยู่แล้ว ก็อาจมีเงื่อนไขสัญญาณในรูปแบบต่อไปนี้:

DnTrend[1] != EMPTY_VALUE && DnTrend[1] != 0 && UpTrend[2] != EMPTY_VALUE

อย่างไรก็ตาม คุณต้องใช้ตรรกะและความเข้าใจ เพื่อบันทึกสัญญาณให้ถูกต้อง หากคุณติดขัด โปรดเขียนคำถามในกระทู้ แนบตัวบ่งชี้ แสดงเส้นบนกราฟ และอธิบายรายละเอียดว่าคุณทำไม่ได้ตรงไหน การส่งข้อความเช่น “ต้องการใส่ alert ในตัวบ่งชี้” โดยไม่อธิบายว่าใส่ตรงไหน หรือไม่มีตัวบ่งชี้แนบมาด้วย จะไม่ช่วยให้แก้ไขได้

Code “Alerts and arrows from www.expforex.com

ขั้นตอนต่อไปในการเพิ่ม alert ให้กับตัวบ่งชี้ของเรา มีรายละเอียดดังนี้

STEP 1

วางโค้ดต่อไปนี้ไว้ที่ส่วนต้นของ EA (ก่อนฟังก์ชัน OnCalculate() หรือ start)

//+==+//+ www.expforex.com edit AlertArrow +//+==+
extern string Alerts="Alerts and arrows from www.expforex.com";
extern bool AlerT=true; // Issue an alert to the screen
extern bool Mail=true; // Send message
extern bool Push=true; // Send PUSH to phone
extern bool Arrow=true; // Put arrows on signals
extern int shift=1; // On which bar to count the signal 0 - on the current one, 1 - on the closed
int timeee;
// Internal variable
string nameInd;
void SetArrow(int cd, color cl, string nm="", datetime t1=0, double p1=0, int sz=3)
{
  if(nm=="")
    nm=DoubleToStr(Time[0], 0);
  if(t1 <= 0)
    t1=Time[0];
  if(p1 <= 0)
    p1=Bid;
  nameInd=WindowExpertName();
  int wind=WindowFind(nameInd);
  wind=0;
  if(ObjectFind(nm) < 0)
    ObjectCreate(nm, OBJ_ARROW, wind, 0, 0);
  ObjectSet(nm, OBJPROP_TIME1, t1);
  ObjectSet(nm, OBJPROP_PRICE1, p1);
  ObjectSet(nm, OBJPROP_ARROWCODE, cd);
  ObjectSet(nm, OBJPROP_COLOR, cl);
  ObjectSet(nm, OBJPROP_WIDTH, sz);
}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Expforex_AlertArrow(string text="", int arrowdir=0, bool history=false, int i=0)
{
  nameInd=WindowExpertName();
  int wind=WindowFind(nameInd);
  if(wind==-1)
    wind=0;
  ObjectCreate("Originalalert", OBJ_LABEL, wind, 0, 0);
  ObjectSetText("Originalalert", "Modification AlertArrow www.expforex.com", 10, "Arial Bold", Red);
  ObjectSet("Originalalert", OBJPROP_CORNER, 2);
  ObjectSet("Originalalert", OBJPROP_XDISTANCE, 200);
  ObjectSet("Originalalert", OBJPROP_YDISTANCE, 10);
  if(!history)
  {
    if(AlerT)
      Alert(text);
    if(Arrow)
      if(arrowdir==1)
        SetArrow(241, Blue, nameInd + DoubleToStr(Time[shift], 0), Time[shift], Low[shift]);
    if(Arrow)
      if(arrowdir==2)
        SetArrow(242, Red, nameInd + DoubleToStr(Time[shift], 0), Time[shift], High[shift]);
    if(!IsTesting())
      if(Mail)
        SendMail(text, text);
    if(!IsTesting())
      if(Push)
        SendNotification(text);
  }
  if(history)
  {
    if(Arrow)
      if(arrowdir==1)
        SetArrow(241, Blue, nameInd + DoubleToStr(Time[shift + i2], 0), Time[shift + i2], Low[shift + i2]);
    if(Arrow)
      if(arrowdir==2)
        SetArrow(242, Red, nameInd + DoubleToStr(Time[shift + i2], 0), Time[shift + i2], High[shift + i2]);
  }
}//+==+//+ www.expforex.com edit AlertArrow +//+==+

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
  for(int i=ObjectsTotal(); i>=0; i--)
  {
    if(StringFind(ObjectName(i), nameInd)!=-1)
      ObjectDelete(ObjectName(i));
  }
}
//+------------------------------------------------------------------+

STEP 2

 ก่อนจบฟังก์ชัน OnCalculate() ให้ใส่โค้ดต่อไปนี้ไว้ก่อน

return(rates_total); }

โค้ดที่จะวาง:

//+==+//+ www.expforex.com edit AlertArrow +//+==+

nameInd=WindowExpertName();

if(timeee != Time[0] && SarBuffer[shift+1] <= 75 && SarBuffer[shift] > 75)
{
  Expforex_AlertArrow(Symbol() + " " + Period() + nameInd + " UP", 1);
  timeee=Time[0];
}
if(timeee != Time[0] && SarBuffer[shift+1] >= 25 && SarBuffer[shift] < 25)
{
  Expforex_AlertArrow(Symbol() + " " + Period() + nameInd + " DN", 2);
  timeee=Time[0];
}//+==+//+ www.expforex.com edit AlertArrow +//+==+

STEP 3

โค้ดนี้จะทำงานเป็นสัญญาณของเรา

แน่นอนว่าต้องเปลี่ยนบางส่วนให้เข้ากับโค้ดของคุณเอง

ตัวอย่างด้านล่างเป็นรูปแบบเงื่อนไขสำหรับการแจ้งเตือน:

1. การตัดผ่านเส้น 0 จากด้านบน (ล่าง) ลงมา (ขึ้น):

SarBuffer[shift+1] >= 0 && SarBuffer[shift] < 0

2. การตัดผ่านราคาปัจจุบันหรือแท่งเทียน:

SarBuffer[shift+1] >= Close[shift] && SarBuffer[shift] < Close[shift]

3. การตัดผ่านระดับ (level) เฉพาะ เช่น stochastics:

SarBuffer[shift+1] <= 75 && SarBuffer[shift] > 75;

SarBuffer[shift+1] >= 25 && SarBuffer[shift] < 25;

After Use

ในการเพิ่มสัญญาณเสียงลงในตัวบ่งชี้ ให้ทำตามขั้นตอน:

  • 1. เปิดการตั้งค่าของตัวบ่งชี้
  • 2. มองหาหัวข้อ “Alert” หรือ “Arrows
  • 3. เลือกตัวเลือกในการเพิ่มการแจ้งเตือนด้วยเสียง
  • 4. เลือกไฟล์เสียงที่ต้องการใช้ในการแจ้งเตือน
  • 5. บันทึกการเปลี่ยนแปลง

เมื่อใส่สัญญาณเสียงลงในตัวบ่งชี้ คุณจะได้รับแจ้งเตือนเสียง เมื่อเงื่อนไขที่กำหนดตรงตามที่ต้องการ ซึ่งช่วยให้คุณตัดสินใจเทรดได้ดียิ่งขึ้น

If You Need Arrows on History, Then You Need to Do This:

หลังจากโค้ดข้างต้น ให้เพิ่มโค้ดต่อไปนี้:

//+==+//+ www.expforex.com edit AlertArrow +//+==+

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
if(counted_bars > 0)
   counted_bars--;
int limit2 = Bars - counted_bars;
for(int i2 = 0; i2 < limit2; i2++) {
    nameInd = WindowExpertName();
    if(SarBuffer[shift+1+i2] <= 75 && SarBuffer[shift+i2] > 75)
    {
        Expforex_AlertArrow(Symbol() + " " + Period() + nameInd + " UP" + i2, 1, true, i2);
    }
    if(SarBuffer[shift+1+i2] >= 25 && SarBuffer[shift+i2] < 25)
    {
        Expforex_AlertArrow(Symbol() + " " + Period() + nameInd + " DN" + i2, 2, true, i2);
    }
}
//+==+//+ www.expforex.com edit AlertArrow +//+==+

Examples

ตัวอย่างเหล่านี้นำมาจากส่วนที่เกี่ยวข้องในฟอรั่มของเรา ฉันได้ปรับตัวบ่งชี้ตามหลักการที่กล่าวมาข้างต้นแล้ว

ตัวอย่างใช้งาน Alert Arrow ใน Indicator
การตั้งค่า Alert ในตัวบ่งชี้ Forex ตัวอย่างเพิ่มเติม

Conclusions

ในบทความนี้ ฉันได้อธิบายขั้นตอนการสร้างสัญญาณสำหรับตัวบ่งชี้ อย่างละเอียดและเข้าใจง่ายที่สุด

โค้ดข้างต้นสามารถใช้งานได้โดยไม่มีข้อจำกัดกับตัวบ่งชี้ใดก็ได้ สิ่งสำคัญคือไม่เปลี่ยนชื่อผู้เขียน (author) เมื่อเพิ่มโค้ดลงในตัวบ่งชี้

หากคุณชอบบทความนี้ และรู้สึกว่าวิธีใส่สัญญาณนี้เป็นประโยชน์ กรุณาแสดงความคิดเห็นและให้คะแนนในหัวข้อ

Signal Bar: This Is Important to Know

Questions?

หากคุณมีคำถามใดๆ โปรดสอบถามได้ เราไม่ได้ขายสินค้าที่ไม่ชัดเจน

นอกจากนี้ ผลิตภัณฑ์แต่ละตัวของเรายังสามารถทดสอบได้ก่อนทำการซื้อ

เราขอขอบคุณความสนใจและการสนับสนุนผลิตภัณฑ์ของเรา และจะพยายามรักษามาตรฐานคุณภาพไว้เสมอ

ขอบคุณที่อยู่กับเรา!

คุณมีคำถามหรือไม่?

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *


โพสต์นี้มีให้บริการใน: English Portuguese Español Deutsch Français Русский Українська Indonesian Italiano العربية Chinese 日本語 한국어 Türkçe ไทย Tiếng Việt









    Please wait, contacting ...

    คำเตือนความเสี่ยง:


    ผลการเทรดในอดีตไม่รับประกันผลลัพธ์ในอนาคต.

    การเทรดแลกเปลี่ยนเงินตราต่างประเทศด้วยการเทรดแบบมีมาร์จิ้นมีความเสี่ยงสูงและอาจไม่เหมาะสำหรับนักลงทุนทุกคน.

    โปรดทราบว่าการใช้หุ่นยนต์เทรด (trading robots) มีความเสี่ยงอย่างมาก และคุณอาจสูญเสียมากกว่าการลงทุนเริ่มต้นของคุณ.

    โปรดดำเนินการด้วยความระมัดระวัง ประเมินสถานการณ์ทางการเงินของคุณอย่างละเอียด และพิจารณาขอคำแนะนำจากผู้เชี่ยวชาญที่มีคุณสมบัติเหมาะสม.

    Disclaimer