ผู้เขียน หัวข้อ: หาแนวร่วมและพัฒนา EA Renko Chart  (อ่าน 11486 ครั้ง)

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

ออฟไลน์ zakailab

  • นักลงทุนขั้นต้น
  • *
  • กระทู้: 33
  • พลังน้ำใจ: 6
  • ไปให้ถึงฝั่งฝัน
หาแนวร่วมและพัฒนา EA Renko Chart
« เมื่อ: 17 กรกฎาคม 2015, 22:18:53 PM »
ลองเอาไปเล่นดูนะครับผม

วิธีติดตั้งและใช้งาน Renko Chart

1. Copy ไฟล์ จำนวน 2 ไฟล์  ไปไว้ใน โฟล์เดอร์ MQ4 ที่ชื่อ Experts
    1.1 (E) RenkoLiveChart_v600.1
    1.2 Renko Trading by Zakai v1.2 หรือ tumko Zakai v1.9

2. ลาก EA (E) RenkoLiveChart_v600.1 ไปใส่กราฟคู่เงินของเรา ใช้ กราฟ H1 (1ชั่วโมง)  ให้กำหนดค่า RenkoBoxSize เท่ากับหรือมากกว่า 5 ขึ้นไป (ผมใช้ประมาณ 10)
ค่าอื่นไม่ต้องเปลี่ยนแปลง ไม่งั้น EA Renko Trading by Zakai v1.2 ไม่ทำงาน
   

3. คลิกเมนูของ MQ4 File --> Open Offline --> เลือกค่าเงินของเราที่ใส่ EA แต่เป็น TimeFrame m2

4. ลาก EA Renko Trading by Zakai v1.2 หรือ tumko Zakai v1.9 ไปใส่กราฟ TimeFrame m2

5. กำหนดค่า config ต่าง แล้วแต่ชอบเลยครับ

หมายเหตุ  ต้องรัน EA ตอนตลาดค่าเงิน Forex เปิดเท่านั้น นะครับ ไม่งั้น EA (E) RenkoLiveChart_v600.1 จะไม่ทำงานครับ (ไม่แสดงกราฟแบบ Offline)

คำเตือน  ห้ามลงเงินจริงนะครับ ศึกษาก่อน และ ลอง test Demo ดูครับ

ผลการ Backtest  (ของจริงมันต่างกันมากครับ) :-X
« แก้ไขครั้งสุดท้าย: 02 กุมภาพันธ์ 2016, 01:21:31 AM โดย zakailab »

ออฟไลน์ tstcfdgk

  • เลิกแล้ว......กับการล้าง
  • นักลงทุนขั้นเทพ
  • ****
  • กระทู้: 794
  • พลังน้ำใจ: 26
Re: หาแนวร่วมและพัฒนา EA Renko Chart
« ตอบกลับ #1 เมื่อ: 17 กรกฎาคม 2015, 23:12:59 PM »
รบกวนบอกสิ่งที่จะพัฒนามาครับ ว่าระบบนี้ทำงานอย่างไร เด่นตรงไหน ด้อยตรงไหน จะได้ดูให้ถูกครับ
ปล.ผมก็ใช้ระบบนี้เป็นอีกหนึ่งระบบอยู่ครับ

ออฟไลน์ zakailab

  • นักลงทุนขั้นต้น
  • *
  • กระทู้: 33
  • พลังน้ำใจ: 6
  • ไปให้ถึงฝั่งฝัน
Re: หาแนวร่วมและพัฒนา EA Renko Chart
« ตอบกลับ #2 เมื่อ: 18 กรกฎาคม 2015, 01:17:14 AM »
หลักการทำงานตามรูปด้านล่างเลยครับ

ข้อเด่น
1. ไม่ใช้ระบบเบิ้ลล้อต เหมือนตระกูล swb (อัตราความเสี่ยงน้อย)
2. ชอบกราฟ แบบเป็น Trending
3. มีระบบ SL และ TallingStop

ข้อด้อย
1. ไม่ชอบกราฟลักษณะ Sideway
2. ควรเล่นคู่เงินที่มีค่า เสปรดน้อย ๆ
3. EA เมื่อโดน SL จะเข้าออเดอร์ ติดๆ กัน (กำลังหาสาเหตุอยู่ครับ)
4. การ Set ค่า RenkoBoxSize (ใน EA (E) RenkoLiveChart_v600.1) ต้องสัมพันธ์กันกับ การตั้ง TP, SL, TallingStops

สิ่งที่ต้องปรับปรุง
- ต้องเพิ่มกฎการเข้าออเดอร์จาก Indicator ตัวอื่น เพื่อหาจังหวะเข้า-ออก ที่แม่นยำ

EA Renko Trading by Zakai  ผมเคยให้โปรแกรมเมอร์เขียนไว้ให้ และแก้ไขหลายครั้ง โดยแก้รวมๆ แล้ว เกือบหมื่นครับ ผมเทสแล้วเจอจุดบอดหลายอย่างครับ คือเมื่อ    เจอสัญญาณผิด มันเปิดออเดร์ใหม่ทันที ครับ มันไม่รอจำนวนแท่งที่ตั้งไว้ครับ ลองให้โปรแกรมเมอร์แก้หลายครั้ง เมื่อ Backtest ก็ทำงานปกติครับ แต่ถ้า  Forward Test มันไม่เหมือน Backtest เลยครับ เวอร์ชั่นล่าสุด มีค่า config ได้มากกว่านี้ ไว้ผมลงไว้ให้ไปลองเทสดูนะครับ ถ้าใครจะขอ EA ไปแก้ไข หรือศึกษา บอก เมล์มานะครับผมจะส่งไฟล์ MQ4 ไปให้ ครับ

การ Backtest ea ไม่สามรถทำได้ปกติใน โปรแกรม MT4 นะครับ  ต้องใช้วิธิพิเศษ ครับ  ถ้างัยผมจะมาลงวิธีให้นะครับ
« แก้ไขครั้งสุดท้าย: 19 กรกฎาคม 2015, 11:33:47 AM โดย zakailab »

ออฟไลน์ zakailab

  • นักลงทุนขั้นต้น
  • *
  • กระทู้: 33
  • พลังน้ำใจ: 6
  • ไปให้ถึงฝั่งฝัน
Re: หาแนวร่วมและพัฒนา EA Renko Chart
« ตอบกลับ #3 เมื่อ: 19 กรกฎาคม 2015, 09:43:02 AM »
วิธีการ Backtest EA Renko

1. Copy ไฟล์ ชื่อ OfflineTestHelper.ex4 ไปไว้ใน โฟล์เดอร์ MT4 ของเรา ---> MQL4\Scripts
   
2. ลาก Scripts OfflineTestHelper ไปใส่กราฟคู่เงินของเรา TimeFrame m2 (กราฟที่เราสร้างแบบ Renko ไว้)
 
3. เลือกเมนู Inputs

4. เปลี่ยนชื่อ Server เป็น renko

5. เลือกเมนู File---> Open Offline

6. เลือกคู่เงินที่เราทำไว้ สังเกตุว่าจะเป็น Time Frame m1 และ กด Open

7. กราฟ Renko Chart แบบ m1 ก็พร้อมใช้งานแล้ว
« แก้ไขครั้งสุดท้าย: 19 กรกฎาคม 2015, 12:18:30 PM โดย zakailab »

ออฟไลน์ new_trader

  • นักลงทุนขั้นต้น
  • *
  • กระทู้: 7
  • พลังน้ำใจ: 0
Re: หาแนวร่วมและพัฒนา EA Renko Chart
« ตอบกลับ #4 เมื่อ: 09 ตุลาคม 2015, 23:06:48 PM »
วิธีการ Backtest EA Renko

1. Copy ไฟล์ ชื่อ OfflineTestHelper.ex4 ไปไว้ใน โฟล์เดอร์ MT4 ของเรา ---> MQL4\Scripts
   
2. ลาก Scripts OfflineTestHelper ไปใส่กราฟคู่เงินของเรา TimeFrame m2 (กราฟที่เราสร้างแบบ Renko ไว้)
 
3. เลือกเมนู Inputs

4. เปลี่ยนชื่อ Server เป็น renko

5. เลือกเมนู File---> Open Offline

6. เลือกคู่เงินที่เราทำไว้ สังเกตุว่าจะเป็น Time Frame m1 และ กด Open

7. กราฟ Renko Chart แบบ m1 ก็พร้อมใช้งานแล้ว

รบกวนท่าน zakailab  ช่วยอธิบายเรื่อง Backtest หน่อยครับ
ขอแบบ  ทีล่ะขั้นตอน-ทุกรายละเอียด  เนื่องจากว่าผมพยามหาวิธีทดสอบมาเกือบอาทิตย์แล้ว
ก็ยังทดสอบไม่ได้   ส่วนมากจะเจอปัญหาจาก OfflineTestHelper ตามรูปครับ
« แก้ไขครั้งสุดท้าย: 09 ตุลาคม 2015, 23:08:46 PM โดย new_trader »

ออฟไลน์ Kongfang

  • นักลงทุนขั้นเทพ
  • ****
  • กระทู้: 210
  • พลังน้ำใจ: 11
Re: หาแนวร่วมและพัฒนา EA Renko Chart
« ตอบกลับ #5 เมื่อ: 10 ตุลาคม 2015, 02:31:11 AM »
ผมอยากได้วิธีปรับ กราฟธรรมดาเปนrenkoกราฟ ทำงัยครับ

ออฟไลน์ new_trader

  • นักลงทุนขั้นต้น
  • *
  • กระทู้: 7
  • พลังน้ำใจ: 0
Re: หาแนวร่วมและพัฒนา EA Renko Chart
« ตอบกลับ #6 เมื่อ: 11 ตุลาคม 2015, 02:28:51 AM »
ผมอยากได้วิธีปรับ กราฟธรรมดาเปนrenkoกราฟ ทำงัยครับ

ตามด้านบน กระทู้แรกเลยครับ

ออฟไลน์ D_Diamond

  • นักลงทุนขั้นเทพ
  • ****
  • กระทู้: 2201
  • พลังน้ำใจ: 133
  • ปล่อยอีเอทิ้งไว้ แล้วค่อยมาดูปีหน้า $_$
    • NoviceForex
Re: หาแนวร่วมและพัฒนา EA Renko Chart
« ตอบกลับ #7 เมื่อ: 11 ตุลาคม 2015, 10:00:46 AM »
แบคเทสแบบนี้กับอีเอ renko มันไม่มีทางเหมือนจริงอยู่แล้วครับ

แล้วหาแนวร่วมพัฒนาอีเอ แต่ไม่ให้โค้ดมา ผมก็ไม่รู้จะร่วมยังไง
« แก้ไขครั้งสุดท้าย: 11 ตุลาคม 2015, 10:02:50 AM โดย D_Diamond »

ออฟไลน์ intellixa

  • นักลงทุนขั้นเก๋า
  • **
  • กระทู้: 87
  • พลังน้ำใจ: 3
Re: หาแนวร่วมและพัฒนา EA Renko Chart
« ตอบกลับ #8 เมื่อ: 11 ตุลาคม 2015, 15:03:15 PM »
แบคเทสแบบนี้กับอีเอ renko มันไม่มีทางเหมือนจริงอยู่แล้วครับ

แล้วหาแนวร่วมพัฒนาอีเอ แต่ไม่ให้โค้ดมา ผมก็ไม่รู้จะร่วมยังไง

คุณ zakailab เขาให้แจ้ง email เพื่อขอ code MQL4 ครับ  (ตามในกระทู้ต้นๆ)
« แก้ไขครั้งสุดท้าย: 11 ตุลาคม 2015, 15:04:15 PM โดย intellixa »

ออฟไลน์ D_Diamond

  • นักลงทุนขั้นเทพ
  • ****
  • กระทู้: 2201
  • พลังน้ำใจ: 133
  • ปล่อยอีเอทิ้งไว้ แล้วค่อยมาดูปีหน้า $_$
    • NoviceForex
Re: หาแนวร่วมและพัฒนา EA Renko Chart
« ตอบกลับ #9 เมื่อ: 11 ตุลาคม 2015, 22:18:09 PM »
ผมอยากให้โพสลงในบอร์ดเลยมากกว่าครับ บอร์ดมันจะได้ไม่เงียบ  คนที่ยังไม่สน/ไม่รู้จัก อาจจะหันมาสนใจด้วย

ออฟไลน์ zakailab

  • นักลงทุนขั้นต้น
  • *
  • กระทู้: 33
  • พลังน้ำใจ: 6
  • ไปให้ถึงฝั่งฝัน
Re: หาแนวร่วมและพัฒนา EA Renko Chart
« ตอบกลับ #10 เมื่อ: 15 ตุลาคม 2015, 01:52:29 AM »
ขอโทษทีครับ ทีหายไปนานเลย ช่วงแรกๆ ก็เข้ามาดูบ่อยๆ แต่เห็นข้อความไม่มีถามเพิ่มก็เลยไม่ได้เข้ามาตอบครับ
ประกอบกับผม ว่าจะลองเอาจริงกับการเทรดด้วยมือ โดยไม่ใช้ EA อ่ะครับ ต้องขอโทษจริง ๆ ครับ เพิ่งเห็นข้อความวันนี้เองครับ (นานๆ จะเข้ามาดูซักครั้ง)

สำหรับคุณ D_Diamond ผมนับถือมากเลยครับ เห็นอยู่ในบอร์ดนี้มานานแล้ว ผมเคยเข้าไปดูผลการเทรด myfxbook ของท่านผลงานสุดยอดครับ  ยังงัยก็ขอขอบคุณสำหรับคำแนะนำนะครับ

เด๊่ยวผมจะมาลงให้นะครับ สำหรับไฟล์ mq4

ออฟไลน์ zakailab

  • นักลงทุนขั้นต้น
  • *
  • กระทู้: 33
  • พลังน้ำใจ: 6
  • ไปให้ถึงฝั่งฝัน
Re: หาแนวร่วมและพัฒนา EA Renko Chart
« ตอบกลับ #11 เมื่อ: 15 ตุลาคม 2015, 02:01:24 AM »
- ไม่ทราบ ท่าน new_trader สามารถ Backtest ได้หรือยังครับ
- แล้วท่าน Kongfang เปลี่ยนกราฟเป็น Renko ได้หรือยังครับ


ใช้ MT4 version: 4.00 หรือเปล่า
และของผมเป็น Build 840 อ่ะครับ

ผมลาก Scripts ใส่ก็ปกติครับ
« แก้ไขครั้งสุดท้าย: 15 ตุลาคม 2015, 02:26:40 AM โดย zakailab »

ออฟไลน์ zakailab

  • นักลงทุนขั้นต้น
  • *
  • กระทู้: 33
  • พลังน้ำใจ: 6
  • ไปให้ถึงฝั่งฝัน
Re: หาแนวร่วมและพัฒนา EA Renko Chart
« ตอบกลับ #12 เมื่อ: 15 ตุลาคม 2015, 03:05:37 AM »
ไฟล์ ea แบบ MQ4 ครับ

ออฟไลน์ zakailab

  • นักลงทุนขั้นต้น
  • *
  • กระทู้: 33
  • พลังน้ำใจ: 6
  • ไปให้ถึงฝั่งฝัน
Re: หาแนวร่วมและพัฒนา EA Renko Chart
« ตอบกลับ #13 เมื่อ: 15 ตุลาคม 2015, 07:11:10 AM »
วิธี set เพิ่มเติมครับ

ผมได้ แปลงกราฟ renko ค่าเงิน EURUSD M1 มาให้ลองด้วยครับ

โดย Copy โฟลเดอร์ test ไปวางใน โฟลเดอร์ mt4  เช่น MetaTrader 4 - RoboForex--->history

แล้ว login เข้าโปรแกรมใหม่ เปลี่ยนเฉพาะ Server เป็น test
« แก้ไขครั้งสุดท้าย: 15 ตุลาคม 2015, 07:16:39 AM โดย zakailab »

ออฟไลน์ new_trader

  • นักลงทุนขั้นต้น
  • *
  • กระทู้: 7
  • พลังน้ำใจ: 0
Re: หาแนวร่วมและพัฒนา EA Renko Chart
« ตอบกลับ #14 เมื่อ: 19 ตุลาคม 2015, 00:16:25 AM »
ตอนนี้ก็ยังทดสอบไม่ได้เหมือนเดิมครับ
mt4 v4.0 build 890 ทั้ง 5 ตัว exness/lobo/fxcl/xm/metaquotes
เป็นเหมือนกันหมด  ตอนนี้ก็เลยใช้ไฟล์ที่ท่านแปลงมาทดสอบไปพรางๆก่อน
แต่แท่งเทียนมันกระโดดห่างกันมั้ง ชิดกันมั้ง ไม่รู้มีผลกับการทดสอบรึปล่าว

เรื่องการ เข้าออก ออเดอร์  ท่านเคยใช้ cci ดูบ้างยังครับ
อาจจะเข้าเฉพาะโซน over หรือโซนปกติก็ได้  หรือจะเอาแนวทางระบบเทรดของชาวไนจีเรีย
มาเทรดบนกราฟ  renko เลย ผมว่ามันก็น่าลุ้นอยู่น่ะ

« แก้ไขครั้งสุดท้าย: 19 ตุลาคม 2015, 04:10:36 AM โดย new_trader »

ออฟไลน์ zakailab

  • นักลงทุนขั้นต้น
  • *
  • กระทู้: 33
  • พลังน้ำใจ: 6
  • ไปให้ถึงฝั่งฝัน
Re: หาแนวร่วมและพัฒนา EA Renko Chart
« ตอบกลับ #15 เมื่อ: 19 ตุลาคม 2015, 05:01:53 AM »
ไม่ทราบได้เข้าไปวาง Scripts และ Ea ที่ เมนูนี้เปล่าครับ

การเข้าออเดอร์ถ้ามี cci หรือ ระบบอื่นเข้าช่วยน่าจะทำให้ ออเดอร์เข้าแม่นยำขึ้น นะครับ แต่ถ้าไม่เขียนเป็น Ea คงต้องนั่งเฝ้ากราฟทั้งวันครับเพราะ Renko ไม่เหมือนระบบแท่งเทียนครับ จะเขียน Ea เอง ก็เขียนไม่เป็นครับ และโดยมากคนที่เขียน ea เข้าก็ไม่คุ้นกับระบบ Renko ครับ เข้าว่าเขียนยากครับ
« แก้ไขครั้งสุดท้าย: 19 ตุลาคม 2015, 05:12:42 AM โดย zakailab »

ออฟไลน์ zakailab

  • นักลงทุนขั้นต้น
  • *
  • กระทู้: 33
  • พลังน้ำใจ: 6
  • ไปให้ถึงฝั่งฝัน
Re: หาแนวร่วมและพัฒนา EA Renko Chart
« ตอบกลับ #16 เมื่อ: 20 ตุลาคม 2015, 04:11:43 AM »
ถ้าท่านใดมีปัญหาในการติดตั้ง จะลองให้ผม Remote เครื่องคอมพิวเตอร์ให้ก็ได้นะครับ (ถ้าผมแก้ไขไม่่ได้ต้องขออภัยด้วยนะครับ)
 
ดาว์โหลดโปรแกรม remote ด้านล่างครับ แล้ว ติดต่อผมผ่านทาง ID LINE : z1234567890b

ผมชื่อตั้ม นะครับ
« แก้ไขครั้งสุดท้าย: 20 ตุลาคม 2015, 04:25:20 AM โดย zakailab »

ออฟไลน์ zakailab

  • นักลงทุนขั้นต้น
  • *
  • กระทู้: 33
  • พลังน้ำใจ: 6
  • ไปให้ถึงฝั่งฝัน
Re: หาแนวร่วมและพัฒนา EA Renko Chart
« ตอบกลับ #17 เมื่อ: 21 ตุลาคม 2015, 04:10:15 AM »
มีท่านใดพอแก้ไขให้ ea เปิดมากกว่า 1 ออเดอร์ (ค่าเดิม เปิดออเดอร์แล้วต้องปิดก่อนถึงจะเปิดออเดอร์ต่อไป)

ผมอยากให้เจอสัญญาณแล้วเปิดออเดอร์ ทุกสัญญาณเลยครับ ว่าจะลองทดสอบหน่อยครับว่าผลงานจะเป็นอย่างไรครับ

ทั้งนี้ผมได้แนบทั้งโค้ด และไฟล์มาด้วยแล้วครับ


#property strict

input double Lots=0.01;
input int TP=50;
input int SL=100;
input int TradeOnTotalBars=3;
input int TradeOffTotalBars = 1;
input int BarsPlus =4;
input int Magicnumber = 1234;
input bool UseTrailingStop=true;
input int TrailingStart_Pips=100;
input int TrailingStop_Pips=90;

int getlasterror,i,first_bar,pipstep,barOpen=0,ChkOpen=1,ChkBarOrder = 0;
bool first_run=true;

int cnttrailBuy  = 0;
int cnttrailSell = 0;

int trailing = 1;

int OnInit()
{
first_bar=Bars;
pipstep = TrailingStop_Pips;

return(INIT_SUCCEEDED);
}
int CountOrder(int type){
int total;
     
      for(int r = 0;r < OrdersTotal();r++){
               if(OrderSelect(r,SELECT_BY_POS)==true){
                  if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magicnumber){
                     if(type = OP_BUY){
                        total++;
                     }
                     else if(type == OP_SELL){
                        total++;
                     }
                     
                  } // End OrderMagicNumber
               }// End if OrderSelect
      } // End For
   
   
   return(total); 
}
void OnTick()
{
Comment("TP: ",DoubleToStr(TP,0),"\nSL: "+DoubleToStr(SL,0)
,"\nTrailingStart_Pips: "+DoubleToStr(TrailingStart_Pips,0)
,"\nTrailingStop_Pips: "+DoubleToStr(TrailingStop_Pips,0)
,"\n--------------------------------------------------------"
,"\nStop Level: "+DoubleToStr(MarketInfo(Symbol(),MODE_STOPLEVEL),0));


   if(OrdersTotal() == 0){
      trailing = 1;
   }
  /* if(CountOrder(OP_SELL)== 0){
      trailing = true;
   }*/
   if(Bars == barOpen){
      ChkOpen = 1;
   }
   if(OrdersTotal() == 0 && ChkBarOrder == 1){
     
      barOpen = 0;
      barOpen += Bars+BarsPlus;
      ChkOpen = 0;
      ChkBarOrder = 0;
   }
   if(first_run)
   {
      if(Bars!=first_bar)
      {
         if(OrdersNormallTotal()==0)
         {
            if(Close[1]>Open[1])
            {
            getlasterror=-1;
               while(getlasterror==-1 || (!IsTesting() && (getlasterror==129 || getlasterror==138 || getlasterror==136)))
               {
               if(CountOrder(OP_BUY)== 0){cnttrailBuy = 0;}
               //OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SetStoploss(OP_BUY,Ask,SL),0,"RenkoTrading",Magicnumber,0,clrNONE);
               getlasterror=GetLastError();
               ShowError(getlasterror,"Opening BUY");
               RefreshRates();
               }
            }
            else
            {
            getlasterror=-1;
               while(getlasterror==-1 || (!IsTesting() && (getlasterror==129 || getlasterror==138 || getlasterror==136)))
               {
               if(CountOrder(OP_SELL)== 0){cnttrailSell = 0;}
               //OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SetStoploss(OP_SELL,Bid,SL),0,"RenkoTrading",Magicnumber,0,clrNONE);
               getlasterror=GetLastError();
               ShowError(getlasterror,"Opening SELL");
               RefreshRates();
               }
            }
         }
      first_run=false;
      }
   }
   else
   {
   int total_bars;
   
      // Start Chk Close Order Buy and Sell
      if(OrdersNormallTotal()>0)
      {
      OrderSelect(TicketLastNormallOpening(),SELECT_BY_TICKET,MODE_TRADES);
         if(OrderType()==OP_BUY && Close[1]<Open[1] && OrderMagicNumber() == Magicnumber)
         {
         total_bars=0;
         
            for(i=1;i<=TradeOffTotalBars;i++)
            {
               if(Close<Open)
               total_bars++;
               else
               {
               total_bars=0;
               break;
               }
            }
           
            if(total_bars>=TradeOffTotalBars)
            {
            getlasterror=-1;
               while(getlasterror==-1 || (!IsTesting() && (getlasterror==129 || getlasterror==138 || getlasterror==136)))
               {
               OrderClose(OrderTicket(),OrderLots(),Bid,3,clrNONE);
               barOpen =0;
               barOpen += Bars+BarsPlus;ChkOpen = 0;
               getlasterror=GetLastError();
               ShowError(getlasterror,"Closing BUY");
               RefreshRates();
               }
            }
         }
         else if(OrderType()==OP_SELL && Close[1]>Open[1] && OrderMagicNumber() == Magicnumber)
         {
         total_bars=0;
         
            for(i=1;i<=TradeOffTotalBars;i++)
            {
               if(Close>Open)
               total_bars++;
               else
               {
               total_bars=0;
               break;
               }
            }
           
            if(total_bars>=TradeOffTotalBars)
            {
            getlasterror=-1;
               while(getlasterror==-1 || (!IsTesting() && (getlasterror==129 || getlasterror==138 || getlasterror==136)))
               {
               OrderClose(OrderTicket(),OrderLots(),Ask,3,clrNONE);
               barOpen =0;
               barOpen += Bars+BarsPlus;ChkOpen = 0;
               getlasterror=GetLastError();
               ShowError(getlasterror,"Closing SELL");
               RefreshRates();
               }
            }
         }
      } // end check Close Order
     
      if(OrdersNormallTotal()==0 && ChkOpen == 1)
      {
      total_bars=0;
     
         if(Close[1]>Open[1])
         {
            for(i=1;i<=TradeOnTotalBars;i++)
            {
               if(Close>Open)
               total_bars++;
               else
               {
               total_bars=0;
               break;
               }
            }
           
            if(total_bars>=TradeOnTotalBars)
            {
            getlasterror=-1;
               while(getlasterror==-1 || (!IsTesting() && (getlasterror==129 || getlasterror==138 || getlasterror==136)))
               {
               if(CountOrder(OP_BUY)== 0){cnttrailBuy = 0;}
               OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SetStoploss(OP_BUY,Ask,SL),Ask+TP*Point,"RenkoTrading",Magicnumber,0,clrNONE);
               Print("Buy");barOpen += Bars+BarsPlus;
               ChkBarOrder = 1;
               getlasterror=GetLastError();
               ShowError(getlasterror,"Opening BUY");
               RefreshRates();
               }
            }
         }
         else
         {
            for(i=1;i<=TradeOnTotalBars;i++)
            {
               if(Close<Open)
               total_bars++;
               else
               {
               total_bars=0;
               break;
               }
            }
           
            if(total_bars>=TradeOnTotalBars)
            {
            getlasterror=-1;
               while(getlasterror==-1 || (!IsTesting() && (getlasterror==129 || getlasterror==138 || getlasterror==136)))
               {
               if(CountOrder(OP_SELL)== 0){cnttrailSell = 0;}
               OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SetStoploss(OP_SELL,Bid,SL),Bid-TP*Point,"RenkoTrading",Magicnumber,0,clrNONE);
               Print("Sell");barOpen += Bars+BarsPlus;
               ChkBarOrder = 1;
               getlasterror=GetLastError();
               ShowError(getlasterror,"Opening SELL");
               RefreshRates();
               }
            }
         }
      }
   }
   
   for(i=OrdersTotal()-1;i>=0;i--)
   {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol() && OrderComment()=="RenkoTrading" && OrderMagicNumber() == Magicnumber)
      {
         if(UseTrailingStop)
         {
            if(trailing == 1){
               //trailing = 0;
               
               if(cnttrailBuy < 1){
                  barOpen += Bars+BarsPlus;
                  if(OrderType()==OP_BUY && (OrderStopLoss()==0 || OrderStopLoss()<OrderOpenPrice()) && Bid-OrderOpenPrice()>=TrailingStart_Pips*Point)
                  {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-((TrailingStop_Pips-10)*Point),OrderTakeProfit(),0,clrNONE);
                     ShowError(GetLastError(),"ModifySL BUY");
                     cnttrailBuy++;
                  }
                  else if(OrderType()==OP_BUY && OrderStopLoss()!=0 && OrderStopLoss()>=OrderOpenPrice() && Bid-OrderStopLoss()>=TrailingStart_Pips*Point)
                  {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-((TrailingStop_Pips-10)*Point),OrderTakeProfit(),0,clrNONE);
                     ShowError(GetLastError(),"ModifySL BUY");
                     cnttrailBuy++;
                  }
                } 
                if(cnttrailSell < 1){ 
                  barOpen += Bars+BarsPlus;
                  if(OrderType()==OP_SELL && (OrderStopLoss()==0 || OrderStopLoss()>OrderOpenPrice()) && OrderOpenPrice()-Ask>=TrailingStart_Pips*Point)
                  {
                  OrderModify(OrderTicket(),OrderOpenPrice(),Ask+((TrailingStop_Pips-10)*Point),OrderTakeProfit(),0,clrNONE);
                  ShowError(GetLastError(),"ModifySL SELL");
                  cnttrailSell++;
                  }
                  else if(OrderType()==OP_SELL && OrderStopLoss()!=0 && OrderStopLoss()<=OrderOpenPrice() && OrderStopLoss()-Ask>=TrailingStart_Pips*Point)
                  {
                  OrderModify(OrderTicket(),OrderOpenPrice(),Ask+((TrailingStop_Pips-10)*Point),OrderTakeProfit(),0,clrNONE);
                  ShowError(GetLastError(),"ModifySL SELL");
                  cnttrailSell++;
                  }
               }
               OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
               
                  if(OrderType()==OP_BUY && (OrderStopLoss()==0 || OrderStopLoss()<OrderOpenPrice())&& OrderMagicNumber() == Magicnumber)
                  {
                  ObjectCreate("TSL-"+OrderTicket(),OBJ_HLINE,0,0,0);
                  ObjectSet("TSL-"+OrderTicket(),OBJPROP_COLOR,clrWhite);
                  ObjectSet("TSL-"+OrderTicket(),OBJPROP_PRICE1,OrderOpenPrice()+(TrailingStart_Pips*Point));
                  }
                  else if(OrderType()==OP_BUY && OrderStopLoss()!=0 && OrderStopLoss()>=OrderOpenPrice())
                  {
                  ObjectCreate("TSL-"+OrderTicket(),OBJ_HLINE,0,0,0);
                  ObjectSet("TSL-"+OrderTicket(),OBJPROP_COLOR,clrWhite);
                  ObjectSet("TSL-"+OrderTicket(),OBJPROP_PRICE1,OrderStopLoss()+(TrailingStart_Pips*Point));
                  }
                  else if(OrderType()==OP_SELL && (OrderStopLoss()==0 || OrderStopLoss()>OrderOpenPrice()))
                  {
                  ObjectCreate("TSL-"+OrderTicket(),OBJ_HLINE,0,0,0);
                  ObjectSet("TSL-"+OrderTicket(),OBJPROP_COLOR,clrWhite);
                  ObjectSet("TSL-"+OrderTicket(),OBJPROP_PRICE1,OrderOpenPrice()-(TrailingStart_Pips*Point));
                  }
                  else if(OrderType()==OP_SELL && OrderStopLoss()!=0 && OrderStopLoss()<=OrderOpenPrice())
                  {
                  ObjectCreate("TSL-"+OrderTicket(),OBJ_HLINE,0,0,0);
                  ObjectSet("TSL-"+OrderTicket(),OBJPROP_COLOR,clrWhite);
                  ObjectSet("TSL-"+OrderTicket(),OBJPROP_PRICE1,OrderStopLoss()-(TrailingStart_Pips*Point));
                  }
            }
         }
      }
   }
   
   for(i=ObjectsTotal()-1;i>=0;i--)
   {
      if(StringFind(ObjectName(i),"TSL-",0)!=-1 && !FindOpeningOrderByTicket(StringToInteger(StringSubstr(ObjectName(i),4,StringLen(ObjectName(i))-4))))
      ObjectDelete(ObjectName(i));
   }

}
//+------------------------------------------------------------------+

bool FindOpeningOrderByTicket(int input_ticket)
{
   for(int func_i=OrdersTotal()-1;func_i>=0;func_i--)
   {
      if(OrderSelect(func_i,SELECT_BY_POS,MODE_TRADES) && OrderTicket()==input_ticket && OrderMagicNumber() == Magicnumber)
      return true;
   }

return false;
}

double SetStoploss(int input_type,double input_price,int input_pips)
{
   if(input_pips==0)return 0;
   else
   {
      if(input_type==OP_BUY)return input_price-(input_pips*Point);
      if(input_type==OP_SELL)return input_price+(input_pips*Point);
   }
   
return -1;
}

int TicketLastNormallOpening()
{
   for(int func_i=OrdersTotal()-1;func_i>=0;func_i--)
   {
      if(OrderSelect(func_i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol() && OrderType()<=1 && OrderComment()=="RenkoTrading" && OrderMagicNumber() == Magicnumber)
      return(OrderTicket());
   }
return(-1);
}

int OrdersNormallTotal()
{
int func_total_orders=0;
   for(int func_i=OrdersTotal()-1;func_i>=0;func_i--)
   {
   OrderSelect(func_i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Symbol() && OrderType()<=1 && OrderComment()=="RenkoTrading" && OrderMagicNumber() == Magicnumber)
      func_total_orders++;
   }
return(func_total_orders);
}

void ShowError(int input_errorcode,string input_doing)

   if(input_errorcode==0 || input_errorcode==4000)
   ObjectDelete("ErrorText");
   
   if(ErrorDescription(input_errorcode)!="more")
   {
      if(input_errorcode!=0)
      {
      ObjectCreate("ErrorText",OBJ_LABEL,0,0,0);
      ObjectSet("ErrorText",OBJPROP_CORNER,3);
      ObjectSet("ErrorText",OBJPROP_COLOR,clrRed);
      ObjectSet("ErrorText",OBJPROP_XDISTANCE,5);
      ObjectSet("ErrorText",OBJPROP_YDISTANCE,15);
      ObjectSetText("ErrorText","["+input_doing+"]"+ErrorDescription(input_errorcode),12,"Tahoma",clrRed);
      }
   }
}
//----------------------------------------------------------------------------------------------------------------
string ErrorDescription(int input_error_code)
{
string error_string;

   switch(input_error_code)
   {
   case 0:   error_string="no error";                                                   break;
   case 1:   error_string="no error, trade conditions not changed";                     break;
   case 2:   error_string="common error";                                               break;
   case 3:   error_string="invalid trade parameters";                                   break;
   case 4:   error_string="trade server is busy";                                       break;
   case 5:   error_string="old version of the client terminal";                         break;
   case 6:   error_string="no connection with trade server";                            break;
   case 7:   error_string="not enough rights";                                          break;
   case 8:   error_string="too frequent requests";                                      break;
   case 9:   error_string="malfunctional trade operation (never returned error)";       break;
   case 64:  error_string="account disabled";                                           break;
   case 65:  error_string="invalid account";                                            break;
   case 128: error_string="trade timeout";                                              break;
   case 129: error_string="invalid price";                                              break;
   case 130: error_string="invalid stops";                                              break;
   case 131: error_string="invalid trade volume";                                       break;
   case 132: error_string="market is closed";                                           break;
   case 133: error_string="trade is disabled";                                          break;
   case 134: error_string="not enough money";                                           break;
   case 135: error_string="price changed";                                              break;
   case 136: error_string="off quotes";                                                 break;
   case 137: error_string="broker is busy (never returned error)";                      break;
   case 138: error_string="requote";                                                    break;
   case 139: error_string="order is locked";                                            break;
   case 140: error_string="long positions only allowed";                                break;
   case 141: error_string="too many requests";                                          break;
   case 145: error_string="modification denied because order is too close to market";   break;
   case 146: error_string="trade context is busy";                                      break;
   case 147: error_string="expirations are denied by broker";                           break;
   case 148: error_string="amount of open and pending orders has reached the limit";    break;
   case 149: error_string="hedging is prohibited";                                      break;
   case 150: error_string="prohibited by FIFO rules";                                   break;
   
   case 4000: error_string="no error (never generated code)";                           break;
   case 4001: error_string="wrong function pointer";                                    break;
   case 4002: error_string="array index is out of range";                               break;
   case 4003: error_string="no memory for function call stack";                         break;
   case 4004: error_string="recursive stack overflow";                                  break;
   case 4005: error_string="not enough stack for parameter";                            break;
   case 4006: error_string="no memory for parameter string";                            break;
   case 4007: error_string="no memory for temp string";                                 break;
   case 4008: error_string="non-initialized string";                                    break;
   case 4009: error_string="non-initialized string in array";                           break;
   case 4010: error_string="no memory for array\' string";                              break;
   case 4011: error_string="too long string";                                           break;
   case 4012: error_string="remainder from zero divide";                                break;
   case 4013: error_string="zero divide";                                               break;
   case 4014: error_string="unknown command";                                           break;
   case 4015: error_string="wrong jump (never generated error)";                        break;
   case 4016: error_string="non-initialized array";                                     break;
   case 4017: error_string="dll calls are not allowed";                                 break;
   case 4018: error_string="cannot load library";                                       break;
   case 4019: error_string="cannot call function";                                      break;
   case 4020: error_string="expert function calls are not allowed";                     break;
   case 4021: error_string="not enough memory for temp string returned from function";  break;
   case 4022: error_string="system is busy (never generated error)";                    break;
   case 4023: error_string="dll-function call critical error";                          break;
   case 4024: error_string="internal error";                                            break;
   case 4025: error_string="out of memory";                                             break;
   case 4026: error_string="invalid pointer";                                           break;
   case 4027: error_string="too many formatters in the format function";                break;
   case 4028: error_string="parameters count is more than formatters count";            break;
   case 4029: error_string="invalid array";                                             break;
   case 4030: error_string="no reply from chart";                                       break;
   case 4050: error_string="invalid function parameters count";                         break;
   case 4051: error_string="invalid function parameter value";                          break;
   case 4052: error_string="string function internal error";                            break;
   case 4053: error_string="some array error";                                          break;
   case 4054: error_string="incorrect series array usage";                              break;
   case 4055: error_string="custom indicator error";                                    break;
   case 4056: error_string="arrays are incompatible";                                   break;
   case 4057: error_string="global variables processing error";                         break;
   case 4058: error_string="global variable not found";                                 break;
   case 4059: error_string="function is not allowed in testing mode";                   break;
   case 4060: error_string="function is not confirmed";                                 break;
   case 4061: error_string="send mail error";                                           break;
   case 4062: error_string="string parameter expected";                                 break;
   case 4063: error_string="integer parameter expected";                                break;
   case 4064: error_string="double parameter expected";                                 break;
   case 4065: error_string="array as parameter expected";                               break;
   case 4066: error_string="requested history data is in update state";                 break;
   case 4067: error_string="internal trade error";                                      break;
   case 4068: error_string="resource not found";                                        break;
   case 4069: error_string="resource not supported";                                    break;
   case 4070: error_string="duplicate resource";                                        break;
   case 4071: error_string="custom indicator cannot initialize";                        break;
   case 4099: error_string="end of file";                                               break;
   case 4100: error_string="some file error";                                           break;
   case 4101: error_string="wrong file name";                                           break;
   case 4102: error_string="too many opened files";                                     break;
   case 4103: error_string="cannot open file";                                          break;
   case 4104: error_string="incompatible access to a file";                             break;
   case 4105: error_string="no order selected";                                         break;
   case 4106: error_string="unknown symbol";                                            break;
   case 4107: error_string="invalid price parameter for trade function";                break;
   case 4108: error_string="invalid ticket";                                            break;
   case 4109: error_string="trade is not allowed in the expert properties";             break;
   case 4110: error_string="longs are not allowed in the expert properties";            break;
   case 4111: error_string="shorts are not allowed in the expert properties";           break;
   case 4200: error_string="object already exists";                                     break;
   case 4201: error_string="unknown object property";                                   break;
   case 4202: error_string="object does not exist";                                     break;
   case 4203: error_string="unknown object type";                                       break;
   case 4204: error_string="no object name";                                            break;
   case 4205: error_string="object coordinates error";                                  break;
   case 4206: error_string="no specified subwindow";                                    break;
   case 4207: error_string="graphical object error";                                    break;
   case 4210: error_string="unknown chart property";                                    break;
   case 4211: error_string="chart not found";                                           break;
   case 4212: error_string="chart subwindow not found";                                 break;
   case 4213: error_string="chart indicator not found";                                 break;
   case 4220: error_string="symbol select error";                                       break;
   case 4250: error_string="notification error";                                        break;
   case 4251: error_string="notification parameter error";                              break;
   case 4252: error_string="notifications disabled";                                    break;
   case 4253: error_string="notification send too frequent";                            break;
   case 5001: error_string="too many opened files";                                     break;
   case 5002: error_string="wrong file name";                                           break;
   case 5003: error_string="too long file name";                                        break;
   case 5004: error_string="cannot open file";                                          break;
   case 5005: error_string="text file buffer allocation error";                         break;
   case 5006: error_string="cannot delete file";                                        break;
   case 5007: error_string="invalid file handle (file closed or was not opened)";       break;
   case 5008: error_string="wrong file handle (handle index is out of handle table)";   break;
   case 5009: error_string="file must be opened with FILE_WRITE flag";                  break;
   case 5010: error_string="file must be opened with FILE_READ flag";                   break;
   case 5011: error_string="file must be opened with FILE_BIN flag";                    break;
   case 5012: error_string="file must be opened with FILE_TXT flag";                    break;
   case 5013: error_string="file must be opened with FILE_TXT or FILE_CSV flag";        break;
   case 5014: error_string="file must be opened with FILE_CSV flag";                    break;
   case 5015: error_string="file read error";                                           break;
   case 5016: error_string="file write error";                                          break;
   case 5017: error_string="string size must be specified for binary file";             break;
   case 5018: error_string="incompatible file (for string arrays-TXT, for others-BIN)"; break;
   case 5019: error_string="file is directory, not file";                               break;
   case 5020: error_string="file does not exist";                                       break;
   case 5021: error_string="file cannot be rewritten";                                  break;
   case 5022: error_string="wrong directory name";                                      break;
   case 5023: error_string="directory does not exist";                                  break;
   case 5024: error_string="specified file is not directory";                           break;
   case 5025: error_string="cannot delete directory";                                   break;
   case 5026: error_string="cannot clean directory";                                    break;
   case 5027: error_string="array resize error";                                        break;
   case 5028: error_string="string resize error";                                       break;
   case 5029: error_string="structure contains strings or dynamic arrays";              break;
   default:   error_string="unknown error";
   }
return(error_string);
}

ออฟไลน์ bird2000

  • นักลงทุนขั้นเก๋า
  • **
  • กระทู้: 85
  • พลังน้ำใจ: 12
Re: หาแนวร่วมและพัฒนา EA Renko Chart
« ตอบกลับ #18 เมื่อ: 21 ตุลาคม 2015, 06:58:52 AM »
มีท่านใดพอแก้ไขให้ ea เปิดมากกว่า 1 ออเดอร์ (ค่าเดิม เปิดออเดอร์แล้วต้องปิดก่อนถึงจะเปิดออเดอร์ต่อไป)

ผมอยากให้เจอสัญญาณแล้วเปิดออเดอร์ ทุกสัญญาณเลยครับ ว่าจะลองทดสอบหน่อยครับว่าผลงานจะเป็นอย่างไรครับ

ทั้งนี้ผมได้แนบทั้งโค้ด และไฟล์มาด้วยแล้วครับ


แก้ให้แล้ว ลองดูนะ ว่าใช้ได้ไหม พอดีผมไม่ได้ลองกับกราฟ renko จริง

ออฟไลน์ zakailab

  • นักลงทุนขั้นต้น
  • *
  • กระทู้: 33
  • พลังน้ำใจ: 6
  • ไปให้ถึงฝั่งฝัน
Re: หาแนวร่วมและพัฒนา EA Renko Chart
« ตอบกลับ #19 เมื่อ: 21 ตุลาคม 2015, 22:24:01 PM »
มีท่านใดพอแก้ไขให้ ea เปิดมากกว่า 1 ออเดอร์ (ค่าเดิม เปิดออเดอร์แล้วต้องปิดก่อนถึงจะเปิดออเดอร์ต่อไป)

ผมอยากให้เจอสัญญาณแล้วเปิดออเดอร์ ทุกสัญญาณเลยครับ ว่าจะลองทดสอบหน่อยครับว่าผลงานจะเป็นอย่างไรครับ

ทั้งนี้ผมได้แนบทั้งโค้ด และไฟล์มาด้วยแล้วครับ


แก้ให้แล้ว ลองดูนะ ว่าใช้ได้ไหม พอดีผมไม่ได้ลองกับกราฟ renko จริง


ผมขอขอบคุณท่าน bird2000 มากนะครับ

ผมขออนุญาตนำ ea ไปทดสอบก่อนนะครับ


ออฟไลน์ zakailab

  • นักลงทุนขั้นต้น
  • *
  • กระทู้: 33
  • พลังน้ำใจ: 6
  • ไปให้ถึงฝั่งฝัน
Re: หาแนวร่วมและพัฒนา EA Renko Chart
« ตอบกลับ #20 เมื่อ: 24 ตุลาคม 2015, 09:57:31 AM »
     จากที่ผมได้ไฟล์ mq4 ของ ท่าน bird2000 ที่แก้ไขใหม่ โดยให้ ea เปิดออเดอร์มากกว่า 1 ออเดอร์ นั้น บนกราฟ renko ไม่มีปัญหอะไร ทำตามเงื่อนไข ต้องขอขอบคุณท่านมากครับ

แต่ผลการ backtest ยังมีจุดบอดในการเข้าสัญญาณ
เนื่องจากระบบ Renko ของผมเองเข้าสัญญาณตามแท่งเทียนทีแท่งเทียนล่าสุดเป็นสีอะไร  ให้เปิดออเดอร์ตามแท่งเทียนล่าสุด

ผมเลยลอง macd เข้าสัญญาณให้แม่นขึ้น

- เพิมเงื่อนไขการเข้าออเดอร์ของสัญญาณเดิมให้แม่นโดยใช้ MACD
- หลักการคือ ยังใช้แท่งเทียนตามระบบเดิมครับ แต่เพิ่ม MACD ในการเข้าสัญญาณ โดยที่ว่าถ้า MACD มากกว่าศูนย์ให้เปิด buy ได้อย่างเดียว และ ถ้า MACD ต่ำกว่าศูนย์ให้เปิด sell ได้อย่างเดียว

มีท่านใดแก้ใขให้ ea ทำงานตามสํญญาณ MACD ได้มั้งครับ ช่วยแก้ไขให้หน่อยครับ (ตอนนี้ผม Backtest โดยให้ ea เปิดแค่ buy หรือ sell อย่างเดียวครับ)

http://www.myfxbook.com/strategies/renko-test-macd/88743
ผลงานออกมาน่าสนใจดีครับ  ตามรูปที่แนบมาครับ
« แก้ไขครั้งสุดท้าย: 24 ตุลาคม 2015, 10:47:52 AM โดย zakailab »

ออฟไลน์ bird2000

  • นักลงทุนขั้นเก๋า
  • **
  • กระทู้: 85
  • พลังน้ำใจ: 12
Re: หาแนวร่วมและพัฒนา EA Renko Chart
« ตอบกลับ #21 เมื่อ: 27 ตุลาคม 2015, 07:00:58 AM »
ผมลองเพิ่มให้แล้วครับ มีให้เลือกทั้ง macd และ osma เลย

ยังไม่ได้ทดลองนะครับว่ามันมี error หรือเปล่า
 

ออฟไลน์ zakailab

  • นักลงทุนขั้นต้น
  • *
  • กระทู้: 33
  • พลังน้ำใจ: 6
  • ไปให้ถึงฝั่งฝัน
Re: หาแนวร่วมและพัฒนา EA Renko Chart
« ตอบกลับ #22 เมื่อ: 27 ตุลาคม 2015, 21:59:56 PM »
ผมลองเพิ่มให้แล้วครับ มีให้เลือกทั้ง macd และ osma เลย

ยังไม่ได้ทดลองนะครับว่ามันมี error หรือเปล่า

ขอบคุณท่าน bird2000 มากๆๆๆ เลยนะครับ

เหมือนว่าท่านอ่านใจผมออกเลยครับ ผมก็อยากให้มันเลือกได้ทั้ง MACD และ OSMA แต่เกรงใจคนเขียนและให้อ่ะครับ กลัวว่ามันจะยุ่งยากมากเกินไปครับ

ขอนำไปทดสอบก่อนนะครับ

ออฟไลน์ moooooom

  • นักลงทุนขั้นเทพ
  • ****
  • กระทู้: 273
  • พลังน้ำใจ: 23
Re: หาแนวร่วมและพัฒนา EA Renko Chart
« ตอบกลับ #23 เมื่อ: 28 ตุลาคม 2015, 00:56:22 AM »
บวกคนละ 1 เลยครับ สำหรับน้ำใจท่านทั้งสอง

ออฟไลน์ new_trader

  • นักลงทุนขั้นต้น
  • *
  • กระทู้: 7
  • พลังน้ำใจ: 0
Re: หาแนวร่วมและพัฒนา EA Renko Chart
« ตอบกลับ #24 เมื่อ: 01 พฤศจิกายน 2015, 10:53:18 AM »
ไม่ทราบได้ทดสอบ demo บ้างยังครับ  เป็นไงมั้ง
ลองเอาแนวทางของเจ้านี้มาปรับใช้ดูไหมครับ 
http://www.forexfactory.com/showthread.php?t=531783