เริ่มต้นเขียน EA จะซื้อ-ขาย ต้องเขียนอย่างไร

        สำหรับมือใหม่อาจจะมองภาพของการทำงานของ Expert Advisor (EA) ไม่ออกว่ามันเริ่มต้นการทำงานของโค๊ดที่เราเขียนอย่างไร ผมขออธิบายคร่าว ๆ ก่อน เพื่อใช้เป็นพื้นฐานก่อนที่เราจะเริ่มเขียนคำสั่งซื้อ (Buy) และ ขาย (Sell)
    ถ้าเราสร้างไฟล์ EA ขึ้นมาใหม่เราจะเห็นว่ามีฟังก์ที่สร้างมาให้อัตโนมัติ มาดูกันนะครับว่ามีอะไรบ้างแล้วแต่ละส่วนมีไว้ทำอะไร



    /* ส่วนนี้เป็นการประกาศฟังก์ชัน ชื่อฟังก์ชันคือ init  */

    /* int (integer - เลขจำนวนเต็ม) หน้าชื่อฟังก์ชั่น คือชนิดของค่าที่ส่งกลับคืน หลังจากทำงานในฟังก์ชันนี้แล้ว */ 

    int init () { 



            /* ฟังก์ชันนี้เป็นฟังก์ชั่นหลักของ EA ซึ่งจะทำงานเมื่อเริ่มต้น EA ครั้งแรก */

            /* ถ้าเรามีตัวแปรไหนที่ต้องการให้มีการกำหนดค่าก่อนที่จะเริ่มการทำงานของ EA เราก็สามารถมากำหนดในฟังก์ชันนี้ได้ */



        /* ส่งค่า 0 กลับคืน */

        return(0);

    }



    /* ฟังก์ชันนี้ชื่อ deinit คืนค่ากลับเป็น int พอมองออกรึยังครับ */

    int deinit () {



        /* ฟังก์ชั่นจะทำงานอัตโนมัติเหมือนฟังก์ชั่น init แต่ต่างกันตรงที่จะทำงานตอนที่เราปิด EA ครับ */ 

        /* ซึ่งเราจะใช้ฟังก์ชันนี้เพื่อเขียนคำสั่งลบสิ่งที่เราสร้างตอนที่ EA ทำงาน */

        /* ส่งค่า 0 กลับคืน */

        return(0);

    }







    /* ตามชื่อฟังก์ชันแหละครับ เมื่อเราเริ่มรัน EA หลังจากที่ทำงานฟังก์ชัน init เสร็จแล้ว ก็จะมาทำฟังก์ชันนี้ต่อ */

    int start () {



        /* ความรู้ในการเทรดที่เรามี เราจะเปลี่ยนมันให้เป็นโค๊ตแล้วเขียนมันให้ทำงานอัตโนมัติที่ตรงนี้แหละครับ */

        /* จะทำให้ได้กำไรหรือว่าขาดทุนนั้นนอกจากมีกลยุทธ์ที่ดีแล้วก็ต้องอาศัยการเขียนโค๊ดที่มีประสิทธิภาพด้วย ถึงจะทำให้เราบรรลุวัตถุประสงค์ที่ตั้งไว้นะครับ ถ้าความคิดดีแต่เขียนโค๊ตไม่ดีก็อาจทำให้ขาดทุนได้หรือถึงขั้นล้างพอร์ตได้ครับ */

        /* แต่ว่าหลังจากที่เรา EA เสร็จ อย่างน้อยเราก็ต้องทดสอบก่อนว่ามันสามารถทำงานได้ตามที่เราเขียน แล้วค่อยนำไปใช้งานจริง */

        /* มาเริ่มกันเลยดีกว่าครับ */

        /* ก่อนที่เราจะส่งคำสั่งซื้อขาย หรือว่าเปิด Order เราก็ต้องการวิเคราะห์ด้วยเครื่องมือต่าง ๆ ตามความถนัดของแต่และคน อาจจะใช้ RSI MA MACD STOCHASTICหรืออื่นๆ อีกมากมาย ซึ่งเราจะมาศึกษาวิธีการเขียนโค๊ตเพื่อ นำค่าจากเครื่องมือต่างๆ เหล่านี้ มาใช้ในการกำหนดเป็นเงื่อนไขซื้อขาย หรือปิด order */

        /* แต่ตอนนี้ผมอยากให้เข้าใจคำสั่งในการซื้อขายก่อนครับ ซึงหลังจาก วิเคราะห์สัญญาณแล้ววก็ทำการเปิด Order ด้วยคำสั่งOrderSend */

        int ticket = OrderSend(Symbol(),OP_BUY,1.0,Ask,3,0,0,"EA Comment",255,0,CLR_NONE);



        /* การส่งคำสั่งด้วยฟังก์ชั่นก์ OrderSend เมื่อฟังก์ชั้นนี้ทำงานเสร็จก็จะส่งค่ากลับมาเป็นชนิด int เราจึงประกาศตัวแปรชื่อ ticket เป็นชนิด int เพื่อรับค่าจากฟังก์ OrderSend */ 

        /* ซึ่ง Parameter ที่ต้องส่งเข้าไปในฟังก์ชั่น OrderSend ได้แก่ */

        /* Symbol()  เป็นฟังก์ที่ใช้บอกชื่อคู่เงินที่เรากำลังจะเทรด */

        /* OP_BUY  เพื่อบอกว่าเราต้องการจะเปิด Order ซื้อ ถ้าเราจะเปิด Order ขายก็กำหนดเป็น OP_SELL */

        /* 1.0  เป็นค่าของ  Lot Size ที่เราจะเทรด ซึ่งค่านี้สามารถปรับเปลี่ยนตามความต้องการของผู้เทรด ซึ่งต่อไปเราจะเขียนเป็นตัวแปร แล้วสามารถรับค่าจากผู้เทรดได้  */

        /* Ask  ในการเปิดแบบ BUY เราต้องซื้อที่ราคา Ask ถ้าเปิดแบบ SELL ขายเราต้องซื้อที่ราคา Bid */

        /* 3  หมายถึง slippage ก็คือราคาที่เรายอมให้มีเปลี่ยนแปลงได้สูงสุดกี่จุด จากราค่าขณะที่ส่งคำสั่งจนถึงเวลาที่ Server ประมวลผล */

        /* 0  ตัวแรกหมายถึงจุด Stop Loss ถ้าใส่ 0 คือไม่กำหนด แต่ในการเทรดการเปิด Order ควรกำหนดจุด Stop Loss ด้วย ซึ่งวิธีการคำนวนจุด Stop Loss จะมาพูดในบทความต่อไป */

        /* 0  ตัวที่สองคือค่าจุดเป้าหมายของกำไร ซึ่งเมื่อราคามาถึงจุดนี้ก็จะทำการปิด Order ให้อัตโนมัติ ถ้าใส่ 0 คือไม่ได้กำหนด ซึ่งผู้เทรดสามารถเขียนเงื่อนไขขึ้นมาเพื่อทำการส่งคำสั่งปิด Order เองได้จะกล่าวในบทความถัดไป */

        /* "EA Comment"  เป็นคอมเมนท์ ที่เราตั้งเพื่อความเข้าใจของเราเอง */

        /* 255  เป็นตัวเลขที่ใช้ระบุหมายเลขคำสั่ง ที่เราเข้าใจเอง */

        /* 0  เป็นการกำหนดระยะเวลาในการยกเลิก Order ใช้สำหรับคำสั่งที่ Pending เท่านั้น */

        /* CLR_NONE  เป็นการกำหนดสีของลูกศรเวลาเปิด Order ถ้าไม่ให้มีลูกศรก็หนดเป็น CLR_NONE */



        /* ถ้าการส่งคำสั่งสำเร็จไม่มี Error เกิดขึ้น ตัวแปร ticket ก็จะได้รับค่าหมายเลข  ticket จาก Server */



    /* จบการทำงานคืนค่า 0 กลับไป  หลังจากนั้นจะเข้ามาทำฟังก์ชันนี้อีกเมื่อมีการส่งข้อมูลมาจากโบรกเกอร์ของเรา */

    /* ซึ่งถ้าตรงกลับช่วงที่ตลาดปิด เสาร์-อาทิตย์ หลายคนอาจสงสัยว่าเขียน EA เสร็จแล้ว ทดสอบรัน ปรากฏว่าไม่เห็นมีอะไรเกิดขึ้นเลย ไม่ต้องสงสัยแแล้วนะครับ */

        return(0);

    }

ไม่มีความคิดเห็น:

แสดงความคิดเห็น