Cover photo

Tutorial back test CDC action zone (สอนเขียนระบบ backtest บน trading view )

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

https://www.tradingview.com/gopro/?share_your_love=HomoDeus666


เราจะมาเริ่มกันที่ ไปที่ Chart บน Tradingview จากนั้นเลื่อนลงไปด้านล่างตรงคำว่า Pine Editor(อยู่ด้านล่างๆ ซ้ายมือ )

จากนั้นกดไปที่ open → create new strategy จะได้หน้าตาโค้ดเป็นแบบนี้

หน้าตา เริ่มต้น หลังจากกด open strategy
หน้าตา เริ่มต้น หลังจากกด open strategy

สำหรับคนที่ไม่เคยเขียนโค้ดมาเลยไม่ต้องตกใจนะ เราจะค่อยๆไปที่ละส่วนไม่ยาก

สำหรับคำสั่งแรกที่ใช้ คือ strategy() โดยใน () เนี่ยเราจะใส่ option เพิ่มเข้าไปสองตัว โดยที่ใช้เครื่องหมาย , เป็นตัวคั่น option ที่อยู่ในวงเล็บ

หน้าตาโค้ดบรรทัดแรกจะเขียนแบบนี้ครับ

strategy(title="CDC action zone backtest", overlay = true)

option แรก คือ title=”CDC action zone backtest” เพื่อกำหนดชื่อ strategy

option สอง คือ overlay=true เพื่อให้มันไปโชว์บน chart เวลาที่เราเลือกใช้

จากนั้นต่อไปที่เราเลือกใช้คือ การกำหนดค่าตัวแปร Fast ema , Slow ema โดยใช้ คำสั่ง ta.ema(x,y) โดยที่ x คือ แหล่งที่มาข้อมูล และ y คือ length ของข้อมูล ในที่นี้เราจะเลือก ดึงจากข้อมูลจาก ปิดแท่งราคา (close) ด้วย ข้อมูลจาก 12 และ 26 แท่ง

หน้าตาโค้ดจะเป็นแบบนี้

fastema = ta.ema(close,12), slowema =ta.ema(close,26)

คำสั่งต่อมาที่ใช้คือ ta.crossover(x,y) เพื่อหาจุดซื้อ โดยเมื่อตัวแปร x ตัดขึ้นมากกว่า y คำสั่งนี้จะ ให้ค่าเป็น True และ กำหนดตัวแปร ให้มาเก็บ ค่า True นี้ไว้

green = ta.crossover(fastema,slowema)

คำสั่งต่อมาที่ใช้ ta.crossunder(x,y) เพื่อหาจุดปิดออเดอร์ โดยเมื่อตัวแปร x ตัดลงน้อยกว่า y คำสั่งนี้จะให้ค่าเป็น True และ กำหนดตัวแปรเพื่อมาเก็บค่านี้ไว้

red = ta.crossunder(fastema,slowema)

จากนั้นเราเรียกคำสั่ง if(x)เพื่อกำหนดจุดที่จะเข้าซื้อ และ เรียกใช้คำสั่ง strategy.entry ภายใต้ if เพื่อสั่งให้ระบบเข้าซื้อ เมื่อตัวแปร (x) เป็น True จากนั้น เรียกใช้ คำสั่ง if อีกครั้ง แต่ใช้ strategy.close เพื่อสั่งให้ปิดออเดอร์เมื่อเข้าเงื่อนไข if(y)

if (green) 
    strategy.entry("buy",strategy.long)
if (red)
    strategy.close("buy")

เวลาเรียกคำสั่ง if ให้เว้นบรรทัด ลงมาแล้วกด tab หนึ่งครั้ง เพื่อให้คำสั่งที่เราตั้งทำงานอยู่ภายใต้เงื่อนไข if นะครับ

จากนั้นเรียกคำสั่งให้ plot เพื่อให้ พล็อตเส้น EMA บนกราฟทำให้ดูง่ายขึ้นครับ plot(x, color=color.yyy) โดย (x) เป็นค่าตัวแปรที่เราต้องการจะพล็อตและ yyy เป็นสีที่เราต้องการครับ ให้ใช้เครื่องหมาย (,) ในการคั่นคำสั่ง หน้าตาจะเป็นประมาณนี้

plot(fastema, color=color.green), plot(slowema, color=color.red)

ตอนนี้หน้าตาโค้ดโดยรวมจะเป็นแบบนี้นะครับ

//@version=5
strategy(title="CDC action zone backtest", overlay = true)
fastema = ta.ema(close,12), slowema =ta.ema(close,26)
green = ta.crossover(fastema,slowema)
red = ta.crossunder(fastema,slowema
plot(fastema, color=color.green), plot(slowema, color=color.red)

จากนั้นกด save → ตั้งชื่อ → กด add to chart เพื่อดูผลลัพท์ได้เลยครับ เรากด add แล้วหน้า strategy test จะเด้งขึ้นมา พร้อมกับ ผล backtest ย้อนหลังครับ

หน้าของ ผลลัพท์ ที่ได้จาก การ back test
หน้าของ ผลลัพท์ ที่ได้จาก การ back test

แนะนำว่าให้กดไปที่รูปฟันเฟือง เพื่อปรับ setting นิดนึงนะครับ

post image

initial capital = จำนวนเงินเริ่มต้นใน พอร์ท

Base currency = เลือกหน่วยเงิน (ถ้าใช้เป็นคู่ BTC/USDT ให้เลือก USD)

Order size = จำนวนเงินที่เข้าซื้อในแต่ละ order เลือกหน่วยข้างหลังให้ตรงกันกับด้านบนด้วยนะครับ หรือจะเลือกใส่เป็น % ของพอร์ท ก้ให้เลือก % of equity

เสร็จเรียบร้อยพร้อมใช้งานแล้วครับ จากนี้ถ้าใครสงสัยว่าที่ผ่านมา Action zone สามารถทำกำไรได้เท่าไหร่ในช่วงหลายปีที่ผ่านมา ก็สามารถ เลือกคู่เหรียญที่ต้องการมาทดลอง back test ได้เลยครับ เป็นอีกหนึ่งข้อมูลดีๆ เอาไว้ตัดสินใจ เดี๋ยวผมจะแปะลิงค์ script นี้บน Tradingview ไว้ให้ ตรงนี้ แต่ว่าจะเพิ่ม function กำหนดช่วงเวลาที่ต้องการจะ back test ไว้ให้ด้วย ลองไปใช้ดูครับ


บทความนี้เป็น NFT บนเชน Optimism หากต้องการสนับสนุนผู้เขียน สามารถกด mint ได้ที่ปุ่ม collect ด้านล่าง ขอบคุณทุกท่านมากครับ 🙏🙏🙏