Common Code Errors in AmiBroker

Code Errors ที่มักเจอกันบ่อยๆใน AmiBroker โดยเฉพาะสำหรับผู้เริ่มต้นและมือใหม่ ซึ่งบทความนี้จะมาทำการชี้แจง Errors ต่างๆ ร่วมถึงวิธีสังเกตุและการแก้ไข

Code Errors ที่พบบ่อยๆในการเขียนโค้ด AmiBroker

1. ลืมใส่ ; ท้ายบรรทัด

2. ลืมใส่ หรือ ในบางฟังก์ชั่น เช่น

  • SetOption(InitialEquity, 1000000); //ลืมใส่ ฟันหนู “…” ให้ค่าคงที่ภายในของ AmiBroker
  • SetOption(“InitialEquity, 1000000);//ลืมใส่ ด้านหลัง ” (ข้อ 14 หาเนื้อคู่ไม่เจอ)
  • SetOption(“InitialEquity”, 1000000);

3. พิมพ์ชื่อตัวแปรผิด เช่น

  • SetOption(“MinShare”, 100); //ตกตัว ‘s’ หลังคำว่า MinShare
  • SetOption(“MinShares”, 100);
  • SetTradeDelay(1, 1, 0, 0); //ตกตัว ‘s’ หลังคำว่า SetTradeDelay
  • SetTradeDelays(1, 1, 0, 0);

4. ใส่ข้อมูลในฟังก์ชั่นไม่ครบ เช่น

  • _shortMA = optimize(“_shortMA”, 10, 5, 30);//ผิด ตก Step
  • _shortMA = optimize(“_shortMA”, 10, 5, 30, 5);

5. เรียกใช้ตัวแปร ก่อนประกาศใช้ ทำให้ AmiBroker ไม่รู้จัก (หรือประกาศไว้แล้ว แต่ดันพิมพ์ชื่อตัวแปรผิด -กรรมแท้ๆทรู 555)

6. ประกาศชื่อตัวแปรแล้ว แต่พอนำมาใช้ดันพิมพ์ชื่อผิด เช่น Buy = C > MA(C, _shortSMA);

7. ลืมใช้ Ref อย่างถูกต้อง เช่น Buy = C > HHV(C, 100);//เป็นเท็จเสมอ!

8. ลืมใช้โค้ด ป้องกัน การแตกหุ้น Split

9. ลืมโค้ดตั้งค่าต่างๆที่สำคัญต่อการ Backtest เช่น MinShares, RoundLotSize, Commission, BuyPrice, SellPrice, Short, Cover, …

10. โค้ด Assign ค่า แทนที่จะโค้ด Condition เช่น

  • Buy = Ref(HHV(C, 100), -1);//ผิด
  • Buy = C > Ref(HHV(C, 100), -1);// ==, != , >=, <=

11. เงื่อนไข Buy และ Sell ขัดแย้งกัน หรือไม่ได้เป็น Exactly Opposite Condition เช่น

  • Buy = MACD() > 0;
  • Sell = MACD() < Signal(); //ผิดทั้งสองบรรทัด

12. เวลาเกิด Error เอาแต่ดูบรรทัดที่ AmiBroker บอก ไม่ยอมไล่โค้ดขึ้นไปว่าจริงๆแล้ว Error มาจากบรรทัดก่อนหน้านั้น

13. ไม่ตั้งค่า Filter ให้ถูกต้อง ทั้ง WatchList และ From-To Date

14. หาเนื้อคู่ไม่เจอ

  • ถ้ามี เปิด ” double quote ต้องมี ปิด ” double quote
  • ถ้ามีวงเล็บเปิด ต้องมีวงเล็บปิด ( ) และ { }

วิดีโอสอน AmiBroker เรื่อง Common Code Errors in AmiBroker

 

AmiBroker Coding Challenge จงแก้ไขให้โค้ดนี้ Backtest ได้

 

วิดีโอเฉลยการแก้ไขโค้ดในตัวอย่างให้ถูกต้อง

เมื่อเกิด Code Errors ในการเขียนโค้ด (ทั้วๆไป)

  1. ให้พยายามทำความเข้าใจ ข้อความแจ้ง Error เพราะปัญหาส่วนมากมักแก้ไขได้เลย และอยู๋ในบริเวณที่ข้อความเตือนขึ้นมา หรือแถวบรรทัดก่อนหน้านั้น
  2. ให้มองหาความเป็นไปได้ของปัญหาที่อาจจะเกิดขึ้น เช่น
    1. ส่งค่าตัวแปรให้พังก์ชั่นผิด หรือไม่ครบ
    2. พิมพ์ชื่อตัวแปรผิด หรือพิมพ์ชื่อฟังก์ชั่นผิด
    3. ไม่ได้ทำการประกาศชื่อตัวแปรก่อนนำมาให้ หรือ ไม่ได้ทำการรีเซ็คค่าตัวแปร (โดยเฉพาะในลูป)
    4. ใช้ตัวแปรผิดประเภท เช่น Array,  Number, …, รวมถึงค่าบวก หรือค่าลบ เช่น Ref(…, …)
    5. ใช้สัญลักษณ์ผิด ระหว่าง การใช้ค่า = Assignment กับ การเปรียบเทียบ == Comparison
    6. ลืมพิจารณาผลกระทบที่อาจเกิดชึ้นจากการใช้ฟังก์ชั่น
  3. ให้ถามตัวเองว่า “ทำไมโปรแกรมถึงทำงานแบบนี้?” แทนที่จะถามตัวเองว่า “ทำไมโปรแกรมถึงทำงานผิดๆ?” 
  4. ให้เตือนตัวเองว่าปัญหาอาจจะไม่ได้อยู่ตรงที่กำลังดูอยู่ ถ้าได้ลองพยายามแก้ไขเบื้องต้นแล้วยังแก้ไขไม่ได้
  5. ให้ลองอธิบายปัญหาให้คนอื่นฟัง เพราะหลายๆครั้ง ผู้เขียนโปรแกรมอยู่ใกล้กับปัญหามากจนมองข้ามสิ่งเล็กๆน้อยๆ
  6. อย่าเชื่อทุกอย่างที่เห็นในโค้ด หรือข้อมูลจากแหล่งอื่นๆ ให้ลองตรวจสอบคิดเองในใจตามโค้ดทีล่ะบรรทัด
  7. ให้ออกจากปัญหาสักพักแล้วค่อยกลับมาดูแก้ไขใหม่ เช่น อาบน้ำ จิบกาแฟ หรือ โทรชวนผมไปเที่ยว ทองหล่อ/RCA

เพิ่มเติม