ปรับสีปกติ

ผู้เขียน หัวข้อ: EA นั้นง่ายใครๆ ก็เขียนได้ - ตอนที่ 2 อ่านค่าจาก Indicator  (อ่าน 234 ครั้ง)

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

iRuler

  • Developer
  • แม่ทัพเม่า แห่งไรเดอร์

  • ออนไลน์
  • *
  • 1017
  • ความมีน้ำใจ
    3
« เมื่อ: 03, ตุลาคม 2017, 04:24:38 PM »


Share on your facebook
Indicator ใน MT4 นั้นมีสองแบบคือ แบบที่ติดตั้งมาพร้อมกับ MT4 เลย เช่น Moving Average, RSI, MACD เป็นต้น
การอ่านค่าจาก Indicator เหล่านี้ ตัว MT4 จะมี function มาให้เราเรียกใช้เลย เช่นต้องการอ่านค่าจากเส้น EMA 14
เราก็จะใช้ function ชื่อว่า iMA()

ตัวอย่างเช่น เราต้องการอ่านค่าจากเส้น EMA 21 มาเก็บไว้ในตัวแปรชื่อ ma
double ma = iMA(“UERUSD”, PERIOD_H1, 14, 0, MODE_EMA, PRICE_CLOSE, 0);
 

ตัวอย่างการอ่านค่าจาก MACD มาเก็บไว้ในตัวแปรชื่อ macd
double macd = iMACD(“EURUSD”, 0, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 0);
 

แน่นอนว่ายังมีคำสั่งที่ใช้ในการอ่านค่าจากอินดิเคเตอร์อีกหลายคำสั่ง ท่านสามารถกดปุ่ม F1 เพื่อเปิดหน้าต่าง Help เพื่อศึกษาเพิ่มเติมได้

 

ส่วนการอ่านค่าจากอินดิเคเตอร์ที่เรานำมาเพิ่มให้ MT4 เอง จะใช้คำสั่งเดียวกันหมดคือ iCustom() รูปแบบคำสั่งเป็บแบบนี้:

โค๊ด
double  iCustom( 
   string       symbol,           // symbol
   int          timeframe,        // timeframe
   string       name,             // path/name of the custom indicator compiled program
   ...                            // custom indicator input parameters (if necessary)
   int          mode,             // line index
   int          shift             // shift
   );


ผมจะยกตัวอย่างการอ่านค่า indicator ชื่อ HBH นะครับ
Input parameter ของ HBH คือ 1 และ 15 นำค่า parameter มาใส่ตรงตัวเลขสีแดงครับ


mode (line index) ดูได้จากโปรแกรม mt4 (ในรูป กรอบสีเขียว) ครับ
ให้กด ctrl+d จะมีหน้าต่าง Data ขึ้นมาแบบนี้ แล้วกดปุ่มกลางของเม้าส์ cursor จะกลายเป็น กากบาท เอาเม้าส์ไปวางบนแท่งที่ต้องการอ่านค่าได้ครับ
ให้ดูลำดับตัวเลขในกรอบสี่เหลี่ยมสีเขียวนะครับ อยากได้ค่าไหนก็ใส่เลขลำดับตามนั้นตรงตัวเลขสีเขียวครับ
ส่วนตัวเลขในกรอบสีเหลืองคือตำแหน่งของแท่งที่เราต้องการอ่านค่าครับ นำตัวเลขนี้ไปใส่ในตัวสีส้มของคำสั่ง iCustom() ครับ


ตัวอย่างคำสั่งตามรูปข้างบน:

double hbh0 = iCustom(Symbol(), PERIOD_H4, "HBH", 1, 15, 0, 1);
double hbh1 = iCustom(Symbol(), PERIOD_H4, "HBH", 1, 15, 1, 1);
double hbh2 = iCustom(Symbol(), PERIOD_H4, "HBH", 1, 15, 2, 1);
double hbh3 = iCustom(Symbol(), PERIOD_H4, "HBH", 1, 15, 3, 1);

ทำไมผมถึงอ่านตำแหน่งแท่งที่ 1? ไม่อ่านที่แท่ง 0?
เพราะตำแหน่ง 0 คือเรายังไม่รู้แน่ชัดว่าตอนปิดแท่งมันจะเป็นสีอะไร
ในการอ่านค่า ใน ea จึงอ่านย้อนหลังไป 1 แท่งครับ

indicator ตัวนี้ผมสังเกตเห็นว่าจะเป็นสีแดงถ้า ค่าตำแหน่ง 0 (hbh0) มากกว่าค่าของตำแหน่งที่ 1,2 และ 3
และจะเป็นสีน้ำเงินถ้าค่าของตำแหน่ง 0 น้อยกว่า ตำแหน่ง 1, 2 หรือ 3 จึงเขียนคำสั่งได้แบบนี้:


   
โค๊ด
if(hbh0>hbh1 && hbh0>hbh2 && hbh0>hbh3)
      Print("Red");
   else
      Print("Blue");



ถ้าอยากพิสูจน์ ก็ลองอ่านค่าจากแท่งที่ผมลากเส้นสีแดงไว้ครับ

จากที่อธิบายไปข้างต้น แสดงว่าถ้่เราต้องการจะตรวจสอบการเปลี่ยนสีของ indy เราจะต้องอ่านค่าจากแท่งที่ 1 และ 2 มาเปรียบเทียบกันว่าสองแท่งนี้สีต่างกันหรือไม่
นั่นแสดงว่า ถ้าอ่านค่าที่ H1กว่าจะรู้ว่าสีเปลี่ยน เราจะเสียเวลาไปถึง 2 ชั่วโมง..
หวังว่าจะไม่งงนะครับ
 g*/-
« แก้ไขครั้งสุดท้าย: 06, ตุลาคม 2017, 03:15:02 PM โดย iRuler »

Advertisement

เทรดเดอร์สายเขียว

  • Admin
  • แม่ทัพเม่า แห่งไรเดอร์

  • ออนไลน์
  • *
  • 1808
  • ความมีน้ำใจ
    166
« ตอบกลับ #1 เมื่อ: 03, ตุลาคม 2017, 04:29:19 PM »


Share on your facebook
 (TH)**
เปิดตัว EA Automatic Trade 100% ตัวแรกและตัวเดียวของบอร์ดรายละเอียดที่นี่ครับhttps://traderider.com/index.php/topic,9067.msg184651.html#msg184651
แจ้งขอรับ EA Fibo Swing Traderider ได้ที่นี่ฮะhttps://traderider.com/index.php/topic,8582.msg174841.html#msg174841

rider

  • เม่าใหม่ ใจเกินร้อย

  • ออฟไลน์
  • *
  • 17
  • ความมีน้ำใจ
    3
« ตอบกลับ #2 เมื่อ: 07, ตุลาคม 2017, 10:08:16 PM »


Share on your facebook
ขอบคุณมาก ๆ ครับ thank**

rider

  • เม่าใหม่ ใจเกินร้อย

  • ออฟไลน์
  • *
  • 17
  • ความมีน้ำใจ
    3
« ตอบกลับ #3 เมื่อ: 08, ตุลาคม 2017, 12:16:35 PM »


Share on your facebook
เรียนถาม ท่าน iRuler

ผม rider ลองเขียน EA ดูแล้ว โดยมีจุดประสงค์ คือ
BUY เมื่อ จุดไข่ปลา น้อยกว่า แท่งกระดูงู และ histogram มากกว่า 0
ออก order เมื่อจุดไข่ปลา มากกว่า แท่งกระดูกงู และ histogram น้อยกว่า 0

SELL เมื่อ จุดไข่ปลา มากกว่า แท่งกระดูกงู และ histogram น้อยกว่า 0
ออก order เมื่อจุดไข่ปลา น้อยกว่า แท่งกระดูงู และ histogram มากกว่า 0

แต่ลองทดสอบแล้วผลปรากฏว่า ว่างเปล่า..............ไม่เกิดอะไรขึ้นเลย    55555
ผมก็เลยส่ง code และ indicator มาให้ท่าน เพื่อขอความอนุเคราะห์ ตรวจสอบ แก้ไขให้ด้วยครับ

ขอบคุณมาก ๆ ครับ
« แก้ไขครั้งสุดท้าย: 08, ตุลาคม 2017, 12:55:42 PM โดย rider »

iRuler

  • Developer
  • แม่ทัพเม่า แห่งไรเดอร์

  • ออนไลน์
  • *
  • 1017
  • ความมีน้ำใจ
    3
« ตอบกลับ #4 เมื่อ: 08, ตุลาคม 2017, 02:16:11 PM »


Share on your facebook
มันไม่ถูกหลายจุดน่ะครับท่าน Pigig


ตัว HBB มีสองค่าที่เราต้องนำมาเปรียบเทียบกันเองนะครับ



double HBB_UP = iCustom(Symbol(),PERIOD_CURRENT,"HBB",20,1,1.0,1,1,1000,false,2,1);
double HBB_DN = iCustom(Symbol(),PERIOD_CURRENT,"HBB",20,1,1.0,1,1,1000,false,3,1);



if(HBB_UP>0 && HBB_DN<0)
//buy
else if(HBB_UP<0 && HBB_DN>0)
//sell


OrderSend ก็ไม่ถูกนะครับ ท่านเปิด lot 0 ทุกที่เลย จะต้องเป็น


int sendbuy = OrderSend(Symbol(),OP_BUY,0.01,Ask,3,0,0,"",0,0,Green);


 (TH)**


rider

  • เม่าใหม่ ใจเกินร้อย

  • ออฟไลน์
  • *
  • 17
  • ความมีน้ำใจ
    3
« ตอบกลับ #5 เมื่อ: 08, ตุลาคม 2017, 05:14:57 PM »


Share on your facebook
 thank**
 Thor 1


 

ข่าวสารฟอเร็กซ์

forex factory daliyfx investing netdania bloomberg

เว็บไซต์เพื่อนบ้าน

forexstartup.net

บทเรียนพื้นฐาน

forex grade 1 forex grade 2 forex grade 3 forex grade 4 forex grade 5 forex grade 6 forex grade 7 forex grade 8

โบรคเกอร์แนะนำ

exness xm fbs fxprimus tickmill fxpremax fxpro nordfx
Advertisement