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

StochasticSlow'u stratejiye eklemek

Soruldu
Görüntülenme
912 görüntülenme
Durum
Cevaplandı
Merhaba,

Stratejime StochasticSlow %K (5,5) > StochasticSlow %D (3)  koşulunu eklemek istiyorum. Yardımcı olur musunuz lütfen, teşekkürler
Paylaş

2 Cevap

0

Merhaba yeni bir strateij olusturduktan sonra soldaki Arac Kutusundan StochasticSlow'u bularak cift tiklayiniz.

Daha sonra OnDataUpdate fonksiyonunu asagidaki ile degistiriniz.

public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues)
{
	 //StochasticSlow %K (5,5) > StochasticSlow %D (3) 
	var slowK = Math.Round(stochasticSlow.StochasticSlowK.CurrentValue,2);
	var slowD = Math.Round(stochasticSlow.StochasticSlowD.CurrentValue,2);
	if(stochasticSlow.StochasticSlowK.CurrentValue > stochasticSlow.StochasticSlowD.CurrentValue)
	{
		Debug("Stochastic SlowK @" + slowK + " > " + "Stochastic SlowD @" + slowD);
	}
	if(stochasticSlow.StochasticSlowK.CurrentValue < stochasticSlow.StochasticSlowD.CurrentValue)
	{
		Debug("Stochastic SlowK @" + slowK + " < " + "Stochastic SlowD @" + slowD);
	}
}

 

BağlantıBayraklaMatt RicksMatriks Destek8.033

Yorumlar (1)

  • ▲0

    Teşekkürler, Galiba bir indikatör zaten olduğu için beceremedim. Hata veriyor. Aşağıda benim stratejim var, buna eklemeniz mümkün mü rica etsem. Çok teşekkürler

     

    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;
     
    // posizyon takibi - başlangıç
    using System.Text;
    using System.IO;
    // posizyon takibi - biriş
     
     
    namespace Matriks.Lean.Algotrader
    {
     
                public class DI15 : 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.Min60)]
     
                                                                           public SymbolPeriod SymbolPeriod;
     
     
     
                            [Parameter(19)]
     
                                                                           public int DiPeriod;
     
     
     
                            [Parameter(5)]
     
                                                                           public decimal Quantity;
     
     
     
     
     
                            DemandIndex demandIndex, demandIndexGun;
     
                            // posizyon takibi - başlangıç
                            [Parameter(0)]
                            public int Position;
     
                            [Parameter(true)]
                            public bool DosyadanOku;
     
                            [Parameter("C:\\IQData")]
                            public string FolderPath;
     
                            [Parameter("DI15")]
                            public string DosyaAdi;
                            // posizyon takibi - bitiş
     
                            /// <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()
                            {
     
                                       demandIndex = DemandIndexIndicator(Symbol, SymbolPeriod, DiPeriod);
     
                                       demandIndexGun = DemandIndexIndicator(Symbol, SymbolPeriod.Day, DiPeriod);
     
     
     
                                       AddSymbol(Symbol, SymbolPeriod);
     
     
     
                                       // posizyon takibi - başlangıç
                                       ///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(false);
     
                                       if (DosyadanOku == true)
                                       {
                                                   DegiskenleriDosyadanOku();
                                       }
                                       // posizyon takibi - bitiş
     
     
                                       WorkWithPermanentSignal(false);
     
     
     
                            }
     
     
                            /// <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(demandIndex, 15) && demandIndex.CurrentValue>15 && demandIndex.CurrentValue<30 && demandIndexGun.CurrentValue>20 && demandIndexGun.CurrentValue<30 && Position != 2)
                                       {
     
                                                   SendMarketOrder(Symbol, Quantity, OrderSide.Buy);
     
                                                   Debug("Alış emri gönderildi.");
     
                                                   Position = 2;
                                                   DegiskenleriDosyayaYaz();
                                       }
     
     
     
                                       if (CrossBelow(demandIndex, 0) && Position != 1)
                                       {
     
                                                   SendMarketOrder(Symbol, Quantity, OrderSide.Sell);
     
                                                   Debug("Satış emri gönderildi.");
                                                  
                                                   Position = 1;
                                                   DegiskenleriDosyayaYaz();
     
                                       }
     
     
     
                                       // %8 kar al
     
                                       TakeProfit(Symbol, SyntheticOrderPriceType.Percent, 8);
     
                            }
                           
                            // Veri yaz
                            public void DegiskenleriDosyayaYaz()
                            {
                                       if (!System.IO.Directory.Exists(FolderPath))
                                                   Directory.CreateDirectory(FolderPath);
     
                                       string fileName = Path.Combine(FolderPath, DosyaAdi + ".txt");
     
                                       if (!File.Exists(fileName))
                                       {
                                                   File.AppendAllText(fileName, "0");
                                       }
     
                                       File.WriteAllText(fileName, Position.ToString());
                            }
     
                            // Veri Oku
                            public void DegiskenleriDosyadanOku()
                            {
                                       if (!System.IO.Directory.Exists(FolderPath))
                                                   Directory.CreateDirectory(FolderPath);
     
                                       string fileName = Path.Combine(FolderPath, DosyaAdi + ".txt");
     
                                       if (!File.Exists(fileName))
                                       {
                                                   File.AppendAllText(fileName, "0");
                                       }
     
                                       // Open the file to read from.
                                       string readText = File.ReadAllText(fileName);
     
                                       Position = Convert.ToInt32(readText);
                            }
     
                }
     
    }

     

0
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;
// posizyon takibi - başlangıç
using System.Text;
using System.IO;
// posizyon takibi - biriş
namespace Matriks.Lean.Algotrader
{
	public class DI15 : 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.Min60)]
		public SymbolPeriod SymbolPeriod;
		[Parameter(19)]
		public int DiPeriod;
		[Parameter(5)]
		public decimal Quantity;
		DemandIndex demandIndex, demandIndexGun;
		// posizyon takibi - başlangıç
		[Parameter(0)]
		public int Position;
		[Parameter(true)]
		public bool DosyadanOku;
		[Parameter("C:\\IQData")]
		public string FolderPath;
		[Parameter("DI15")]
		public string DosyaAdi;

		StochasticSlow stochasticSlow;
		// posizyon takibi - bitiş
		/// <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()
		{
			stochasticSlow = StochasticSlowIndicator(Symbol, SymbolPeriod, OHLCType.Close, 5, 3, 5, MovMethod.Exponential);

			demandIndex = DemandIndexIndicator(Symbol, SymbolPeriod, DiPeriod);
			demandIndexGun = DemandIndexIndicator(Symbol, SymbolPeriod.Day, DiPeriod);
			AddSymbol(Symbol, SymbolPeriod);
			// posizyon takibi - başlangıç
			///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(false);
			if (DosyadanOku == true)
			{
				DegiskenleriDosyadanOku();
			}
			// posizyon takibi - bitiş
			WorkWithPermanentSignal(false);
		}
		/// <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)
		{
			//StochasticSlow %K (5,5) > StochasticSlow %D (3) 
			var slowK = Math.Round(stochasticSlow.StochasticSlowK.CurrentValue,2);
			var slowD = Math.Round(stochasticSlow.StochasticSlowD.CurrentValue,2);
			Debug("Stochastic SlowK @" + slowK + " ? " + "Stochastic SlowD @" + slowD);
			if (slowK > slowD && CrossAbove(demandIndex, 15) && demandIndex.CurrentValue>15 && demandIndex.CurrentValue<30 && demandIndexGun.CurrentValue>20 && demandIndexGun.CurrentValue<30 && Position != 2)
			{
				SendMarketOrder(Symbol, Quantity, OrderSide.Buy);
				Debug("Alış emri gönderildi.");
				Position = 2;
				DegiskenleriDosyayaYaz();
			}
			if (slowK < slowD && CrossBelow(demandIndex, 0) && Position != 1)
			{
				SendMarketOrder(Symbol, Quantity, OrderSide.Sell);
				Debug("Satış emri gönderildi.");
				Position = 1;
				DegiskenleriDosyayaYaz();
			}
			// %8 kar al
			TakeProfit(Symbol, SyntheticOrderPriceType.Percent, 8);
		}
		// Veri yaz
		public void DegiskenleriDosyayaYaz()
		{
			if (!System.IO.Directory.Exists(FolderPath))
				Directory.CreateDirectory(FolderPath);
			string fileName = Path.Combine(FolderPath, DosyaAdi + ".txt");
			if (!File.Exists(fileName))
			{
				File.AppendAllText(fileName, "0");
			}
			File.WriteAllText(fileName, Position.ToString());
		}
		// Veri Oku
		public void DegiskenleriDosyadanOku()
		{
			if (!System.IO.Directory.Exists(FolderPath))
				Directory.CreateDirectory(FolderPath);
			string fileName = Path.Combine(FolderPath, DosyaAdi + ".txt");
			if (!File.Exists(fileName))
			{
				File.AppendAllText(fileName, "0");
			}
			// Open the file to read from.
			string readText = File.ReadAllText(fileName);
			Position = Convert.ToInt32(readText);
		}
	}
}

 

BağlantıBayraklaMatt RicksMatriks Destek8.033

Yorumlar (1)

Cevabınız

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