Matriks Destek ve Yardım Platformu

Matriks Ürünleri ile ilgili tüm sorularınız için bizlere buradan ulaşabilirsiniz. Daha önce sorulan soruları ve verilen cevapları ilgili sekmelerden ve arama üzerinden inceleyebilirsiniz. Sağ taraftaki kategoriler üzerinden İlgilendiğiniz özelliklerle ilgili soruları filtreleyebilirsiniz. Soru ve cevapları sosyal medyada paylaşabilirsiniz. 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.

0

Kar %10 olduğunda işlemin belli bir yüzdesi kapatmak istiyorum

Soruldu
Görüntülenme
644 görüntülenme
Durum
Cevaplandı
Merhaba,

Borsa İstanbul’da işlem yapmaktayım. Açığa satış kullanmıyorum. Stratejim belli koşullarda alım yapmakta ve karı almak için de sat koşulları oluştuğunda işlem kapanmakta. Bu koşulları değiştirmeden kar oranı %10 olduğunda işlemin %25’inin ve devamında kar oranı %20’ye çıktığında kalan lotlarımın yine %25’inin satılmasını yani kapatılmasını istiyorum. Bunu nasıl yapabilirim.

Teşekkürler.
Paylaş

1 Cevap

0

Merhabalar,

Dilerseniz aşağıdaki yapıyı inceleyebilirsiniz.

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 Test2 : MatriksAlgo
            {
                        [SymbolParameter("GARAN")]
                                   public string Symbol;

                        [Parameter(SymbolPeriod.Min5)]
                                   public SymbolPeriod SymbolPeriod;

                        [Parameter(10)]
                                   public decimal BuyOrderQuantity;
                        
                        [Output]
                        public bool AktifMI = false;

                        OTT ott;

                        public override void OnInit()
                        {
                                   ott = OTTIndicator(Symbol, SymbolPeriod, OHLCType.Close, 2, 1.4m, MovMethod.VAR, true);

                                   SendOrderSequential(true, Side.Buy);
                                   WorkWithPermanentSignal(true);
                                   SetTimerInterval(1);
                        }                      

                        public override void OnTimer()
                        {
                                   if (AktifMI)
                                   {
                                               var barDataModel = GetBarData();
                                               var close = barDataModel.Close[barDataModel.Close.Count];
                                               
                                               var tut=kademeliKarAlListesi.Where(x=> x.Key>=close);
                                               
                                               if(tut.Count()>0){
                                                           foreach(var deger in tut){
                                                                       LastOrderSide.Obj=Side.Buy;
                                                                       SendMarketOrder(Symbol,deger.Value,OrderSide.Sell);
                                                                       kalanLot-=deger.Value;
                                                                       kademeliKarAlListesi.Remove(deger.Key);
                                                                       LastOrderSide.Obj=Side.Buy;
                                                           }
                                               }
                                   }
                        }

                        public override void OnDataUpdate(BarDataEventArgs barData)
                        {
                                   if (CrossAbove(ott, ott, 1, 0))
                                   {
                                               SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy);
                                               Debug("Alış gönderildi.");
                                               AktifMI=true;
                                   }

                                   if (CrossBelow(ott, ott, 1, 0) && kalanLot>0)
                                   {
                                               SendMarketOrder(Symbol, kalanLot, OrderSide.Sell);
                                               Debug("Satış gönderildi.");
                                               AktifMI=false;
                                               kalanLot=decimal.MinValue;
                                   }
                        }

                        decimal kalanLot = decimal.MinValue;

                        Dictionary<decimal, decimal> kademeliKarAlListesi = new Dictionary<decimal, decimal>();

                        public override void OnOrderUpdate(IOrder order)
                        {
                                   if (order.OrdStatus.Obj == OrdStatus.Filled && order.Side.Obj == Side.Buy)
                                   {
                                               kademeliKarAlListesi[order.Price * 1.10m] = Math.Ceiling(order.OrderQty * 0.25m);
                                               kademeliKarAlListesi[order.Price * 1.30m] = Math.Ceiling(order.OrderQty * 0.25m);
                                               kalanLot = order.OrderQty;                                      
                                   }
                        }
            }
}

İyi çalışmalar.

BağlantıBayraklaasiyangMatriks Destek11.113

Cevabınız

Cevap yazmak için giriş yapın.Giriş yapKayıt ol