0 beğenilme 0 beğenilmeme
218 kez görüntülendi
Merhaba, Viopta işlem gören hisselerde örneğin THYAO için hisse grafiğinde yaptığım robot kurgusunu emir verilen sembol

kısmında F_THYAO0322 seçersem kaldıraçlı çift yönlü işlem açarmı, yani ben bu hissenin viop grafiğinde yapılan robot ile algoritma kurmayıp

normal hisse grafiğine göre hareket etmek istiyorum, yoksa dediğiniz gibi açığa sat açık pozisyonu kapat kurgusu mu yapılması lazım,

Hisse senedinde kaldıraçlı çalışan bir gösterge örneğin TOTT kurgusu paylaşabilirmisiniz.
Algoritmik Trading kategorisinde (83 puan) tarafından | 218 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhabalar,

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

***STRATEJİLERİ TEST/DENEME ORTAMINDA SINAMADAN VE SİZİN İSTEDİĞİNİZ ŞEKİLDE ÇALIŞTIĞINA EMİN OLMADAN GERÇEK ORTAMDA HİÇBİR ZAMAN ÇALIŞTIRMAYINIZ ***

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;
/*
Çoklu SEMBOL kullanımına örnek olması için hazırlanmış bir stratejidir.
Kalıcı sinyalle çalışan strateji XU100 endeksinde MOST indikatörünün kırılımlarına göre alış, satış sinyalleri oluşturur.
Eğer EXMOV, MOST'u yukarı kırdıysa al; aşağı kırdıysa sat emri verir.
Oluşan sinyallerde parametrelerde belirtilen adetler kadar GARAN ve ASELS hisselerine emirler gönderilir.
*/
namespace Matriks.Lean.Algotrader
{
	public class tottdenmee : 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("XU100")]
			public string Symbol;

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

		[SymbolParameter("GARAN")]
			public string OrderSymbol1;

		[Parameter(5)]
			public decimal BuyOrderQuantity1;

		[Parameter(5)]
			public decimal SellOrderQuantity1;

		[Parameter(40)]
		public int TOTTPeriod;

		[Parameter(1)]
		public decimal TOTTOpt;

		[Parameter(0.001d)]
		public decimal TwinOttCoef;

		[Parameter(MovMethod.Variable)]
		public MovMethod TottMovMethod;

		TOTT tott;

		public override void OnInit()
		{
			AddSymbol(Symbol, SymbolPeriod);
			AddSymbol(OrderSymbol1, SymbolPeriod);
		

			tott = TOTTIndicator(Symbol, SymbolPeriod, OHLCType.Close, TOTTPeriod, TOTTOpt, TwinOttCoef, TottMovMethod);


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

		/// <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 (barData.SymbolId.Equals(GetSymbolId(Symbol)))
			{
				if (CrossAbove(tott.Mov, tott.OttUp))
				{
					SendMarketOrder(OrderSymbol1, BuyOrderQuantity1, OrderSide.Buy, includeAfterSession:false);
					SendMarketCloseShortOrder(OrderSymbol1, BuyOrderQuantity1);
				}
				
			if (CrossBelow(tott.Mov, tott.OttDown))
				{
					SendMarketOrder(OrderSymbol1, SellOrderQuantity1, OrderSide.Sell, includeAfterSession:false);
					SendShortSaleMarketOrder(OrderSymbol1, SellOrderQuantity1);
				}
			}
		}

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

İyi çalışmalar.

(11,069 puan) tarafından
AYRI AYRI 2 SEFER ALIM EMRİ VERİYOR
7,645 soru
7,642 cevap
4,448 yorum
11,093 kullanıcı