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

OTT_DOUBLE_VIOP stratejisine başlangıç ve bitiş saati ekleme

Soruldu
Görüntülenme
993 görüntülenme
Durum
Cevaplandı

merhaba, 

aşağıdaki stratejiye başlangıç ve bitiş saati eklemek istiyorum, yani saat 09:45 de başlasın, 18:00 de dursun istiyorum.

kod bilgisi hakkında yardımcı olabilirmisiniz

 

using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.Data.Symbol;
using System.Windows.Media;
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=======================================//
// MOST indikatöründe, ExMOV bandının MOST bandını yukarı doğru kesmesi al sinyali,  		//
// aşağı doğru kesmesi ise sat sinyali olarak kabul edilir.									//
// Emirler piyasa fiyatından gönderilecektir.                                            	//
// Emir gönderimi ile birlikte strateji raporunda Debug sekmesine "Alış emri gönderildi."	//
// ve "Satış emri gönderildi." ifadesi yazdırılmaktadır.                                  	//

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

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

		[Parameter(1)]
		public decimal BuyOrderQuantity;

		[Parameter(1)]
		public decimal SellOrderQuantity;

		[Parameter(14)]
		public int PeriodH;

		[Parameter(3.8)]
		public decimal PercentageH;

		[Parameter(45)]
		public int PeriodL;

		[Parameter(1.2)]
		public decimal PercentageL;


		OTT ottH;

		OTT ottL;

		int FirstRun = 0;
		int realposition = 0;

		[Output]
		public int IlkCalisma;

		[Output]
		public int Pozisyon;


		public override void OnInit()
		{
			ottH = OTTIndicator(Symbol, SymbolPeriod, OHLCType.Close, PeriodH, PercentageL, MovMethod.VAR, true);

			ottL = OTTIndicator(Symbol, SymbolPeriod, OHLCType.Close, PeriodL, PercentageL, MovMethod.VAR, true);


			AddSymbol(Symbol, SymbolPeriod);


			// Algoritmanın kalıcı veya geçici sinyal ile çalışıp çalışmayacağını belirleyen fonksiyondur.
			// true geçerseniz algoritma sadece yeni bar açılışlarında çalışır, bu fonksiyonu çağırmazsanız veya false geçerseniz her işlem olduğunda algoritma tetiklenir.
			WorkWithPermanentSignal(true);

			//Eger backtestte emri bir al bir sat seklinde gonderilmesi isteniyor bu true set edilir. 
			//Alttaki satırı silerek veya false geçerek emirlerin sirayla gönderilmesini engelleyebilirsiniz. 
			SendOrderSequential(true, true);
		}


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

			if (CrossAbove(ottH.ottSupportLine, ottH))
			{
				if (FirstRun == 0)
				{
					SendMarketOrder(Symbol, BuyOrderQuantity, (OrderSide.Buy));
					Debug("Alış emri verildi.");
					Debug("OTT_SupportLine:" + ottH.ottSupportLine.CurrentValue);
					Debug("OTTLine:" + ottH.ottLine.CurrentValue);
					FirstRun = 1;
				}
				else
				{
					SendMarketOrder(Symbol, BuyOrderQuantity * 2, (OrderSide.Buy));
					Debug("Alış emri verildi.");
					Debug("OTT_SupportLine:" + ottH.ottSupportLine.CurrentValue);
					Debug("OTTLine:" + ottH.ottLine.CurrentValue);
				}

			}

			if (CrossBelow(ottL.ottSupportLine, ottL))
			{
				if (FirstRun == 0)
				{
					SendMarketOrder(Symbol, SellOrderQuantity, (OrderSide.Sell));
					Debug("Satış emri verildi.");
					Debug("OTT_SupportLine:" + ottL.ottSupportLine.CurrentValue);
					Debug("OTTLine:" + ottL.ottLine.CurrentValue);
					FirstRun = 1;
				}
				else
				{
					SendMarketOrder(Symbol, SellOrderQuantity * 2, (OrderSide.Sell));
					Debug("Satış emri verildi.");
					Debug("OTT_SupportLine:" + ottL.ottSupportLine.CurrentValue);
					Debug("OTTLine:" + ottL.ottLine.CurrentValue);
				}
			}
		}

		public override void OnOrderUpdate(IOrder order)
		{
			//Gercek zamanli pozisyon takibi
			if (order.OrdStatus.Obj == OrdStatus.Filled && order.Side.Obj == Side.Buy)
			{
				var positionChange = order.OrderQty;
				realposition += (int) positionChange;
				Debug("[ONORDERUPDATE]: Pozisyon = " + realposition);
			}
			if (order.OrdStatus.Obj == OrdStatus.Filled && order.Side.Obj == Side.Sell)
			{
				var positionChange = order.OrderQty;
				realposition -= (int) positionChange;
				Debug("[ONORDERUPDATE]: Pozisyon = " + realposition);
			}
		}
	}
}

 

Paylaş

1 Cevap

3

Merhaba,

Aşağıdaki örnekte belirlenen zaman aralığında strateji aktif şekilde çalışır.

 

using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.Data.Symbol;
using Matriks.Engines;
using System.Windows.Media;
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;

/*
	Belirlenen zaman aralığında strateji aktif olacak
*/

namespace Matriks.Lean.Algotrader
{
	public class BelirlenenZamanAraliginda : 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(SymbolPeriod.Min15)]
		public SymbolPeriod SymbolPeriod;

		[Parameter(1)]
		public decimal Adet;

		MOST most;

		// Zamanlama
		TimeSpan baslangic;
		TimeSpan bitis;

		/// <summary>
		/// Strateji ilk çalıştırıldığında bu fonksiyon tetiklenir. Tüm sembole kayit işlemleri,
		/// indikator ekleme, haberlere kayıt olma işlemleri burada yapılır. 
		/// </summary>
		public override void OnInit()
		{
			most = MOSTIndicator(Symbol, SymbolPeriod, OHLCType.Close, 3, 2, MovMethod.Exponential);

			AddSymbol(Symbol, SymbolPeriod);

			SendOrderSequential(true);
			WorkWithPermanentSignal(true);

			// stratejini başlama ve bitis saati
			baslangic = new TimeSpan(09, 45, 0);
			bitis = new TimeSpan(18, 00, 0);
		}

		/// <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(BarDataCurrentValues barDataCurrentValues)
		{
			// Sistem saati çekiliyor
			TimeSpan sistemSaati = DateTime.Now.TimeOfDay;

			// Belirlenen zaman aralıpğında aşağıdaki kodlar aktif olacak
			if (sistemSaati >= baslangic && sistemSaati <= bitis)
			{
				if (CrossAbove(most.ExMOV, most))
				{
					SendMarketOrder(Symbol, Adet, (OrderSide.Buy));
					Debug("Alış emri verildi.");
					Debug("Most.ExMov:" + most.ExMOV.CurrentValue);
					Debug("Most:" + most.CurrentValue);
				}
				if (CrossBelow(most.ExMOV, most))
				{
					SendMarketOrder(Symbol, Adet, (OrderSide.Sell));
					Debug("Satış emri verildi.");
					Debug("Most.ExMov:" + most.ExMOV.CurrentValue);
					Debug("Most:" + most.CurrentValue);
				}
			}
		}

	}
}

 

Unblocked Games offering a wide range of experiences: action, puzzle, platform, racing, clicker mechanics, strategy, sports, even horror.
https://unblocked1games.github.io
BağlantıBayraklaKripexMatriks Destek16.499

Yorumlar (1)

Cevabınız

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