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

Merhaba,

IQ algo ile algoritmik trade yapıyorum. Az önce KFEIN hissesinde algo 24.10 fiyatından 300 lot alış yazdı fakat bakiye yetersiz olduğu için iptal uyarısı verdi. O esnada hesabımda 7732 TL nakit vardı ve alacağım lotların toplam bedeli 7230 TL idi. O esnada ekran başında olduğum için aynı fiyattan manuel emir girerek satın almayı gerçekleştirdim. Sorun ne olabilir?

İyi çalışmalar dilerim..

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

1 cevap

0 beğenilme 0 beğenilmeme
Merhaba,

Sizin için sorun olmazsa kullandığınız sistemi paylaşabilirseniz yardımcı olmaya çalışalım.

İyi çalışmalar.
(11,069 puan) tarafından
0 0
Merhaba,

using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.Data.Symbol;
using Matriks.Engines;
using Matriks.Indicators;
using Matriks.Symbols;
using Matriks.Trader.Core;
using Matriks.Trader.Core.Fields;
using Matriks.Lean.Algotrader.AlgoBase;
using Matriks.Lean.Algotrader.Models;
using Matriks.Lean.Algotrader.Trading;
using Matriks.AI;
using Matriks.AI.AiParameters;
using Matriks.AI.Data;
using Matriks.Trader.Core.TraderModels;

namespace Matriks.Lean.Algotrader
{
    public class alpha_trend : 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("TKFEN")]
            public string Symbol1;

        [Parameter(SymbolPeriod.Min)]
            public SymbolPeriod SymbolPeriod1;

        [Parameter(1)]
            public decimal Alphatrend_iqCoeff1;

        [Parameter(14)]
            public int Alphatrend_iqPeriod1;

        [Parameter(Momentum.MFI)]
            public Momentum Alphatrend_iqMomentum1;

        [Parameter(1)]
            public decimal OrderQuantity1;

        [Parameter(1)]
            public decimal OrderQuantity2;

        MatriksIndicator AlphaTrend_IQ;

 

        public override void OnInit()
        {

            AlphaTrend_IQ = new AlphaTrend_IQ();

            AlphaTrend_IQ.SetIndicatorParameters("Coeff", Alphatrend_iqCoeff1);
            AlphaTrend_IQ.SetIndicatorParameters("Period", Alphatrend_iqPeriod1);
            AlphaTrend_IQ.SetIndicatorParameters("Momentum", Alphatrend_iqMomentum1); RegisterUserIndicator(AlphaTrend_IQ, Symbol1, SymbolPeriod1, OHLCType.Close, 5);

 

            SendOrderSequential(true, Side.All);
            WorkWithPermanentSignal(true);

            //Alttaki fonksiyon açıldıktan sonra parametre olarak verilen saniyede bir OnTimer fonksiyonu tetiklenir.
            // SetTimerInterval(3600);

            //Alttaki fonksiyon ile tanımlanan sembol ile ilgili haber geldiğinde OnNewsReceived fonksiyonu tetiklenir.
            //AddNewsSymbol(Symbol);

            //Alttaki fonksiyon ile tanımlanan anahtar kelime ile ilgili haber geldiğinde OnNewsReceived fonksiyonu tetiklenir.
            //AddNewsKeyword("KAP");
        }

        /// <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>
        /// SetTimerInterval fonksiyonu ile belirtilen sürede bir bu fonksiyon tetiklenir.
        /// </summary>
        public override void OnTimer()
        {

        }

        /// <summary>
        /// AddNewsSymbol ve AddNewsKeyword ile haberlere kayit olunmuşsa bu fonksiyon tetiklenir.
        /// </summary>
        /// <param name="newsId">Gelen haberin id'si</param>
        /// <param name="relatedSymbols">Gelen haberin ilişkili sembolleri</param>
        public override void OnNewsReceived(int newsId, List<string> relatedSymbols)
        {

        }

        /// <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(BarDataEventArgs barData)
        {
            if (CrossAbove(AlphaTrend_IQ, AlphaTrend_IQ, 1, 0))
            {
                SendMarketOrder(Symbol1, OrderQuantity1, OrderSide.Buy, includeAfterSession:false);
            }
            if (CrossBelow(AlphaTrend_IQ, AlphaTrend_IQ, 1, 0))
            {
                SendMarketOrder(Symbol1, OrderQuantity2, OrderSide.Sell, includeAfterSession:false);
            }

        }

        /// <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)
        {
        }

        /// <summary>
        /// Strateji durdurulduğunda bu fonksiyon tetiklenir.
        /// </summary>
        public override void OnStopped()
        {
        }
    }
}
1 0
Merhabalar,

Piyasa emirler her zaman tavan fiyatı üzerinden hesaplanır. KFEIN hissesinin tavan fiyatı 26.18'dir.

Bu sebeple 300 lot alış yazarken 26.18*300=7854 TL üzerinden hesaplıyor. Sizin de hesabınızda 7732 TL olduğu için bakiye yetersiz hatası veriyor.

Bilgilerinize.
0 0
Teşekkür ederim. İyi çalışmalar...
7,574 soru
7,580 cevap
4,427 yorum
10,088 kullanıcı