สารบัญบทความ

หลักฐานและขอบเขต

แหล่งข้อมูลสนับสนุนสูตรช่องทาง ข้อมูลการเปลี่ยนแปลง และการกำหนดเวลาการสั่งซื้อจำลอง การอ้างอิงถึงการติดตามแนวโน้มในอดีตไม่ได้ถูกนำมาใช้เป็นหลักฐานว่าจุดเข้า ปริมาณขั้นต่ำ และจุดออกที่เสนอไว้ในที่นี้จะทำกำไรได้

ข้อมูลและตลาดใช้สินทรัพย์และช่วงการซื้อขายที่กำหนดไว้ ฟิวเจอร์สต้องระบุสัญญาและกฎการเปลี่ยนสัญญาอย่างชัดเจน หุ้นต้องปรับผลของการแตกหุ้นอย่างสอดคล้องกันทั้งราคาสูงสุด ราคาต่ำสุด และราคาที่ซื้อขายได้จริง
กรอบเวลาที่ใช้วิจัยN=20 บน H=1 หรือข้อมูลรายวัน เป็นการกำหนดค่าแบบทดลอง ไม่ใช่คำแนะนำทั่วไป ความยาวของเซสชันและค่าใช้จ่ายในการดำเนินการจะเปลี่ยนแปลงความหมายของมัน
ราคาเคลื่อนไหวอยู่ระหว่าง 99 และ 105 จากนั้นปิดเหนือ 105 ด้วยปริมาณการซื้อขายที่เพิ่มขึ้น และปรับตัวสูงขึ้นต่อไปในตัวอย่างจำลองเปิดภาพประกอบขนาดเต็ม
ราคาและปริมาณสังเคราะห์ดั้งเดิม ระดับทั้งสองเป็นภาพรวมก่อนเกิดเหตุการณ์ ไม่ใช่ช่องทางการเคลื่อนที่ที่คำนวณใหม่ทุกจุดที่พล็อต

ขั้นตอนปฏิบัติ

ขั้นตอนสำหรับ Donchian แบบเลื่อนช่วง: ระดับอ้างอิงสำหรับ breakout และ reclaim
ขั้นตอนทั้งหมดอธิบายไว้ด้านล่าง ทุกขั้นต้องบันทึกเหตุผลที่คัดออกเมื่อข้อมูลไม่ครบหรือเงื่อนไขไม่ผ่าน
  1. สะสมแท่ง Nใช้ข้อมูลการสังเกตที่เสร็จสมบูรณ์แล้วก่อนหน้าแท่งปัจจุบัน
  2. ตรึง U และ Dบันทึกราคาและเวลาที่ผ่านไปนับจากเกิดจุดสุดขั้วแต่ละจุด
  3. จำแนกประเภทของเหตุการณ์แยก breakout ที่ยืนยันด้วยราคาปิดจากการออกนอกขอบเขตแล้ว reclaim กลับ
  4. ใช้เงื่อนไขปริมาณซื้อขายใช้เฉพาะตัวแปรที่ทราบในเวลาส่งคำสั่ง
  5. จำลองการดำเนินการใช้กฎเข้า สต็อป และหมดอายุที่ลงทะเบียนไว้ล่วงหน้า

ขอบเขตแบบเลื่อนช่วงไม่ใช่จุดสวิงที่ยืนยันแล้ว

Donchian ใช้ค่าสุดขั้วของการสังเกตการณ์ N ครั้ง; TradingView อธิบายแถบบนและล่างและจุดกึ่งกลาง [1] ต่างจาก pivot สองด้าน ไม่จำเป็นต้องมีการกลับตัวในภายหลัง หน้าต่างก่อนหน้าที่เสร็จสมบูรณ์แล้วจะทราบได้เมื่อแท่งเทียนถัดไปเริ่มต้นขึ้น ในระหว่างแนวโน้ม ขอบบนของมันสามารถสูงขึ้นต่อไปได้โดยไม่ต้องทำหน้าที่เป็นแนวต้านที่ยึดเหนี่ยวไว้

นิยามเชิงสาเหตุที่เสนอคือ U[t]=max(H[t−N:t]), D[t]=min(L[t−N:t]), M[t]=(U[t]+D[t])/2 โดยไม่รวมจุดปลายบนของส่วนนั้น ดังนั้นหน้าต่างจึงสิ้นสุดที่ t−1 หาก H[t] รวมอยู่ใน U[t] เงื่อนไข H[t]>U[t] จะเป็นไปไม่ได้ตามโครงสร้าง

ความแตกต่างนี้มีผลต่อทั้งการทดลอง อินดิเคเตอร์อาจแสดงแถบที่รวมแท่งกำลังก่อตัวเพื่อการมองเห็น แต่กลยุทธ์ต้องระบุว่าตนใช้ภาพข้อมูลย้อนหลัง ณ เวลาใด บันทึกราคาและเวลาของจุดสุดขั้วที่เป็นฐาน เพื่อแยกขอบเขตที่เพิ่งเกิดจากจุดสุดขั้วเก่าที่กำลังจะหลุดจากช่วงคำนวณ

สร้างข้อมูลอ้างอิงก่อนจัดประเภทเหตุการณ์

ใน pandas การเลื่อนค่าจะแยกหน้าต่างอ้างอิงออกจากแถวที่กำลังประเมิน [2] การใช้งานหนึ่งคือ high.shift(1).rolling(N).max() การเลื่อนดัชนีด้วย freq ไม่ใช่สิ่งทดแทนการเลื่อนค่าที่สังเกตได้สัมพันธ์กับแถวการตัดสินใจ ต้องใช้หน้าต่างที่ถูกต้องแบบเต็มแทนที่จะอนุญาตให้จำนวนการสังเกตเปลี่ยนแปลงโดยไม่แจ้งให้ทราบล่วงหน้า

แบบพื้นฐานจำแนกราคาปิดที่ยืนยันแล้วและผ่านขอบแถบพร้อมบัฟเฟอร์ b=max(2 ticks,0.1×ATR[t−1]); N=20 และ 0.1 เป็นค่าที่เสนอเพื่อการวิจัย การจำแนกทันทีแบบแท่งเดียวให้คำนวณระดับอ้างอิงจากช่วงก่อนหน้าใหม่ทุกแท่ง ส่วนกรณี sweep แล้ว reclaim หลายแท่ง ให้ตรึงระดับเดิมตั้งแต่เริ่มสร้างชุดสัญญาณที่รอพิจารณา

มิฉะนั้นแท่งที่เคลื่อนออกนอกขอบเขตจะเข้าไปอยู่ในช่วงคำนวณถัดไปและทำให้ขอบเขตที่ต้องกลับเข้ามาเปลี่ยนไป การกลับต่ำกว่าขอบเขตใหม่อาจเป็นคนละเหตุการณ์กับการกลับต่ำกว่าระดับเดิมที่ถูกทะลุ เก็บ candidate_id, frozen_level, เวลาอ้างอิง และเวลาหมดอายุ เพื่อให้ทดสอบสมมติฐานเดิมตลอดชุดสัญญาณ

U = max(H[t-N:t]); D = min(L[t-N:t])
b = max(2*tick, 0.1*ATR[t-1])
if no_active_setup and C[t] > U+b:
    emit('up_breakout', signal_at=t, frozen_level=U)
if no_active_setup and H[t] > U+b and C[t] < U:
    emit('upper_reclaim', signal_at=t, frozen_level=U)
# These labels represent different hypotheses.
# A close-confirmed order can be processed only after close t.

ขอบเขตหนึ่งสามารถสร้างผลลัพธ์ที่ถูกต้องได้แตกต่างกัน

ตัวอย่างสังเคราะห์: แท่งเทียน 20 ก่อนหน้านี้มี U=105, D=99 และ ATR=1 โดยมี tick=0.01 และ b=0.10 แท่งเทียนปัจจุบันที่มี H=106 และ C=105.4 ทำให้เกิดการทะลุขึ้น (breakout) ข้อเสนอซื้อเมื่อเปิดครั้งต่อไปที่ 105.5 ตั้งจุดหยุดขาดทุนที่ 103.9 และจุดทำกำไรที่ 108.7 มีความเสี่ยงด้านราคาเริ่มต้น 1.6 จุด และจุดทำกำไรก่อนหักค่าใช้จ่าย 2R

เส้นทางความล้มเหลว: หลังจากเปิดที่ 105.5 ราคาตกลงมาที่ 103.8 จุดหยุดขาดทุนอาจถึงแล้ว แม้ว่าราคาปิดที่ทำให้เกิดการทะลุแนวต้านจะตรงตามเงื่อนไขการตรวจจับทุกประการก็ตาม หากแท่งราคาที่ทำให้เกิดการทะลุแนวต้านเดิมเป็น H=106 และ C=104.7 มันจะไม่ใช่การทะลุแนวต้านปิด มันอาจเป็นการเรียกคืนค่าสูงสุดสำหรับกลยุทธ์ขายชอร์ตที่ระบุไว้แยกต่างหาก อย่าเปลี่ยนชื่อการทะลุแนวต้านที่ขาดทุนเป็นการกวาดล้างหลังจากเห็นการขาดทุนแล้ว

กรณีที่ซับซ้อนกว่านั้นเกิดขึ้นเมื่อราคาสูงสุดเดิมของ 105 หลุดออกจากกรอบ N-bar และ U ลดลงมาอยู่ที่ 104 ราคาที่ 104.5 สามารถทะลุผ่านช่องราคาได้โดยไม่ต้องทำราคาสูงสุดใหม่ในรอบการซื้อขายล่าสุด นี่คือเหตุการณ์ที่ถูกต้องตามหลักการของหน้าต่างเลื่อน (rolling-window) การยกเว้นเหตุการณ์นี้จำเป็นต้องมีเงื่อนไขเพิ่มเติมที่ลงทะเบียนไว้เกี่ยวกับจุดเริ่มต้นหรือการเคลื่อนไหวของระดับอ้างอิง

ทดสอบความเท่าเทียมกันอย่างรอบคอบ การปิดที่ U+b อย่างแม่นยำจะถูกปฏิเสธโดยเงื่อนไขมากกว่าที่เข้มงวดในแบบจำลองพื้นฐานนี้ การปัดเศษควรเกิดขึ้นภายใต้ข้อตกลงที่กำหนดไว้ก่อนส่งคำสั่ง มิฉะนั้น สัญญาณรบกวนแบบจุดลอยตัวอาจตัดสินได้ว่าการสังเกตการณ์อยู่เหนือหรืออยู่บนขอบเขตอย่างแม่นยำ

ระยะเวลาการสั่งซื้อ การยกเลิก และการหมดอายุ

TradingView แยกการสร้างคำสั่งหลังแท่งปิดออกจากการจับคู่ซื้อขายที่ tick ถัดไปที่มีให้ในตัวจำลอง [3] แบบยืนยันด้วยราคาปิดจึงต้องใช้ราคาที่ซื้อขายได้ภายหลัง พร้อมสเปรดและสลิปเพจ คำสั่ง buy-stop ที่รออยู่เหนือ U เป็นอีกแบบจำลอง: อาจจับคู่ระหว่างแท่งแล้วราคากลับทิศก่อนแท่งปิด ราคาปิดที่ไม่เอื้ออำนวยไม่สามารถลบการจับคู่ที่เกิดแล้วได้ย้อนหลัง

ตัวเลือกการออกมี stop ตามโครงสร้างที่ตรึงไว้, trailing stop ตามขอบล่างของช่องราคาที่ใช้ช่วงคำนวณสั้นกว่า หรือการออกตามเวลา เลือกแบบเรียบง่ายก่อนประเมิน หากเข้าด้วย retest ให้กำหนดระยะที่ราคาย้อนกลับได้ ปฏิกิริยาที่เข้าเกณฑ์ และอายุคำสั่งเป็นจำนวนแท่ง หากไม่มี retest ให้บันทึกว่าเสียโอกาส ไม่ใช่เปลี่ยนไปไล่ราคาโดยอัตโนมัติ

แท่งที่แตะทั้ง stop และเป้าหมายต้องใช้ข้อมูลละเอียดขึ้นหรือกฎลำดับเหตุการณ์แบบระมัดระวังที่ประกาศไว้ การทดสอบ gap ต้องเปลี่ยนราคาจับคู่จริงและความเสี่ยงตามสถานการณ์ โดยไม่เปลี่ยนเวลาสัญญาณเดิมหรือระดับอ้างอิงที่ตรึงไว้ การปฏิเสธไม่ส่งคำสั่งเพราะเงื่อนไขการดำเนินการกับคำสั่งที่จับคู่แล้วขาดทุนเป็นคนละผลลัพธ์

จุดหยุดการขาดทุนแบบเคลื่อนที่ (Rolling Trailing Stop) จำเป็นต้องมีกฎการกำหนดเวลาด้วยเช่นกัน หากแถบล่างของเมื่อวานอัปเดตหลังจากปิดตลาดวันนี้ จุดหยุดการขาดทุนใหม่จะไม่สามารถป้องกันการเคลื่อนไหวภายในแท่งเทียนก่อนหน้านี้ได้ บันทึกการแก้ไขจุดหยุดการขาดทุนแต่ละครั้งและเวลาการเปิดใช้งาน แทนที่จะใช้ค่า Trailing Stop สุดท้ายย้อนหลังไปตามแท่งเทียน

ตัวกรองปริมาณอาจเลือกทั้งการเคลื่อนไหวแรงและการจับคู่ที่มีต้นทุนสูงขึ้น

ตัวกรอง breakout ที่เสนอใช้ RVOL≥1.5 เทียบกับประวัติช่วงเวลาซื้อขายที่เทียบเคียงกัน เมื่อตัดสินใจหลังแท่งปิดแล้วจึงใช้ปริมาณทั้งหมดของแท่งสัญญาณได้ หากส่งคำสั่ง stop ให้รอไว้ก่อนหน้านั้น การตัดสินใจว่าจะส่งคำสั่งหรือไม่ต้องใช้เฉพาะปริมาณที่สังเกตได้เมื่อส่ง ปริมาณเต็มแท่งที่ทราบหลังจับคู่แล้วไม่อาจใช้อนุมัติการเข้าย้อนหลัง

แยกแบบใช้ราคาอย่างเดียว แบบกำหนดสภาพคล่องขั้นต่ำ และแบบกรองปริมาณผิดปกติ เพราะตอบคนละคำถามระหว่างความสามารถในการซื้อขายพื้นฐานกับคุณค่าข้อมูลเพิ่มเติม กลุ่มที่มี RVOL สูงอาจเคลื่อนไหวไกลกว่า แต่มี gap และสเปรดใหญ่ขึ้นด้วย การตอบสนองของราคาก่อนหักต้นทุนจึงไม่เพียงพอ

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

กรณี reclaim หลายแท่ง ให้เก็บปริมาณซื้อขายระหว่างออกนอกขอบเขตและระหว่างกลับเข้าขอบเขตแยกกัน อาจศึกษาอัตราส่วนนี้ได้ แต่หากช่วงเวลายาวไม่เท่ากันต้องปรับมาตรฐาน ข้อมูล OHLCV รวมบอกไม่ได้ว่าธุรกรรมเกิดตรงระดับ Donchian หรือที่ราคาอื่นภายในแท่งที่มีช่วงกว้าง

ทดสอบการคำนวณอ้างอิงก่อนใช้กลยุทธ์

ลงทะเบียนตารางการพัฒนาขนาดเล็ก เช่น N=10,20,40 บันทึกราคาของแถบราคา เวลาที่เกิดจุดสูงสุดและต่ำสุด และอายุของระดับราคาในทุกสัญญาณ รวมถึงว่าระดับราคาเปลี่ยนแปลงเนื่องจากจุดสูงสุดและต่ำสุดเก่าหมดอายุหรือไม่ วิธีนี้ช่วยแยกพฤติกรรมทางเศรษฐกิจออกจากผลกระทบจากหน้าต่างเชิงกล และทำให้การตีความความไวต่อการเปลี่ยนแปลงง่ายขึ้น

ทดสอบเหตุและผลโดยเปลี่ยน H[t] แต่คงข้อมูลก่อนหน้านั้นไว้: U[t] ต้องไม่เปลี่ยน ส่วนการเปลี่ยน H[t−1] อาจเปลี่ยน U[t] ได้ เพิ่มกรณีทดสอบแท่งหาย วันหยุด gap ตอนเปิด และข้อมูลค้าง แล้วเทียบการคำนวณแบบกลุ่มกับแบบรับข้อมูลต่อเนื่อง เพื่อจับข้อผิดพลาดที่เลื่อนดัชนีไปหนึ่งตำแหน่งแม้กราฟจะดูสมเหตุผล

หลังจากนั้นจึงประเมินช่วงนอกตัวอย่างที่ล็อกไว้ พร้อมอัตราหมุนเวียนการซื้อขาย ค่าธรรมเนียม การเปิดรับความเสี่ยง drawdown และความไวต่อเงื่อนไขการจับคู่ หากเลือกกลุ่มข่าวเฉพาะหรือช่วงเปิด–ปิดตลาด ให้นับเป็นการทดลองวิจัยด้วย รายงานชุดสัญญาณที่ล้มเหลวและ retest ที่ไม่เกิด ไม่ใช่เฉพาะธุรกรรมสำเร็จจากขอบเขตที่เอื้ออำนวย

ข้อผิดพลาดที่พบบ่อย

ปล่อยให้ระดับอ้างอิงไล่ตามการออกนอกขอบเขต

การกลับเข้าภายในแถบที่เพิ่งปรับใหม่อาจต่างจากการกลับเข้าขอบเขตเดิมที่ถูกทะลุ

สับสนการแตะระดับกับการข้ามระดับ

ราคาเท่ากับ U ไม่ถือว่า breakout โดยอัตโนมัติ ต้องกำหนดกฎปัดเศษตาม tick และกฎเปรียบเทียบไว้ล่วงหน้า

มองข้ามต้นทุนซื้อขายถี่จากช่วงคำนวณสั้น

ค่า N ที่น้อยลงสามารถสร้างสัญญาณที่เกิดขึ้นบ่อยครั้ง ซึ่งต้นทุนในการดำเนินการจะมากกว่ากำไรขั้นต้น

รายการตรวจสอบก่อนใช้วิธีนี้

ทำเครื่องหมายแต่ละข้อหลังตรวจสอบกับข้อมูลของคุณแล้ว ความคืบหน้าจะบันทึกในเบราว์เซอร์นี้ แต่ไม่ได้รับรองว่ากลยุทธ์ทำกำไรได้

0/8 ข้อ

คำถามที่พบบ่อย

ควรขายเมื่อราคาแตะแถบบนหรือไม่?

ไม่มีข้อสรุปทั่วไป การสวนทางที่ขอบเขตโดยคาดว่าราคาจะกลับ กับการซื้อเมื่อ breakout เป็นสมมติฐานตรงข้ามที่ต้องกำหนดและทดสอบแยกกัน

Donchian ใช้แทน pivot ได้หรือไม่?

มันสามารถให้ข้อมูลอ้างอิงการทะลุแนวต้านได้ แต่ไม่ได้ให้การยืนยันการกลับตัวด้านขวาหรือลำดับการแกว่งตัวเหมือนกับตัวตรวจจับจุดหมุน

แหล่งวิจัย

แต่ละแหล่งสนับสนุนคำจำกัดความหรือหลักฐานที่อธิบายไว้ข้างกัน รหัสเทียม ตัวอย่างสมมติ และพารามิเตอร์ที่เสนอต้องผ่านการตรวจสอบแยกต่างหาก

  1. Donchian ChannelsTradingView. ขอบเขตที่อ่าน: สูตรช่องราคาและคำอธิบายการใช้งาน ตรวจสอบเมื่อ: .
  2. pandas.Series.shiftpandas. ขอบเขตที่อ่าน: API เพื่อยืนยันการเลื่อนค่าข้อมูล ตรวจสอบเมื่อ: .
  3. Pine Script: StrategiesTradingView. ขอบเขตที่อ่าน: การสร้างคำสั่ง การจับคู่ที่ tick ถัดไปที่มีให้ และพฤติกรรมคำสั่ง stop ตรวจสอบเมื่อ: .

วิธีการที่เกี่ยวข้อง

หมายเหตุความเสี่ยง

เนื้อหานี้ใช้เพื่อการศึกษาและออกแบบงานวิจัย ไม่ใช่คำแนะนำทางการเงิน Backtest เป็นการจำลองข้อมูลในอดีต ไม่รับประกันผลในอนาคตและไม่ส่งคำสั่งซื้อขายจริง วิธีการในคลังนี้ไม่ได้หมายความว่ามีเป็นฟีเจอร์ในแอปทั้งหมด ดู ระเบียบวิธี และ ศูนย์การเรียนรู้.

ตรวจสอบกฎก่อนเสี่ยงด้วยเงินจริง

ตรวจสอบความสามารถของแอป ข้อมูล และแต่ละรายการซื้อขายจำลอง ตัวตรวจจับขั้นสูงอาจต้องพัฒนาแยกต่างหาก

ดาวน์โหลด Backtest บน App Store