0 beğenilme 0 beğenilmeme
579 kez görüntülendi
public override void OnInit()

{

       for(int j =0;j<hisseler.Count;j++)

        {

                AddSymbol(hisseler[j], SymbolPeriod);

        }

    mov = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, 5, MovMethod.Exponential);

}

public override void OnTimer()

{

        for(int i =0;i<hisseler.Count;i++)

        {

            mov = MOVIndicator( hisseler[i], SymbolPeriod, OHLCType.Close, 5, MovMethod.Exponential);

            Debug(hisseler[i] + " " + mov.CurrentValue);

        }

}

 

hisseler string listesindeki her hisse için mov değerini yazmasını istiyorum ama değerler 0 olarak geliyor. bu kodda hata nerede? yardımcı olabilirseniz sevinirim
Algoritmik Trading kategorisinde (94 puan) tarafından | 579 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhaba,

Her sembol için indikatöre kayıt olamamışsınız.(sadece Symbol değişkenine kayıt olunmuş)

mov = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, 5, MovMethod.Exponential);

Aşağıdaki örneği inceleyebilirsiniz.

using System;
using System.IO;
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;

namespace Matriks.Lean.Algotrader
{
	public class CokluSembolMost : MatriksAlgo
	{
		[Parameter(SymbolPeriod.Min15)]
		public SymbolPeriod SymbolPeriod;

		[Parameter(3)]
		public int Period;

		[Parameter(2)]
		public decimal Percentage;

		public class SembolDetay
		{
			public string Sembol
			{
				get; set;
			}
			public decimal Adet
			{
				get; set;
			}

			public OrderSide LastOrderSideNesne
			{
				get; set;
			}
		}

		List<SembolDetay> SembolDetaylari = new List<SembolDetay>();

		Dictionary<string, MOST> dic = new Dictionary<string, MOST>();

		MOST most;

		public override void OnInit()
		{
			SembolDetaylari.Add(new SembolDetay()
				{
					Sembol = "GARAN", Adet = 15, LastOrderSideNesne = OrderSide.Buy
				});
			SembolDetaylari.Add(new SembolDetay()
				{
					Sembol = "AKBNK", Adet = 25, LastOrderSideNesne = OrderSide.Buy
				});
			SembolDetaylari.Add(new SembolDetay()
				{
					Sembol = "TTKOM", Adet = 5, LastOrderSideNesne = OrderSide.Buy
				});
			SembolDetaylari.Add(new SembolDetay()
				{
					Sembol = "THYAO", Adet = 12, LastOrderSideNesne = OrderSide.Buy
				});

			foreach (var symbol in SembolDetaylari)
			{
				AddSymbol(symbol.Sembol, SymbolPeriod);
				most = MOSTIndicator(symbol.Sembol, SymbolPeriod, OHLCType.Close, Period, Percentage, MovMethod.Exponential);
				dic.Add(symbol.Sembol, most);
			}

			WorkWithPermanentSignal(true);

			SendOrderSequential(false);
		}

		public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues)
		{
			var barSembol = barDataCurrentValues.LastUpdate.SymbolName;

			if (dic.ContainsKey(barSembol))
			{
				var sembolDetay = SembolDetaylari.FirstOrDefault(x => x.Sembol == barSembol);

				if (sembolDetay != null)
				{
					var mostvalue = dic[barSembol];

					if (CrossAbove(mostvalue.ExMOV, mostvalue) &&
						sembolDetay.LastOrderSideNesne != OrderSide.Buy &&
						sembolDetay.Adet != 0)
					{
						SendMarketOrder(barSembol, sembolDetay.Adet, (OrderSide.Buy));
						sembolDetay.LastOrderSideNesne = OrderSide.Buy;


						Debug("===================== ALIŞ =====================");
						Debug("Sembol : " + barSembol);
						Debug("Most.ExMov:" + Math.Round(mostvalue.ExMOV.CurrentValue, 4));
						Debug("Most:" + Math.Round(mostvalue.CurrentValue, 4));
					}

					if (CrossBelow(mostvalue.ExMOV, mostvalue) &&
						sembolDetay.LastOrderSideNesne != OrderSide.Sell &&
						sembolDetay.Adet != 0)
					{
						SendMarketOrder(barSembol, sembolDetay.Adet, (OrderSide.Sell));
						sembolDetay.LastOrderSideNesne = OrderSide.Sell;

						Debug("===================== SATIŞ =====================");
						Debug("Sembol : " + barSembol);
						Debug("Most.ExMov:" + Math.Round(mostvalue.ExMOV.CurrentValue, 4));
						Debug("Most:" + Math.Round(mostvalue.CurrentValue, 4));
					}
				}
			}
		}
	}
}

 

(15,892 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,792 kullanıcı