Merhaba,
Aşağıda örnek kodu paylaştığım gii grafikte çizdiğim bir trendi yukarı kestiğinde alım yapacak bir bot yazmak istiyorum. Ancak bu kodu çalıştırdığımda
myTrend.CurrentValue
değerinde bir veri olmuyor. manuel çizdiğim trendi kestiğinde işlem yapacak bir örnek kod var mıdır?
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 TrendTakip_dene2 : 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("ENJ_USDT_BIN")]
public string Symbol;
[Parameter(SymbolPeriod.Day)]
public SymbolPeriod SymbolPeriod;
ITrend myTrend;
/// <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()
{
AddSymbol(Symbol, SymbolPeriod);
//myTrend = MyTrend(Symbol, SymbolPeriod, 100, 0, TrendType.Increasing, true);
myTrend = MyTrend(Symbol, SymbolPeriod, new DateTime(2021, 4, 8, 12, 0, 0), 3.48572398074866m, new DateTime(2021, 6, 6, 12, 0, 0), 1.2152916014338m);
//MyTrend fonksiyonu arac kutusundan default degerler ile getirilmistir.
//Boylelikle hem hata alinmadan kod compile etmekte, hem de ornek degerler gosterilmektedir.
//***Grafikte gorebileceginiz bir trend olusturmak icin lutfen bu degerleri degistirin***
//(Kullanmak istediginiz MyTrend'e gore intellisense'de secenekleri gorebilirsiniz)
//Symbol, SymbolPeriod sizin tarafinizdan tanimlanmis sembol ve periyotudur.
//Parametre olarak tanimlanmadiysa ornek tanimlamalar: Symbol: "GARAN"
//barCount(default=100) trend cizgisinin kac bari kapsayacagidir.
//refIndex(default=0) son bardan kac bar once trend cizgisinin kapatilacagidir
//(orn. 0 son bara kadar cekilir, 10 ise canli bardan 10 bar once trend cizgisi sonlandirilir.)
//TrendType.Increasing veya TrendType.Decreasing yükselen/düşen trendler.
//isAutoTrend(false) trend'i otomatik olarak cizip birakir. True yapilirsa, bari her yeni data ile gunceller.
DrawTrend(myTrend, Colors.Red);
//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>
/// 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)
{
myTrend = MyTrend(Symbol, SymbolPeriod, new DateTime(2021, 4, 8, 12, 0, 0), 3.48572398074866m, new DateTime(2021, 6, 6, 12, 0, 0), 1.2152916014338m);
var close = barDataCurrentValues.LastUpdate.Close;
Debug("Trend current value : " + myTrend.CurrentValue);
if (close == myTrend.CurrentValue)
{
Debug("Trend current value eşitlendi!!! = " + myTrend.CurrentValue);
}
}
}
}