วิธีส่งออกข้อมูลกราฟ NinjaTrader, OHLCV และค่าอินดิเคเตอร์เป็น CSV
NinjaTrader ส่งออกข้อมูลแท่งราคา OHLCV ได้ในตัวผ่าน Data Manager คลิกขวาที่ตราสาร เลือกส่งออก แล้วคุณจะได้ CSV ที่คั่นด้วยเซมิโคลอน มีวันที่ เวลา ราคาเปิด สูง ต่ำ ปิด และปริมาณ ค่าอินดิเคเตอร์ไม่อยู่ในไฟล์ส่งออกนั้น การเอาค่าอินดิเคเตอร์ออกมาต้องเขียนอินดิเคเตอร์ NinjaScript ที่พิมพ์ค่าลงไฟล์ นี่คือวิธีทำงานของทั้งสองเส้นทาง
- NinjaTrader Data Manager ส่งออกข้อมูลแท่งราคา OHLCV เป็น CSV ที่คั่นด้วยเซมิโคลอน รูปแบบคือวันที่และเวลา ตามด้วยเปิด สูง ต่ำ ปิด ปริมาณ
- ค่าอินดิเคเตอร์ไม่รวมอยู่ในการส่งออก OHLCV มาตรฐาน และต้องใช้อินดิเคเตอร์ส่งออก NinjaScript เขียนค่าลงไฟล์
- เอาต์พุตที่รวม OHLCV กับอินดิเคเตอร์หมายถึงการรันการส่งออก NinjaScript ควบคู่กับการส่งออกข้อมูลแท่งราคา แล้วรวมผลลัพธ์เข้าด้วยกัน
วิธีส่งออกข้อมูลแท่งราคา OHLCV จาก NinjaTrader
NinjaTrader 8 เก็บข้อมูลแท่งราคาย้อนหลังในฐานข้อมูลในเครื่องของตัวเอง วิธีส่งออก: เปิด Control Center ไปที่ Tools > Historical Data (หรือ Data Manager ในบางเวอร์ชัน) คลิกขวาที่ตราสารที่ต้องการ แล้วเลือก Export เลือกช่วงวันที่และไทม์เฟรม จากนั้นยืนยัน NinjaTrader จะเขียน CSV ลงโฟลเดอร์ปลายทางที่คุณเลือก
CSV ที่ส่งออกใช้เซมิโคลอนเป็นตัวคั่นโดยค่าเริ่มต้น แทนคอมมา ลำดับคอลัมน์คือ Date;Time;Open;High;Low;Close;Volume สำหรับไทม์เฟรมในวัน หรือ Date;Open;High;Low;Close;Volume สำหรับแท่งรายวัน รูปแบบวันที่คือ YYYYMMDD และรูปแบบเวลาคือ HHMMSS
การส่งออก OHLCV ครอบคลุมข้อมูลย้อนหลังเท่าที่ NinjaTrader ดาวน์โหลดไว้สำหรับตราสารและไทม์เฟรมนั้น ถ้าต้องการประวัติเพิ่ม ให้ดาวน์โหลดผ่านเครื่องมือดาวน์โหลดข้อมูลย้อนหลังของแพลตฟอร์มก่อนส่งออก
สิ่งที่การส่งออก OHLCV มาตรฐานของ NinjaTrader ไม่รวม
การส่งออก OHLCV จาก Data Manager มีเฉพาะข้อมูลแท่งราคา ไม่รวม: ค่าอินดิเคเตอร์ที่คำนวณจากแท่งเหล่านั้น ออบเจกต์งานวาดหรือข้อมูลโน้ต ประวัติเทรด หรือโน้ตระดับเซสชัน
ไฟล์นี้คือการส่งออกข้อมูลราคาดิบ ชั้นการคำนวณอินดิเคเตอร์อยู่ในสภาพแวดล้อมการทำงานของ NinjaTrader ทั้งหมดและไม่ถูกซีเรียลไลซ์ลงไฟล์ข้อมูลแท่งราคา ถ้าเวิร์กโฟลว์วิเคราะห์ของคุณพึ่งค่าอินดิเคเตอร์เฉพาะควบคู่กับราคา การส่งออกเฉพาะ OHLCV จะไม่พาบริบทนั้นมาด้วย
สำหรับการส่งออกงานวาดและข้อมูลโน้ตแบบมีโครงสร้างควบคู่กับ OHLCV ดู /resources/articles/ninjatrader-drawing-export
| ประเภทข้อมูล | รวมอยู่ในการส่งออกจาก Data Manager |
|---|---|
| ราคาเปิด สูง ต่ำ ปิด (ต่อแท่ง) | ใช่ |
| ปริมาณ (ต่อแท่ง) | ใช่ |
| ตราประทับวันที่และเวลา | ใช่ |
| ค่าอินดิเคเตอร์ (EMA, RSI, VWAP ฯลฯ) | ไม่ |
| ออบเจกต์งานวาดและโน้ต | ไม่ |
| ประวัติเทรดและการจับคู่คำสั่ง | ไม่ |
| โน้ตระดับเซสชัน | ไม่ |
รายการตราสารและเดือนสัญญาใน NinjaTrader: รายไตรมาสหรือรายเดือน
รายการตราสาร (Instrument Lists) อยู่ที่ Tools แล้ว Instrument Lists ใน NinjaTrader Control Center รายการหนึ่งรวมตราสารไว้เป็นกลุ่ม คุณจึงรัน Strategy Analyzer หรือ Market Analyzer กับตราสารทั้งหมดได้ในครั้งเดียว หรือโหลดตราสารเหล่านั้นเข้าหน้าต่างอื่นได้อย่างรวดเร็ว
ฟิวเจอร์สใน NinjaTrader มีวันหมดอายุอยู่ในชื่อ เช่น ES 12-26 ความถี่ที่เดือนสัญญาใหม่ปรากฏขึ้นกำหนดโดยตลาด ฟิวเจอร์สดัชนีหุ้นของ CME เช่น ES และ NQ มีสัญญารายไตรมาส (มีนาคม มิถุนายน กันยายน และธันวาคม) ส่วนน้ำมันดิบ (CL) มีสัญญาใหม่ทุกเดือน ฟิวเจอร์สดัชนียอดนิยมไม่มีตัวใดออกสัญญาปีละครั้ง
เมื่อสัญญาถึงวันโรลโอเวอร์ เมนู Tools แล้ว Database Management จะโรลตราสารไปยังสัญญาถัดไป คู่มือช่วยเหลือของ NinjaTrader ระบุว่าการโรลโอเวอร์จะอัปเดตวันหมดอายุในทุกรายการตราสารและทุกหน้าต่างของเวิร์กสเปซที่เปิดอยู่ และคุณต้องบันทึกเวิร์กสเปซเพื่อเก็บการเปลี่ยนแปลงไว้ กลยุทธ์ NinjaScript จะไม่โรลไปข้างหน้าเอง
สำหรับการส่งออก ให้ตรวจ Merge Policy ที่ Tools, Options, Market data ตัวเลือก MergeBackAdjusted จะรวมสัญญาแต่ละรอบเป็นประวัติต่อเนื่องชุดเดียวพร้อมค่าชดเชยที่วันโรลโอเวอร์ ส่วน Do Not Merge จะเก็บไว้เพียงเดือนสัญญาเดียว ใส่เดือนสัญญาและค่าการรวมไว้ในชื่อไฟล์ เพื่อให้จับคู่แท่งราคาได้ภายหลัง
- ฟิวเจอร์สดัชนีหุ้น (ES, NQ): รายไตรมาส มีนาคม มิถุนายน กันยายน ธันวาคม
- น้ำมันดิบ (CL): สัญญาใหม่ทุกเดือน
- การโรลโอเวอร์ใน Database Management อัปเดตทุกรายการตราสาร แล้วบันทึกเวิร์กสเปซอีกครั้ง
- Merge Policy กำหนดว่าประวัติที่ส่งออกครอบคลุมสัญญาเดียวหรือหลายสัญญา
วิธีส่งออกค่าอินดิเคเตอร์จาก NinjaTrader
เพื่อให้ค่าอินดิเคเตอร์เข้าไฟล์ CSV คุณเขียนอินดิเคเตอร์ NinjaScript ที่คำนวณค่าที่ต้องการและเขียนลงไฟล์ทุกครั้งที่แท่งอัปเดต สภาพแวดล้อม NinjaScript ของ NinjaTrader เข้าถึง System.IO สำหรับเขียนไฟล์ได้
รูปแบบพื้นฐานคือ: ใน OnStateChange สำหรับ State.DataLoaded เปิด StreamWriter ไปยังพาธไฟล์เป้าหมาย ใน OnBarUpdate ถ้า BarsInProgress == 0 และ IsFirstTickOfBar ให้เขียน Date, Time และค่าอินดิเคเตอร์ของแท่งปัจจุบันลง StreamWriter ใน OnStateChange สำหรับ State.Terminated ให้ปิด StreamWriter
วิธี StreamWriter ให้บันทึกรายแท่งของอินดิเคเตอร์ใดก็ได้ในไลบรารีของ NinjaTrader หรืออินดิเคเตอร์ที่คุณเขียนเอง เอาต์พุตคือไฟล์ข้อความที่คั่นด้วยตัวคั่นซึ่งเปิดในสเปรดชีตหรือนำเข้าเครื่องมือวิเคราะห์ใดก็ได้ สำหรับทางเลือกที่ไม่ขึ้นกับแพลตฟอร์ม ดู /resources/articles/thinkorswim-to-csv-xlsx-annotations
รวม OHLCV และค่าอินดิเคเตอร์ในไฟล์เดียว
มีสองวิธีรวมแท่ง OHLCV กับค่าอินดิเคเตอร์ วิธีแรกคือเขียนอินดิเคเตอร์ส่งออก NinjaScript ตัวเดียวที่ส่งออกช่อง OHLCV และค่าอินดิเคเตอร์ในแต่ละแถว วิธีนี้ทำให้ทุกอย่างตรงกับตราประทับเวลาของแท่งเดียวกัน
วิธีที่สองคือส่งออก OHLCV จาก Data Manager และส่งออกค่าอินดิเคเตอร์แยกผ่าน NinjaScript แล้วรวมสองไฟล์ในสเปรดชีตหรือสคริปต์โดยใช้ตราประทับเวลาที่ใช้ร่วมกันเป็นคีย์เชื่อม รูปแบบตราประทับเวลาต้องสอดคล้องกันระหว่างสองไฟล์ การรวมจึงทำงานถูกต้อง
วิธี NinjaScript ไฟล์เดียวสะอาดกว่าสำหรับการวิเคราะห์ แต่ต้องมีทักษะ NinjaScript ในการทำ วิธีรวมไฟล์ทำได้โดยไม่ต้องเขียนโค้ดหากรูปแบบตราประทับเวลาตรงกัน
การส่งออกของ NinjaTrader ขาดตรงไหนและเมื่อไรควรเสริม
เวิร์กโฟลว์ส่งออกของ NinjaTrader ไม่ว่าจาก Data Manager หรือผ่าน NinjaScript เชื่อถือได้สำหรับการดึงข้อมูลทีละแท่ง แต่ต้องพัฒนา NinjaScript สำหรับทุกอย่างที่เกินกว่า OHLCV ดิบ คนที่ไม่ใช่นักพัฒนาเจออุปสรรคสำคัญในการส่งออกค่าอินดิเคเตอร์
ข้อจำกัดอีกอย่างคือการพกพาโน้ต งานวาดบนกราฟ ข้อความโน้ต และแนวรับแนวต้านที่วาดใน NinjaTrader ไม่อยู่ในการส่งออก OHLCV หรืออินดิเคเตอร์ สำหรับเวิร์กโฟลว์ที่ต้องพาบริบทกราฟไปกับข้อมูลแท่งราคา ต้องมีชั้นส่งออกโน้ตเสริม
สำหรับชั้นโน้ตที่ไม่ขึ้นกับแพลตฟอร์มนั้น ดู /resources/articles/chart-annotation-export-for-trading-journal-xlsx-csv และ /resources/articles/export-tradingview-indicator-values-csv เพื่อเทียบวิธีส่งออกอินดิเคเตอร์ข้ามแพลตฟอร์ม
คำถามที่พบบ่อย
- NinjaTrader ส่งออกค่าอินดิเคเตอร์เป็น CSV ได้ในตัวไหม
- ไม่ได้ การส่งออก OHLCV จาก Data Manager มีเฉพาะข้อมูลราคาและปริมาณของแท่ง หากต้องการส่งออกค่าอินดิเคเตอร์ ต้องเขียนอินดิเคเตอร์ NinjaScript ที่ใช้ System.IO.StreamWriter เขียนค่าลงไฟล์ทุกครั้งที่แท่งอัปเดต
- ส่งออกข้อมูล OHLCV อะไรได้จากกราฟ NinjaTrader
- ด้วย Data Manager คุณส่งออกวันที่ เวลา เปิด สูง ต่ำ ปิด และปริมาณ ของตราสารและไทม์เฟรมใดก็ได้ที่ NinjaTrader ดาวน์โหลดไว้ เอาต์พุตเป็น CSV ที่คั่นด้วยเซมิโคลอน การส่งออกในวันมีคอลัมน์เวลา ส่วนการส่งออกรายวันไม่มี
- วิธีที่ดีที่สุดในการเอาข้อมูลกราฟ NinjaTrader ไปวิเคราะห์ภายนอกคืออะไร
- สำหรับข้อมูลแท่งราคา OHLCV: ใช้การส่งออกจาก Data Manager สำหรับค่าอินดิเคเตอร์: เขียนอินดิเคเตอร์ส่งออก NinjaScript ที่เขียนค่าอินดิเคเตอร์รายแท่งลงไฟล์ควบคู่กับช่อง OHLCV ถ้าใช้สองการส่งออกแยกกัน ให้รวมเอาต์พุตตามตราประทับเวลา
- รูปแบบตัวคั่นของการส่งออก CSV ของ NinjaTrader คืออะไร
- NinjaTrader ใช้เซมิโคลอนเป็นตัวคั่นแทนคอมมาในการส่งออก CSV เริ่มต้น เมื่อนำเข้า Excel หรือเครื่องมืออื่น ให้เลือก 'semicolon' เป็นตัวคั่นแทนคอมมาระหว่างนำเข้า
- สัญญาฟิวเจอร์สใน NinjaTrader เป็นรายไตรมาสหรือรายเดือน
- ขึ้นอยู่กับการจดทะเบียนสัญญาของตลาด ES และ NQ มีสัญญารายไตรมาสในเดือนมีนาคม มิถุนายน กันยายน และธันวาคม ส่วน CL มีทุกเดือน NinjaTrader ตั้งชื่อแต่ละสัญญาตามวันหมดอายุ เช่น ES 12-26 และเมนู Tools แล้ว Database Management จะโรลรายการตราสารไปยังเดือนถัดไป
ลองใช้ MyLinedChart
MyLinedChart เก็บงานวาด โน้ต และค่าอินดิเคเตอร์ของคุณเป็นข้อมูลที่ส่งออก ตรวจทาน และนำกลับมาใช้ซ้ำได้
สำรวจ MyLinedChart