1 görüntülenme
sistem çalışmıyor hata veriyor yardımcı olurmusunuz ?
using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.Data.Symbol;
using Matriks.Engines;
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;
//===========================================ACIKLAMA============================================//
// Başlangıçta belirlenen bakiyeye ve elinizdeki estrüman adetine göre strateji çalışmaya başlar.//
// Alış sinyali oluştuysa bakiye varsa bakiye kadar alış yapar. //
// Satış sinyali oluştuysa pozisyonunuz varsa hepsini satar. //
// Backtest yapıp test hesablarından denedikten sonra küçük miktarlarla gerçek hesapta deneyiniz //
//===============================================================================================//
namespace Matriks.Lean.Algotrader
{
public class MostTumBakiyeStrategy : 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("Bakiye", 10000)]
public decimal Bakiye { get; set; }
[SymbolParameter("Baslangıctaki Enstruman Adedi", 0)]
public int BaslangıctakiEnstrumanAdedi { get; set; }
[SymbolParameter("Most Periyodu", 14)]
public int MostPeriyodu { get; set; }
[SymbolParameter("Most Üst Seviye", 70)]
public int MostUstSeviye { get; set; }
[SymbolParameter("Most Alt Seviye", 30)]
public int MostAltSeviye { get; set; }
// Strateji çalıştırılırken kullanacağımız değişkenler. Bu değişkenlerin değerleri strateji çalışırken değişebilir.
private int Adet = 0;
private bool AlisMI = false;
private bool SatisMI = false;
private decimal Fiyat = 0;
private decimal KarZarar = 0;
private decimal ToplamKarZarar = 0;
private decimal KarZararOrani = 0;
private decimal ToplamKarZararOrani = 0;
private decimal BaslangicBakiyesi = 0;
private decimal BaslangicFiyati = 0;
private decimal SonFiyat = 0;
private int SystemPosition = 0;
private int realposition = 0;
// Strateji başladığında çalışacak fonksiyon. Burada strateji için gerekli olan indikatörleri tanımlarız.
public override void Initialize()
{
// Most indikatörünü tanımlıyoruz. Periyodu, üst seviyesi ve alt seviyesi parametrelerden alıyoruz.
var most = new Most(Symbol, MostPeriyodu, MostUstSeviye, MostAltSeviye);
// Strateji için gerekli olan verileri alıyoruz. Bu veriler, indikatör hesaplamalarında ve strateji koşullarında kullanılacaktır.
var close = GetClose(Symbol);
var high = GetHigh(Symbol);
var low = GetLow(Symbol);
var open = GetOpen(Symbol);
var volume = GetVolume(Symbol);
// Strateji için gerekli olan indikatör değerlerini alıyoruz. Bu değerler, strateji koşullarında kullanılacaktır.
var mostValue = most.Value;
var mostSignal = most.Signal;
// Strateji için gerekli olan koşulları tanımlıyoruz. Bu koşullar, alış veya satış sinyallerini tetikleyecektir.
var alisKosulu = mostSignal > 0;
var satisKosulu = mostSignal < 0;
// Strateji için gerekli olan emirleri tanımlıyoruz. Bu emirler, alış veya satış sinyalleri oluştuğunda çalışacaktır.
var alisEmri = new MarketOrder(Symbol, OrderSide.Buy, () => Adet);
var satisEmri = new MarketOrder(Symbol, OrderSide.Sell, () => Adet);
// Strateji için gerekli olan fonksiyonları tanımlıyoruz. Bu fonksiyonlar, alış veya satış sinyalleri oluştuğunda çalışacaktır.
var alisFonksiyonu = new Action(FX_Alis);
var satisFonksiyonu = new Action(FX_Satis);
// Strateji için gerekli olan sinyalleri tanımlıyoruz. Bu sinyaller, koşullar ve emirler arasındaki ilişkiyi kuracaktır.
var alisSinyali = new Signal("Alış Sinyali", alisKosulu, alisEmri, alisFonksiyonu);
var satisSinyali = new Signal("Satış Sinyali", satisKosulu, satisEmri, satisFonksiyonu);
// Strateji için gerekli olan sinyalleri sisteme ekliyoruz. Bu sinyaller, strateji çalıştığında devreye girecektir.
AddSignal(alisSinyali);
AddSignal(satisSinyali);
// Strateji için gerekli olan veri ve indikatörleri sisteme ekliyoruz. Bu veri ve indikatörler, strateji çalıştığında güncellenecektir.
AddData(close);
AddData(high);
AddData(low);
AddData(open);
AddData(volume);
AddIndicator(most);
// Strateji için gerekli olan parametreleri ekrana yazdırıyoruz. Bu parametreler, strateji başladığında belirlenmiştir.
Debug("Strateji Başladı");
Debug("Bakiye: " + Bakiye);
Debug("Baslangıctaki Enstruman Adedi: " + BaslangıctakiEnstrumanAdedi);
Debug("Most Periyodu: " + MostPeriyodu);
Debug("Most Üst Seviye: " + MostUstSeviye);
Debug("Most Alt Seviye: " + MostAltSeviye);
// Strateji için gerekli olan değişkenleri başlangıç değerlerine ayarlıyoruz. Bu değişkenler, strateji çalışırken değişebilir.
Adet = 0;
AlisMI = false;
SatisMI = false;
Fiyat = 0;
KarZarar = 0;
ToplamKarZarar = 0;
KarZararOrani = 0;
ToplamKarZararOrani = 0;
BaslangicBakiyesi = Bakiye;
BaslangicFiyati = 0;
SonFiyat = 0;
SystemPosition = 0;
realposition = 0;
}
// Strateji çalışırken her yeni bar oluştuğunda çalışacak fonksiyon. Burada strateji için gerekli olan hesaplamaları yaparız.
public override void OnBarUpdate()
{
//