MatriksIQ Destek
Matriks Destek
Matriks Web Destek
Matriks Mobile Destek
0 beğenilme 0 beğenilmeme
22 kez görüntülendi
Merhaba,

Stratejime StochasticSlow %K (5,5) > StochasticSlow %D (3)  koşulunu eklemek istiyorum. Yardımcı olur musunuz lütfen, teşekkürler
önce Algoritmik Trading kategorisinde (20 puan) tarafından | 22 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

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);
	}
}

 

--------------------------------------------------------------------------------------------------
Önemli Linkler:
MatriksIQ Yardım Dokumanı
MatriksIQ Algo Teknik Dokuman
Kullanici Videolari (Matriks sorumlulugu disindadir)

önce (3,879 puan) tarafından
0 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);

                        }

 

            }

 

}
528 soru
593 cevap
753 yorum
340 kullanıcı