กองทุน SPDR GOLD SHARES
ถือทองก่อนหน้า
ถือทองล่าสุด
0.00
*หน่วยตัน / ราคาอ้างอิงล่าสุดจากสมาคมค้าทองคำ
สถิติกองทุน SPDR
ราคาทองคำแท่ง 96.5%
ราคาอ้างอิงล่าสุดจากสมาคมค้าทองคำ
ครั้งที่
ราคาก่อนหน้า
ราคาล่าสุด
0
(หน่วย บาท*) / อัปเดตล่าสุดเมื่อวันที่ 13 ก.ค. 2566 เวลา 13:04 น.
สถิติราคาทองคำ ไทย

สอนการเขียน EA Forex นั้นง่ายใครๆ ก็เขียนได้ - ตอนที่ 6 สร้าง EA Forex ให้เปิด Order จากเส้น EMA

  • 10 replies
  • 19,442 views
*

iRuler

  • 1,282
สอนการเขียน EA Forex นั้นง่ายใครๆ ก็เขียนได้ - ตอนที่ 6 สร้าง EA Forex ให้เปิด Order จากเส้น EMA


มาถึงตอนนี้ตอนที่ 6 สร้าง EA Forex ให้เปิด Order จากเส้น EMA เราจะนำเรื่องราวของทั้ง 5 ตอนที่ผ่านมา นำมาสร้างเป็น EA forex ที่ทำงานได้จริงๆ กันในตอนที่ 6 นี้นะครับ
EA ที่เราจะสร้างขึ้นมาในตอนนี้เป็น EA Forex  ที่อ่านค่าจากเส้น EMA 15 และ EMA 200 ครับ เป็นระบบเทรดที่ผมไปเจอที่เว็บนี้ http://www.forexfunction.com/200-ema-and-15-ema-crossover-profitable-trading-strategy



หลักการก็คือ:

       
  • ถ้า EMA15 ตัดกับเส้น EMA200 จากล่างขึ้นบนให้เปิด BUY
  • ถ้า EMA15 ตัดกับเส้น EMA200 จากบนลงล่างให้เปิด SELL

จุด Takeprofit ประมาณ 30-40pips ตามระบบบอกว่าให้ตั้ง Stoploss เหนือเส้น EMA200 ถ้าเป็น SELL ถ้า BUY ก็ใต้เส้น EMA200
แต่ในโค้ดที่นำมาเป็นตัวอย่างในตอนนี้ผมจะให้ตั้งค่า Stoploss เองนะครับ เรามาดูโค้ดส่วนต่างๆ กันดีกว่า

ส่วนรับค่าจาก user:


จากโค้ดบันทัดที่ 7-10 เป็นการประกาศตัวแปรเหมือนตอนก่อนๆ นะครับ ต่างกันแค่เราใส่ input ไว้ข้างหน้าตัวแปรที่เราต้องการให้ user ป้อนค่าเองได้ครับ


ผลที่ได้จากการประกาศตัวแปรเป็น input:



จากโค้ดบันทัดที่ 13-15 เป็นการประกาศตัวแปรที่เราจะใช้ใน EA ครับ โดย:

       
  • bar จะใช้เป็นตัวบอกว่าแท่งราคาที่กำลังทำงานอยู่เป็นแท่งใหม่แล้วหรือยังครับ
  • factor เป็นตัวแปรที่เอาไว้ช่วยให้เราไม่ต้องเปลี่ยนค่า input ตอนเราเปลี่ยนไปมาระหว่างโบร้กเกอร์ 4 จุดหรือ 5 จุดครับ
  • trend เอาไว้จำว่าตอนนี้เราอยู่ในช่วงเทนด์ขาขึ้นหรือลง

บันทัด 18-25 เป็นฟังก์ชัน OnInit() เป็นส่วนที่ทำงานแรกของ EA
ในฟังก์ชันนี้มีมีส่วนตรวจสอบว่า EA เรารันอยู่ในโบร้กกี่จุด
ถ้า 3 หรือ 5 จุด ให้ factor=10 นอกนั้นให้ factor=1
ซึ่งตัวแปร factor นี้เราจะได้ใช้ในโค้ดข้างล่างๆ ครับ



บันทัด 28-31 เป็นฟังก์ชัน DeInit() จะรันตอนเราเปลี่ยน Time Fame หรือนำ EA ออกจากกราฟ
ในฟังก์ชันนี้ผมใส่ Comment(""); ไว้เพื่อ clear ข้อความที่ EA แสดงออกบนกราฟ

มาถึงส่วนทำงานจริงๆ ของ EA ตัวนี้นะครับ ผมจะอธิบายแยกเป็นส่วนๆ ดังนี้


บันทัดที่ 34-39 ส่วนนี้เป็นส่วนที่ผมบอกว่าตัวแปร bar เอาไว้เช็คว่าราคาแท่งเราทำงานอยู่ขึ้นแท่งใหม่หรือยัง
ในตอนแรกเราประกาศให้ bar =-1 แล้วสมมติว่า Bars = 43213 ดังนั้นในการทำงานตอนแรกเงื่อนไขนี้จะเป็นเท็จ
ดังนั้นคำสั่ง return จะไม่ทำงาน จะไปทำคำสั่ง bar=Bars แทน ตอนนี้ bar ของเราจะเท่ากับ 43213
สมมติว่ามีสัญญาณราคาส่งมา แล้ว EA เราทำงาน แต่ว่าราคายังไม่ปิดขึ้นแท่งใหม่ ดังนั้นคำสั่ง if(bar==Bars) จะเป็นจริง
คำสั่ง return ทำงาน คือออกจากฟังก์ชัน OnTick() ดังนั้นจะไม่มีคำสั่งใดๆ ถูกกระทำ



บันทัดที่ 40 และ 41 เป็นการอ่านค่าจากเส้น EMA15 และเส้น EMA200 โดยที่ค่าที่ได้จากเส้น EMA15 จะเก็บไว้ในตัวแปร fast_ma
และเส้น EMA200 จะเอาเก็บไว้ที่ตัวแปร slow_ma



บันทัด 43-44 เป็นส่วนกำหนดค่า Stoploss และ Takeprofit
โดยโค้ดส่วนนี้จะเห็นว่าเราใช้ตัวแปร factor มาเป็นส่วนคำนวณด้วย รายละเอียดส่วนนี้ได้กล่าวเอาไว้แล้วใน ตอนที่ 4
ฟังก์ชัน NormalizeDouble() เอาไว้กำหนดจุดทศนิยมของตัวแปรประเภท floating โดยในโค้ดจะใช้ตัวแปร Digits เป็นตัวบอกจำนวนจุดทศนิยม


โค้ดส่วนนี้เอาไว้แสดงผลว่าขณะนี้เป็นขาขึ้นหรือขาลง

ตัวอย่างการแสดงผลบนกราฟของ EA:







บันทัดที่ 54-89 เป็นส่วนตรวจสอบเงื่อนไขของเส้น EMA แล้วเปิด order ตามเงื่อนไขครับ
บันทัดที่ 54 ถ้าเส้น EMA15 อยู่บนเส้น EMA200 และก่อนหน้านี้เป็นขาลง (trend=2) ให้เปิด BUY ถ้าเปิด order สำเร็จหรือไม่สำเร็จก็ตาม จะมีข้อความเป็น Alert แจ้งบอก
หลังจากนั้นในบันทัด 68 ให้ trend=1 เพื่อบอกว่าตอนนี้เทรนด์เป็นขาขึ้นแล้ว
ในบันทัด 54 นั้นมีตรวจสอบด้วยว่า trend มีค่าเป็น -1 หรือเปล่า ตรงนี้เอาไว้เช็คตอน EA ทำงานครั้งแรกของการทำงานครับ เพราะว่าในตอนแรกเราประกาศห้ trend มีค่าเป็น -1 นั่นเอง
แบบนี้ EA จะไม่รอให้เกิดการตัดกันของเส้น EMA ก่อน ถ้าเส้น EMA15 อยู่บน เปิด BUY ถ้าเส้น EMA15 อยู่ล่าง เปิด SELL ทันที ถ้าหากต้องการรอสัญญาณตัดกันของเส้น EMA ก่อน ต้อง
ลบ trend==-1 ออกครับ
ในบันทัด 71-89 เป็นส่วนของการเช็คและเปิด order ฝั่ง SELL ครับ

เป็นอย่างไรบ้าง ครับ สำหรับ  การสร้าง EA Forex ให้เปิด Order จากเส้น EMA เพื่อนๆก็น่าจะเข้าใจและทำได้มากขึ้นแล้วนะครับ สำหรับท่านใดที่มีข้อสงสัยเกี่ยวกับการสร้างระบบ เทรด forex หรือ Forex system เป็นของตัวเอง โดยสร้างให้เป็น EA forex เพื่อการใช้งานจะได้เทรดแทนท่านไม่ต้องมานั่งเฝ้ากราฟ ตลอดเวลา ก็สามารถโพสสอบถามกันได้ตลอดเลย นะครับ


สามารถดาวน์โหลดโค้ดเต็มๆ ได้ที่ไฟล์แนบนะครับ ในตอนหน้าเราจะมา BackTest EA แบบ 99.9% กันครับ


(TH)** (TH)** (TH)**

หัวข้อที่เกี่ยวข้องกับการเขียน EA Forex

การเขียน EA Forex บทที่ 1 : การเขียนEA Forex การสร้าง EA นั้นง่ายใครๆ ก็เขียนได้ - ตอนที่ 1 ปูพื้นฐานกันก่อน Forex EAตัวแรก

การเขียน EA Forex บทที่ 2 : การเขียน EA Forex การสร้าง EA นั้นง่ายใครๆ ก็เขียนได้ - ตอนที่ 2 อ่านค่าจาก Indicator forex

การเขียน EA Forex บทที่ 3 : การเขียน EA Forex นั้นง่ายใครๆ ก็เขียนได้ - ตอนที่ 3 การเขียนคำสั่งพื้นฐานที่เกี่ยวกับ Account

การเขียน EA Forex บทที่ 4 : การเขียน EA Forex นั้นง่ายใครๆ ก็เขียนได้ - ตอนที่ 4 การเขียนคำสั่งที่เกี่ยวกับ Order ของ EA Forex

การเขียน EA Forex บทที่ 5 :การเขียน EA Forex นั้นง่ายใครๆ ก็เขียนได้ - ตอนที่ 5 การเขียน EA forex เพื่อให้การแสดงผลบนกราฟ

การเขียน EA Forex บทที่ 6 : การเขียน EA Forex นั้นง่ายใครๆ ก็เขียนได้ - ตอนที่ 6 สร้าง EA Forex ให้เปิด Order จากเส้น EMA

การเขียน EA Forex บทที่ 7 :การเขียน EA Forex นั้นง่ายใครๆ ก็เขียนได้ - ตอนที่ 7 การทดสอบ Back Test EA Forex 99.00 %

VPS Forex สำหรับ รัน Forex EA :ถ้าจะใช้ VPS forex รัน EA แนะนำที่นี่ครับ SocialVPS.Net ค่า Ping ต่ำและราคาถูกมากครับ

และสุดท้าย Myfxbook :อย่าลืมเอา Port ของท่าน ใส่ ใน Myfxbook เพื่อติดตามผลนะครับ

[/list]

*

sorana

ขอบคุณครับ   เป็นผู้ให้ จริง ๆ  (TH)** **6105**

*

kimlt

สุดยอดเลยครับ ขอบคุณครับ

*

isuccess

ขอบคุณหลายๆเด้อ

*

Hongwandee

อ่านเเล้วได้ความรู้ที่ดีมากเลยนะค่ะ

*

taveedake

ถ้ามีระบบ money management  กับ ระบบล็อกกำไร และไม่ต้องเบิ้ลล็อต ด้วยจะดีมากเลย อยากได้ๆ ็Hea**

สอบถามหน่อยครับ

ถ้าเราจะตั้งให้มัน Pending order ได้ไหมครับ เช่นให้มัน Pending order buy ที่ EMA 200 แบบนี้อะครับต้องเขียนยังไง

(TH)** (TH)** (TH)** (TH)**

return จะไม่ทำงาน จะไปทำคำสั่ง bar=Bars แทน ตอนนี้ bar ของเราจะเท่ากับ 43213
สมมติว่ามีสัญญาณราคาส่งมา แล้ว EA เราทำงาน แต่ว่าราคายังไม่ปิดขึ้นแท่งใหม่ ดังนั้นคำสั่ง if(bar==Bars) จะเป็นจริง

จบแท่ง แท่งไหนครับ TF เท่าไหร่เราจะรู้ได้ไงครับ จบแท่ง 1M หรือป่าวครับ แล้วถ้าใช่ อยากให้จบแท่ง 4H จะต้องทำไงครับ

ขอบคุณครับผม  (TH)** (TH)** (TH)** (TH)**

*

sittisak.gularbphtthong

อ้างจาก: Ukrist Srisamarn ที่ 25, กันยายน  2018, 12:02:16 PM
return จะไม่ทำงาน จะไปทำคำสั่ง bar=Bars แทน ตอนนี้ bar ของเราจะเท่ากับ 43213
สมมติว่ามีสัญญาณราคาส่งมา แล้ว EA เราทำงาน แต่ว่าราคายังไม่ปิดขึ้นแท่งใหม่ ดังนั้นคำสั่ง if(bar==Bars) จะเป็นจริง

จบแท่ง แท่งไหนครับ TF เท่าไหร่เราจะรู้ได้ไงครับ จบแท่ง 1M หรือป่าวครับ แล้วถ้าใช่ อยากให้จบแท่ง 4H จะต้องทำไงครับ

ขอบคุณครับผม  (TH)** (TH)** (TH)** (TH)**

if(bar==iBars(Symbol(),240))
      return;
      bar=iBars(Symbol(),240);

มั้งนะครับ

สวดยอดมากเลยครับผม อธิบายได้ละเอียด เข้าใจง่ายมั๊กๆ เลยครับผม

รอติดตามตอนต่อไปครับ

*

mayabushi

อ่านแล้วเข้าใจ