0 beğenilme 0 beğenilmeme
799 kez görüntülendi
merhaba

iq konusunda yardımınıza ihtiyacım var

mtf çalıştırırken prime da problem yaşadığım için iq ya geçiş yaptım

kullanmak istediğim stratejileri sizden rica ediyorum

most kullanıyorum standart ayarlarında

gunluk periyotta mtf formul yazıp 60 dk yada farklı bir zaman  dilimi grafikte kullanıyorum

saatlik mtf formul ile 5 yada 10 dakikalık grafikte kullanıyorum,

5 dakikalık mtf formul ile 1 dk da kullanıyorum,

özetle most un gunluk,60 dk lık ve 5 dk lık  iq için  ayrı ayrı formüllerini rica ediyorum

yine aynı şekilde gunluk,60 dk lık ve 5 dk lık ott içinde  formüllerini talep ediyorum

yoplam 6 formul olmuş oluyor

teşekkürler
Algoritmik Trading kategorisinde (376 puan) tarafından | 799 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhabalar,

Aşağıdaki şablonda kullanılan periyotları değiştirerek işlem yapabilirsiniz.

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 periyot kullanımına örnek olması için hazırlanmış bir stratejidir.
Kalıcı sinyalle çalışan strateji 1DK'lık bar açılışlarında 5DK periyodunda o anda hesaplanan MOST indikatörünün kırılım durumunu kontrol eder. 
Eğer EXMOV, MOST'u yukarı kırdıysa al; aşağı kırdıysa sat sinyali oluşturur.

!! NOT !! 
Strateji her 1DK da 5DK periyodundaki indikatörün kırılımına baktığı için canlıda strateji 5 kez üst periyodu kontrol edip 5DK periyodunda kalıcıya geçmemiş sinyaller içinde emir göndermiş olacak.
Fakat backtestte ve optimizasyonda kapanmış barlar üzerinde strateji çalıştırıldığı için 1DK periyodunda 5 kez 5DK periyodundaki indikatörün kapanışta oluşturulan değerini kontrol edecek.
=> Bu nedenle çoklu periyot kullanılan stratejilerin canlıda oluşan sinyallerini, backtest ve optimizasyondaki sinyallerle kıyaslamak doğru olmayacaktır.
!! NOT !!
*/
namespace Matriks.Lean.Algotrader
{
	public class SablonCokluPeriyot : 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.Min)]
			public SymbolPeriod GraphPeriod;

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

		[Parameter(3)]
			public int MostPeriod;

		[Parameter(2)]
			public decimal MostPercentage;

		[Parameter(MovMethod.E)]
			public MovMethod MostMovMethod;

		[Parameter(1)]
			public decimal BuyOrderQuantity;

		[Parameter(1)]
			public decimal SellOrderQuantity;

		MOST most;

		public override void OnInit()
		{
			AddSymbol(Symbol, GraphPeriod);
			AddSymbol(Symbol, IndicatorPeriod);

			most = MOSTIndicator(Symbol, IndicatorPeriod, OHLCType.Close, MostPeriod, MostPercentage, MostMovMethod);

			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.PeriodInfo.Equals(GraphPeriod.ToPeriodInfo()))
			{
				if (CrossAbove(most, most, 1, 0))
				{
					SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy, includeAfterSession:false);
				}
				if (CrossBelow(most, most, 1, 0))
				{
					SendMarketOrder(Symbol, SellOrderQuantity, 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()
		{
		}
	}
}

İyi çalışmalar.

(11,059 puan) tarafından
Hoş geldiniz, Matriks Destek Platformu sizlere sorularınızın hızlıca cevaplanması için bir ortam sağlar. 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.



8,636 soru
8,590 cevap
4,821 yorum
19,790 kullanıcı