ข้ามไปที่เนื้อหา

วิธีใช้อินดิเคเตอร์ใน cBots

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

สร้าง cBot ใหม่

เพื่อดูอินดิเคเตอร์ที่กำหนดเองทั้งหมดที่ติดตั้งบนเครื่องของคุณ ให้สลับไปที่แอป Algo และไปที่แท็บ อินดิเคเตอร์

หากคุณเห็นอินดิเคเตอร์ที่กำหนดเองหนึ่งตัวหรือมากกว่าที่นี่ นั่นหมายความว่าคุณสามารถใช้มันในอัลกอริทึมอื่นๆ ของคุณได้อย่างอิสระ สำหรับบทช่วยสอนนี้ เราจะใช้อินดิเคเตอร์ Sample SMA และพัฒนา cBot ที่เทรดตามทิศทางของค่าเฉลี่ยเคลื่อนที่อย่างง่าย

ขั้นแรก เราจะ สร้าง cBot ใหม่ และเปลี่ยนชื่อเป็นสิ่งที่มีข้อมูล เช่น "SMA Robot" cBot ของเราจะเข้าสู่การเทรดซื้อเมื่อ SMA เปลี่ยนเป็นขาขึ้น และเข้าสู่การเทรดขายเมื่อ SMA เปลี่ยนเป็นขาลง cBot ของเราจะไม่ทำ Hedging กับโพสิชัน หมายความว่าโพสิชันตรงข้ามจะถูกปิดในแต่ละสัญญาณใหม่

เริ่มต้นอินดิเคเตอร์

เมื่อพูดถึงอินดิเคเตอร์ที่กำหนดเอง ขั้นตอนแรกของเราคือเพิ่มการอ้างอิงไปยังอินดิเคเตอร์ที่กำหนดเอง เพื่ออ้างอิงอินดิเคเตอร์ที่กำหนดเอง เราต้องทำตามขั้นตอนต่อไปนี้:

  1. คลิกปุ่ม จัดการการอ้างอิง
  2. ค้นหาอินดิเคเตอร์ที่เราต้องการอ้างอิงในหน้าต่างที่เปิดใหม่
  3. ติ๊กช่องถัดจากอินดิเคเตอร์ที่เราต้องการอ้างอิง
  4. คลิก นำไปใช้

หลังจากที่อินดิเคเตอร์ถูกอ้างอิงแล้ว เราสามารถสร้างตัวแปรอินสแตนซ์ของประเภทนั้นได้

1
SampleSMA _sma;

หมายเหตุ

ประเภทของอินดิเคเตอร์ควรจะเหมือนกับชื่อคลาสของอินดิเคเตอร์ สิ่งนี้อาจแตกต่างจากชื่อไฟล์ของอินดิเคเตอร์

ขั้นตอนต่อไปคือเริ่มต้นอินดิเคเตอร์ในเมธอด OnStart() ของเรา อย่างไรก็ตาม ก่อนที่เราจะทำเช่นนั้น เราจะเพิ่มพารามิเตอร์ให้กับ cBot ที่จะอนุญาตให้เราตั้งค่าช่วงเวลาที่ใช้อินดิเคเตอร์ SMA ที่กำหนดเอง

1
2
[Parameter(DefaultValue = 14)]
public int Periods { get; set; }

เราสามารถใช้เมธอด Indicators.GetIndicator<>() เพื่อเริ่มต้นอินดิเคเตอร์ที่กำหนดเองใดๆ ที่เราอ้างอิง เราต้องกำหนดประเภทของอินดิเคเตอร์และส่งพารามิเตอร์ของอินดิเคเตอร์ที่คั่นด้วยเครื่องหมายจุลภาค

หมายเหตุ

พารามิเตอร์ต้องถูกส่งตามลำดับที่ประกาศในคลาสของอินดิเคเตอร์

ในกรณีของเรา ประเภทคือ SampleSMA และเราจะส่งค่าต้นทางของอินดิเคเตอร์นี้ ซึ่งในกรณีนี้คือราคาปิดของแท่งและพารามิเตอร์ Period

1
_sma = Indicators.GetIndicator<SampleSMA>(Bars.ClosePrices, Periods);

นำกลยุทธ์การเทรดมาใช้

เมื่ออินดิเคเตอร์ของเราเริ่มต้นแล้ว เราสามารถนำกลยุทธ์การเทรดของเรามาใช้ได้ อินดิเคเตอร์ SMA ที่กำหนดเองของเราบันทึกค่าค่าเฉลี่ยเคลื่อนที่ในคอลเลกชัน Results คอลเลกชัน Results มีสองเมธอดที่มีประโยชน์คือ IsRising() และ IsFalling() เมธอดเหล่านี้ช่วยให้เราทราบว่าผลลัพธ์ของอินดิเคเตอร์กำลังเพิ่มขึ้นหรือลดลง

เราจะใช้เมธอดเหล่านี้เพื่อนำเงื่อนไขการเทรดของเรามาใช้

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
protected override void OnBarClosed()
{
    if(_sma.Result.IsRising())
    {        

    }
    else if(_sma.Result.IsFalling())
    {

    }
}

ตอนนี้เราจะเติมคำสั่ง if ของเรา เมื่อค่าเฉลี่ยเคลื่อนที่เพิ่มขึ้น เราจะปิดโพสิชันขายทั้งหมดและเปิดโพสิชันซื้อ แทนที่จะเป็นเช่นนั้น เมื่อค่าเฉลี่ยเคลื่อนที่ลดลง เราจะปิดโพสิชันซื้อทั้งหมดและเปิดโพสิชันขาย

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
protected override void OnBarClosed()
{
    if(_sma.Result.IsRising())
    {
        Close(TradeType.Sell);
        Open(TradeType.Buy);
    }
    else if(_sma.Result.IsFalling())
    {
        Close(TradeType.Buy);
        Open(TradeType.Sell);            
    }
}

ในโค้ดของเรา เราได้ใช้สองเมธอดใหม่ที่ API ไม่ได้ให้มาโดยค่าเริ่มต้น เมธอด Open() เปิดโพสิชันใหม่ตามทิศทางและปริมาณที่กำหนด เมธอด Close() ปิดโพสิชันทั้งหมดของทิศทางที่กำหนด

นี่คือวิธีการกำหนดเมธอด Open()

1
2
3
4
5
private void Open(TradeType tradeType)
{
    if(Positions.Count == 0)
        ExecuteMarketOrder(tradeType, SymbolName, Volume, InstanceId);
}

เพื่อดำเนินการคำสั่งภายในเมธอด Open() เรายังต้องเพิ่มพารามิเตอร์ Volume

1
2
[Parameter(DefaultValue = 10000)]
public int Volume { get; set; }

ทั้งหมดที่เหลือคือการกำหนดเมธอด Close()

1
2
3
4
5
private void Close(TradeType tradeType)
{
    foreach (var position in Positions.Where(p => p.TradeType == tradeType))
        position.Close();
}

ดำเนินการ backtesting

เช่นเคย ก่อนที่เราจะให้ cBot เทรดแทนเรา เราจะทำการ backtest อย่างละเอียด เพื่อทำเช่นเดียวกัน เพิ่มอินสแตนซ์แล้วสลับไปที่แท็บ Backtesting

เพื่อทดสอบ cBot ของเราเพิ่มเติม เราจะเพิ่มอินดิเคเตอร์ที่กำหนดเองที่เราอ้างอิงลงในกราฟที่อินสแตนซ์ถูกแนบมาและตรวจสอบว่าจุดเข้าสู่โพสิชันตรงกับผลลัพธ์ของอินดิเคเตอร์หรือไม่

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการใช้และพัฒนา cBots อย่าลังเลที่จะเรียกดูส่วนอื่นๆ ของเอกสารและสมัครสมาชิกช่อง YouTube ของเราเพื่อรับการแจ้งเตือนเมื่อเราตีพิมพ์วิดีโอใหม่

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

การสร้าง cBot ใหม่

เพื่อดูอินดิเคเตอร์ที่กำหนดเองทั้งหมดที่ติดตั้งบนเครื่องของคุณ ให้สลับไปที่แอปพลิเคชัน Algo และไปที่แท็บ 'อินดิเคเตอร์'