0 beğenilme 0 beğenilmeme
475 kez görüntülendi
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()
        {
            //
Algoritmik Trading kategorisinde (12 puan) tarafından | 475 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme
Eğer kod bloğunun tamamını buraya gönderdiğini düşünüyorsanız,kod bloğu eksik zaten çalışmayacaktır.

Eğer yarısını göndermişim diyorsanız kodunuzun tamamını gönderebilirseniz incelemek daha sağlıklı olacaktır
(406 puan) tarafından
Hoş geldiniz, Matriks Destek Platformu sizlere sorularınızın hızlıca cevaplanması için bir ortam sağlar. Sorduğunuz ve cevapladığınız soruların ve yorumlarınızın aldığı oylar üzerinden puan kazanırsınız. Puan sistemine bağlı kampanyamızla ücretsiz kullanım avantajlarından faydalanabilirsiniz.



8,635 soru
8,589 cevap
4,821 yorum
19,779 kullanıcı