0 beğenilme 0 beğenilmeme
228 kez görüntülendi
Hazır stradejiler de.  Basit tmahullma hazır stratejisinde  Alış kısmı parametreleri aynen kalacak,

satış emir bölümü RSI 9   70 i  aşağı kırdığında sat.    82 yi yukarı kırdığında sat olacak şekilde yardımcı olacak arkadaşlara çok teşekkür ederim..
Algoritmik Trading kategorisinde (47 puan) tarafından | 228 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhabalar,

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

***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.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=======================================//
// Bu statejide TMA VE HullMA indikatörleri birlikte kullanılmıştır.						//
// Eğer grafikte fiyat çubukları HullMA bandını yukarı kırarsa ve o anki hullMA değeri,		//
// TMA değerinin altındaysa al emri gönderilecek.											//
// Eğer grafikte fiyat çubukları HullMA bandını aşağı kırarsa ve o anki hullMA değeri,		//
// TMA değerinin üstündeyse sat emri gönderilecek.											//
// 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
{//strateji ismini burada deklare ediyoruz. Dosyada ki isimle stratejide yazılan isim tamamen aynı olmalıdır. (küçük büyük harf duyarlı)
	public class projektll : MatriksAlgo
	{
		//canlı, backtest ve backtest optimization kısımlarında değiştirilebilir olması istenilen parametreler bu bölümde yazılır
		// Strateji çalıştırılırken kullanacağımız parametreler. Eğer sembolle ilgili bir parametre ise,

		[SymbolParameter("XU100")]
		public string Symbol;//Sembol ismi

		[Parameter(SymbolPeriod.Day)]
		public SymbolPeriod SymbolPeriod;//Stratejiyi çalıştırmak istediğimiz bar periyodu

		[Parameter(22)]
		public int HullMAPeriod;//Moving average periyodu için kullanacağımız parametre

		[Parameter(12)]
		public int TmaPeriod;//RSI periyodu için kullanacağımız parametre

		[Parameter(9)]
			public int RsiPeriod1;

		[Parameter(100)]
		public decimal BuyOrderQuantity; //alım miktarı için kullanacağımız parametre

		[Parameter(100)]
		public decimal SellOrderQuantity; //satım miktarı için kullanacağımız parametre

		TMA tma;//TMA indikatörü türünde tma isminde bir obje tanımlıyoruz

		HullMA hullMA;//HullMA indikatörü türünde hullMA isminde bir obje tanımlıyoruz
		RSI rsi;

		public override void OnInit()
		{

			//tanımladığımız objelere indikatör tanımlarını ve gerekli değerleri atıyoruz
			hullMA = HullMAIndicator(Symbol, SymbolPeriod, OHLCType.Close, HullMAPeriod);
			tma = TMAIndicator(Symbol, SymbolPeriod, OHLCType.Close, TmaPeriod);
			rsi = RSIIndicator(Symbol, SymbolPeriod, OHLCType.Close, RsiPeriod1);

			//Sembol ve periyoduna kayıt
			AddSymbol(Symbol, SymbolPeriod);

			// Algoritmanın kalıcı veya geçici sinyal ile çalışıp çalışmayacağını belirliyoruz.
			//true değer, algoritmanın sadece yeni bar açılışlarında çalışmasını sağlar, bu 
			//fonksiyonu çağırmazsak veya false olarak belirlersek her işlem olduğunda algoritma tetiklenecektir.
			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);
		}

		//Kayıt olunan sembol veya indikatörler güncellendikçe bu fonksiyon tetiklenir. 
		//Dolayısıyla asıl al/sat stratejisini yazacağımız bölümdür
		public override void OnDataUpdate(BarDataEventArgs barData)
		{
			var barDataModel = GetBarData();
			//Bu koşul alım emri içindir. Eğer grafikte fiyat çubukları hullMA bandını yukarı kırarsa ve 
			//o anki hullMA değeri, tma değerinin altındaysa al emri gönderilecek.
			if (CrossAbove(barDataModel, hullMA, OHLCType.Close, 0) && hullMA.CurrentValue<tma.CurrentValue)
			{
				//Parametrelerde belirlenen sembolden, belirlenen miktarda, piyasa fiyatından alış emri gönderir
				SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy);
				//bar kapanışını debug penceresine basar
				Debug("Close = " + barData.BarData.Close);
				//HullMA değerini debug penceresine basar
				Debug("HullMA = " + hullMA.CurrentValue);
				//TMA değerini debug penceresine basar
				Debug("TMA = " + tma.CurrentValue);
				//"" içerisinde bulunan ifadeyi debug penceresine basar
				Debug("Alış Emri Gönderildi");

			}
			//Bu koşul satım emri içindir. Eğer grafikte fiyat çubukları hullMA bandını aşağı kırarsa ve 
			//o anki hullMA değeri, tma değerinin üstündeyse sat emri gönderilecek.
			if (CrossBelow(rsi, 70m, 0) || CrossAbove(rsi, 82m, 0))
			{
				//Parametrelerde belirlenen sembolden, belirlenen miktarda, piyasa fiyatından satış emri gönderir
				SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell);
				//bar kapanışını debug penceresine basar
				Debug("Close = " + barData.BarData.Close);
				//HullMA değerini debug penceresine basar
				Debug("HullMA = " + hullMA.CurrentValue);
				//TMA değerini debug penceresine basar
				Debug("TMA = " + tma.CurrentValue);
				//"" içerisinde bulunan ifadeyi debug penceresine basar
				Debug("Satış Emri Gönderildi");

			}
		}

		/// <summary>
		/// Strateji durdurulduğunda bu fonksiyon tetiklenir.
		/// </summary>
		public override void OnStopped()
		{
		}
	}
}

İyi çalışmalar.

(11,059 puan) tarafından
TMAHullma ve RSI
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.



7,749 soru
7,726 cevap
4,481 yorum
11,843 kullanıcı