0 beğenilme 0 beğenilmeme
202 kez görüntülendi

Merhaba,

aşağıdaki örnek kod içersinde yazdığım limit emri backtestte istediğim fiyattan verilmiyor. Onun yerine sembolün o anki fiyatından, sanki piyasa emriyimiş gibi veriliyor. Kendi istediğim fiyattan limit emri oluşturmak için ne yapmalıyım?

 

 

using System;

using System.Collections.Generic;

using System.Linq;

using Matriks.Data.Symbol;

using Matriks.Engines;

using System.Windows.Media;

using Matriks.Indicators;

using Matriks.Symbols;

using Matriks.AlgoTrader;

using Matriks.Trader.Core;

using Matriks.Trader.Core.Fields;

using Matriks.Trader.Core.TraderModels;

using Matriks.Lean.Algotrader.AlgoBase;

using Matriks.Lean.Algotrader.Models;

using Matriks.Lean.Algotrader.Trading;

 

namespace Matriks.Lean.Algotrader

{

    public class LimitOrderTest : MatriksAlgo

    {

        // Strateji çalıştırılırken kullanacağımız parametreler. Eğer sembolle ilgili bir parametre ise,

        // "SymbolParameter" ile, değilse "Parameter" ile tanımlama yaparız. Parantez içindeki değerler default değerleridir.

 

        [SymbolParameter("GARAN")]

        public string Symbol;

 

        [Parameter(SymbolPeriod.Min60)]

        public SymbolPeriod SymbolPeriod;

 

        MatriksIndicator SNYL3;

 

        

 

        /// <summary>

        /// Strateji ilk çalıştırıldığında bu fonksiyon tetiklenir. Tüm sembole kayit işlemleri,

        /// indikator ekleme, haberlere kayıt olma işlemleri burada yapılır.

        /// </summary>

        public override void OnInit()

        {

            SNYL3 = new SNYL3();

    SNYL3.SetIndicatorParameters("Opt2",8);

    SNYL3.SetIndicatorParameters("Opt3",20);

    SNYL3.SetIndicatorParameters("Opt4",10);

    SNYL3.SetIndicatorParameters("Opt5",30);

    SNYL3.SetIndicatorParameters("Opt6",12);

 

            RegisterUserIndicator(SNYL3,Symbol, SymbolPeriod, OHLCType.Close,5);

 

            AddSymbol(Symbol, SymbolPeriod);

 

            //Eger backtestte emri bir al bir sat seklinde gonderilmesi isteniyor bu true set edilir.

            //Alttaki satırı silerek veya false geçerek emirlerin sirayla gönderilmesini engelleyebilirsiniz.

            SendOrderSequential(true);

        }

 

        /// <summary>

        /// Init islemleri tamamlaninca, bardatalar kullanmaya hazir hale gelince bu fonksiyon tetiklenir. Data uzerinde bir defa yapilacak islemler icin kullanilir

        /// </summary>

        public override void OnInitCompleted()

        {

 

        }

 

        /// <summary>

        /// Eklenen sembollerin bardata'ları ve indikatorler güncellendikçe bu fonksiyon tetiklenir.

        /// </summary>

        /// <param name="barData">Bardata ve hesaplanan gerçekleşen işleme ait detaylar</param>

        public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues)

        {

            if (Ornek_Indikator.CurrentValue > 10) {

                Debug("LimitOrder");

                SendLimitOrder("GARAN",1,OrderSide.Buy,150.05m);

            }

        }

 

        /// <summary>

        /// Gönderilen emirlerin son durumu değiştikçe bu fonksiyon tetiklenir.

        /// </summary>

        /// <param name="barData">Emrin son durumu</param>

        public override void OnOrderUpdate(IOrder order)

        {

            if (order.OrdStatus.Obj == OrdStatus.Filled)

            {

 

            }

        }

 

        /// <summary>

        /// Strateji durdurulduğunda bu fonksiyon tetiklenir.

        /// </summary>

        public override void OnStopped()

        {

        }

    }

}

Algoritmik Trading kategorisinde (22 puan) tarafından | 202 kez görüntülendi

1 cevap

1 beğenilme 0 beğenilmeme

Merhaba,

Resimde işaretlenen seçeneği kullanıp deneyiniz.

(7,592 puan) tarafından
0 0
Teşekkür ederim.

Yalnız bu backtestte olan bir ayar, robotu gerçekten çalıştırmaya başladığımda da böyle bir ayar seçmem gerekli mi, yoksa otomatik olarak limit emirleri

SendLimitOrder("GARAN",1,OrderSide.Buy,150.05m);

metodunda yazdığım fiyata göre mi oluşturulacak?
1 0
gerçekte gönderdiğiniz fiyattan iletileceğinden herhangi bir ayara gerek yok
0 0
Söylediğiniz gibi bu seçeneği seçerek backtest yapmama rağmen hala

SendLimitOrder("GARAN",1,OrderSide.Buy,150.05m);

satırında belirttiğim 150.05 fiyatından değil, sembolün kapanışı neyse ordan emir gönderiliyor. Başka bir çözüm öneriniz var mı?
6,367 soru
6,395 cevap
3,959 yorum
5,122 kullanıcı