การเทรดด้วยระบบ 게시글

Babi Ngepet: ที่ปรึกษาผู้เชี่ยวชาญสำหรับ MetaTrader 5

첨부파일
64444.zip (7.11 KB, 다운로드 0회)

พารามิเตอร์ของที่ปรึกษาผู้เชี่ยวชาญ (Inputs)

EA ตัวนี้มีพารามิเตอร์หลายตัวที่ผู้ใช้งานสามารถปรับแต่งได้เพื่อควบคุมพฤติกรรมของมัน:

พารามิเตอร์ทั่วไป

พารามิเตอร์ ประเภท คำอธิบาย
MagicNumber int หมายเลขเฉพาะสำหรับการเทรดของ EA นี้
InitialLot double ขนาดล็อตเริ่มต้นสำหรับการเทรดแรกในชุด
AllowBuy bool หมายธงเพื่ออนุญาตให้ EA เปิดการเทรดซื้อ (ทั้งการเทรดเริ่มต้นและ Martingale)
AllowSell bool หมายธงเพื่ออนุญาตให้ EA เปิดการเทรดขาย (ทั้งการเทรดเริ่มต้นและ Martingale)
TakeProfit int กำไรที่ตั้งไว้ในจุด/pips ที่ใช้ในขณะตั้งคำสั่งรอด (ไม่รวมถึงการดำเนินการในตลาด)
FindHighLowBackBars int จำนวนแท่งก่อนหน้าที่ให้มองย้อนกลับไปเพื่อกำหนดจุดสูงสุดและต่ำสุดสำหรับการตั้งคำสั่งรอดเริ่มต้น
ResetAfterBars int จำนวนแท่งหลังจากที่คำสั่งรอดเริ่มต้นจะถูกลบและประเมินใหม่ (ถ้าไม่มีตำแหน่งเปิดอยู่)

กลยุทธ์ Martingale

พารามิเตอร์ ประเภท คำอธิบาย
ReverseMartingale bool ถ้าเป็นจริง การเทรด Martingale ถัดไปจะอยู่ในทิศทาง ตรงข้าม กับการเทรดล่าสุดในชุด (นี่คือวิธีการป้องกัน แต่โค้ดจะ เปิด ในทิศทางเดียวกันถ้าเป็นเท็จ)
LotMultiplier double ปัจจัยที่ใช้ในการคูณขนาดล็อตสำหรับการเทรดถัดไปในชุดที่ขาดทุน (เช่น 2.0 แปลว่าคูณล็อตเป็นสองเท่า)
SecureProfitMartingaleTarget double กำไรที่ ลอยตัวรวม (ในสกุลเงินบัญชี) ที่ซึ่งทั้งชุดการเทรดที่เปิดอยู่จะถูกปิด
DistanceMartingalePips int ระยะทาง (ใน pips) ที่ราคาต้องเคลื่อนไหวในทิศทางตรงกันข้ามจากราคาที่เปิดการเทรดล่าสุดก่อนที่จะเปิดการเทรด Martingale ใหม่
MaxTradesInSeries int จำนวนการเทรดสูงสุดที่อนุญาตในชุด Martingale เดียว

กลยุทธ์ตามเวลา

พารามิเตอร์ ประเภท คำอธิบาย
AllowMonday... AllowFriday bool ธงเพื่อเปิดหรือปิดการเทรดในวันเฉพาะของสัปดาห์
ForbiddenDates string รายการวันที่ที่ห้ามเทรด (รูปแบบ YYYY.MM.DD) ที่การเทรดถูกห้าม

ภาพรวมของฟังก์ชันหลัก

OnInit() (การเริ่มต้น)

ตั้ง MagicNumber ของ EA, โหมดมาร์จิ้น และการเบี่ยงเบน มัน รีเซ็ตสถานะ Martingale (s_currentLot, s_totalTradesInSeries, ฯลฯ) ให้กลับไปที่ค่าเริ่มต้น เตรียมพร้อมสำหรับการเริ่มต้นใหม่

OnDeinit() (การยกเลิกการเริ่มต้น)

ฟังก์ชันง่ายๆ สำหรับการทำความสะอาด พิมพ์ข้อความเมื่อ EA ถูกหยุดหรือถูกลบ

IsTradingDateAllowed() และ IsTradingDayAllowed() (ตัวกรองการเทรด)

ฟังก์ชันเหล่านี้ตรวจสอบวันและวันที่ปัจจุบันกับข้อมูลที่ผู้ใช้กำหนด (AllowMonday ถึง AllowFriday และ ForbiddenDates) เพื่อตรวจสอบว่าการเทรดได้รับอนุญาตหรือไม่

OpenTradeLogic(ENUM_ORDER_TYPE type, string tradeComment) (การดำเนินการในตลาด)

ฟังก์ชันนี้จัดการการเปิดตำแหน่งตลาดใหม่ (ซื้อหรือขาย)

  1. ตรวจสอบและปรับขนาดล็อตให้ตรงตามความต้องการของโบรกเกอร์

  2. ตรวจสอบ มาร์จิ้นที่เพียงพอ โดยใช้ CheckMargin()

  3. ดำเนินการเทรด โดยไม่มีการตั้ง Take Profit หรือ Stop Loss (tp_calculated คือ 0)

  4. อัปเดตตัวแปรสถานะ Martingale ทั่วไป: s_currentLot, s_lastOpenPrice, s_seriesType และ s_totalTradesInSeries

CloseAllPositions()

วนผ่านตำแหน่งที่เปิดอยู่ทั้งหมดและปิดตำแหน่งใดๆ ที่เปิดโดย EA นี้ (ตรงกับ MagicNumber)

PendingOrders(ENUM_ORDER_TYPE type, double price, double lotSize, string comment) (การตั้งคำสั่งรอด)

ฟังก์ชันนี้ตั้ง Buy Limit หรือ Sell Limit:

  1. ตรวจสอบขนาดล็อตและตรวจสอบมาร์จิ้นที่เพียงพอ

  2. ตรวจสอบราคาที่เข้าตามระยะขั้นต่ำของโบรกเกอร์ (SYMBOL_TRADE_STOPS_LEVEL)

  3. คำนวณ Take Profit ที่ตั้งไว้ (tp) ตามข้อมูล TakeProfit

  4. ส่งคำขอการเทรด หมายเหตุ: ฟังก์ชัน UpdateHighLowAndOrders เรียก ตัวนี้เพื่อวางคำสั่ง Buy Limit และ Sell Limit เริ่มต้น

UpdateHighLowAndOrders() (ตรรกะการเข้าตั้งต้น)

นี่คือ กลไกการเข้าตั้งต้น เมื่อไม่มีตำแหน่งเปิด:

  1. มองย้อนกลับ FindHighLowBackBars เพื่อหาจุด สูงสุด และ ต่ำสุด

  2. คำนวณราคาSellLimit (Highest High + 1 tick) และราคาBuyLimit (Lowest Low - 1 tick)

  3. ตรวจสอบว่าคำสั่ง Buy Limit และ Sell Limit ที่มี MagicNumber ของ EA นั้นมีอยู่แล้วหรือไม่

  4. วางคำสั่ง Sell Limit เริ่มต้นที่สูงกว่าจุดสูงสุดล่าสุด และคำสั่ง Buy Limit ที่ต่ำกว่าจุดต่ำสุดล่าสุด โดยแต่ละคำสั่งใช้ InitialLot

OnTick() (ตรรกะหลัก)

ส่วนหลักของตรรกะการทำงานของ EA:

  1. การตรวจสอบเวลา: ป้องกันการคำนวณซ้ำซ้อนใน tick เดียวกัน

  2. การตรวจสอบตัวกรอง: ถ้าการเทรดไม่ได้รับอนุญาตตามวัน/วันที่ จะลบคำสั่งรอดทั้งหมด

  3. การตรวจสอบเป้าหมายกำไร (การออกจากชุด): ถ้า eaHasOpenPositions เป็นจริง และ totalFloatingProfit เป็น SecureProfitMartingaleTarget จะเรียก CloseAllPositions() และ รีเซ็ตตัวแปรสถานะ Martingale ทั้งหมด เพื่อเริ่มชุดใหม่

  4. การวางคำสั่งเริ่มต้น: ถ้า !eaHasOpenPositions และการเทรดได้รับอนุญาต จะ รีเซ็ตสถานะ Martingale และตรวจสอบว่ามีแท่งใหม่เกิดขึ้นหรือไม่

    • ถ้ามีแท่งใหม่เกิดขึ้น จะตรวจสอบว่า barsCount เป็น ResetAfterBars หรือไม่ ถ้าใช่ จะลบคำสั่งรอดและเรียก UpdateHighLowAndOrders() เพื่อวางคำสั่งเริ่มต้นใหม่ ถ้าไม่ใช่ก็เพียงเรียก UpdateHighLowAndOrders()

  5. ตรรกะขั้นตอน Martingale: ถ้า eaHasOpenPositions เป็นจริง และ s_totalTradesInSeries น้อยกว่า MaxTradesInSeries:

    • ตรวจสอบว่า totalFloatingProfit เป็น ลบ และราคาขยับไปในทิศทางตรงกันข้ามจากการเทรดล่าสุดอย่างน้อย DistanceMartingalePips

    • ถ้าทั้งสองเงื่อนไขเป็นจริง คำนวณ nextLot โดยการคูณ s_currentLot ด้วย LotMultiplier

    • กำหนดทิศทาง orderToOpen (ในทิศทางเดียวกับชุดหรือในทิศทางตรงกันข้าม ตาม ReverseMartingale)

    • เรียก OpenTradeLogic() เพื่อเปิดตำแหน่งใหม่ที่คูณแล้วต่อไปในชุด Martingale


สรุปกลยุทธ์

EA "Babi Ngepet" ใช้กลยุทธ์ Martingale ที่เสี่ยงแต่มีโอกาสสูงในการสร้างผลตอบแทนร่วมกับการเข้าตั้งต้นแบบ breakout/range-reversal:

  1. การเข้าตั้งต้น: EA จะวางคำสั่ง Buy Limit (ต่ำกว่าจุดต่ำล่าสุด) และ Sell Limit (สูงกว่าจุดสูงสุดล่าสุด) ซึ่งแสดงถึงการสมมุติฐานเริ่มต้นว่าอยู่ใน พฤติกรรมเรียงขอบ—มันจะเข้าซื้อเมื่อราคาลดลงถึงจุดต่ำ และขายเมื่อราคาขึ้นถึงจุดสูง

  2. การจัดการการเทรด: หากการเทรดเริ่มต้นใด ๆ ถูกกระตุ้นและตำแหน่งเคลื่อนที่ไปในทิศทางขาดทุนรวม (กำไรลอยตัวลบ) และราคายังคงเคลื่อนที่ไปในทิศทางตรงกันข้ามกับตำแหน่งเปิดโดยระยะที่กำหนด EA จะเปิด ตำแหน่งใหม่ ในทิศทางเดียวกันด้วย ขนาดล็อตใหญ่กว่า (Martingale)

  3. กลยุทธ์การออก: ชุดของการเทรดจะเพิ่มขนาดล็อตจนกว่ากำไรลอยตัวรวมของการเทรดทั้งหมดในชุดจะถึง SecureProfitMartingaleTarget ซึ่งในจุดนั้นจะปิดตำแหน่งทั้งหมด และ EA จะรีเซ็ตเพื่อเริ่มชุดใหม่

คำเตือน: กลยุทธ์ Martingale มีความเสี่ยงสูงและมีโอกาสขาดทุนสูงเนื่องจากขนาดล็อตจะเพิ่มขึ้นหลังจากแต่ละขั้นตอนที่ขาดทุน

연관 포스트

댓글 (0)