11.01.2022
2
3
126
100

Bu strateji tavanda olan sembol için koşul sağlandığında satış emri göndermektedir.


Koşul 1-> Derinlik penceresinde alış 1. kademede bekleyen lotların toplamı belirlenen miktarın aşağısında olduğunda satış emri gönderilir.


veya


Koşul 2-> Tavanda oldu süre içerisinde 1. kademede bekleyen en yüksek değerin belirlenen oranda gerilemesi durumda satış emri gönderilir.



SabitMIYuzdeMI seçimi aktif ise

Alışta bekleyen miktar belirlediğiniz değerin (SabitMiktar) altına düşerse piyasadan sat emri gönderilir.


SabitMIYuzdeMI seçimi pasif ise

Bekleyen emir miktarının sürekli en yüksek değeri ölçülür.

En yüksek değerin belli bir yüzde(Yuzde) altına düşmesi durumunda piyasadan sat emri gönderilir.

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.Trader.Core.TraderModels;
using Matriks.Lean.Algotrader.AlgoBase;
using Matriks.Lean.Algotrader.Models;
using Matriks.Lean.Algotrader.Trading;
/*
Bu strateji tavanda olan sembol için koşul sağlandığında satış emri göndermektedir.

Koşul 1-> Derinlik penceresinde alış 1. kademede bekleyen lotların toplamı belirlenen miktarın aşağısında olduğunda satış emri gönderilir.

veya

Koşul 2-> Tavanda oldu süre içerisinde 1. kademede bekleyen en yüksek değerin belirlenen oranda gerilemesi durumda satış emri gönderilir.


SabitMIYuzdeMI seçimi aktif ise
Alışta bekleyen miktar belirlediğiniz değerin (SabitMiktar) altına düşerse piyasadan sat emri gönderilir.

SabitMIYuzdeMI seçimi pasif ise
Bekleyen emir miktarının sürekli en yüksek değeri ölçülür.
En yüksek değerin belli bir yüzde(Yuzde) altına düşmesi durumunda piyasadan sat emri gönderilir.

*/

namespace Matriks.Lean.Algotrader
{
	public class TavandaDerinlikKontrolu : 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("GARAN")]
		public string Symbol;

		[Parameter(1)]
		public decimal SatilacakAdet;

		[Parameter(true)]
		public bool SabitMIYuzdeMI;

		[Parameter(100000)]
		public decimal SabitMiktar;

		[Parameter(40)]
		public decimal Yuzde;

		[Output]
		public decimal EnYuksek = decimal.MinValue;

		[Output]
		public decimal BekleyenMiktar;

		[Output]
		public decimal Tavan;

		[Output]
		public decimal Close;

		[Output]
		public bool StratejiAktifMI = true;

		public override void OnInit()
		{
			AddSymbol(Symbol, SymbolPeriod.Min120);
			AddSymbolMarketData(Symbol);
			AddSymbolMarketDepth(Symbol);
			WorkWithPermanentSignal(true);
			SendOrderSequential(true, Side.Sell);
			SetTimerInterval(1);
		}

		public override void OnTimer()
		{
			if (StratejiAktifMI)
			{
				var barDataModel = GetBarData(Symbol, SymbolPeriod.Min120);

				var depths = GetMarketDepth(Symbol);

				if (depths? .AskRows == null || depths.AskRows.Count < 1 ||
					depths? .BidRows == null || depths.BidRows.Count < 1)
				{
					Debug("Derinlik verisi bekleniyor.");
					return ;
				}

				BekleyenMiktar = depths.BidRows[0].Size;

				Close = Ref(barDataModel, OHLCType.Close, 0);

				if (BekleyenMiktar>EnYuksek)
				{
					EnYuksek = BekleyenMiktar;
				}

				if (Close == Tavan)
				{
					if (SabitMIYuzdeMI == true && BekleyenMiktar<SabitMiktar && BekleyenMiktar != 0)
					{
						Debug("Bid : " + BekleyenMiktar);
						Debug("Satış Emri Gönderildi");
						SendMarketOrder(Symbol, SatilacakAdet, OrderSide.Sell);
						StratejiAktifMI = false;
					}else if (SabitMIYuzdeMI == false && BekleyenMiktar<EnYuksek * (100 - Yuzde) / 100 && BekleyenMiktar != 0)
					{
						Debug("Bid : " + BekleyenMiktar);
						Debug("Satış Emri Gönderildi");
						SendMarketOrder(Symbol, SatilacakAdet, OrderSide.Sell);
						StratejiAktifMI = false;
					}
				}else
				{
					EnYuksek = decimal.MinValue;
				}
			}
		}

		public override void OnInitComplated()
		{
			Tavan = GetMarketData(Symbol, SymbolUpdateField.LimitUp);
		}
	}
}

2 Yorum

slm bu formulün benzeri tavan olmus hisse icin belli sartlarda yollanbilrimi.Emir belli bir miktarın altına düştüğünde otomatik olarak iptal edilebilir mi? ikincisi kağıdın tavan olduktan ertesi gün satışı için robota bağlanabilr mi? teşekkürler.

  • 30.08.2022 19:06
  • 2

AKKA size nasıl ulaşabilrim

  • 30.08.2022 19:07
  • 1