0 beğenilme 0 beğenilmeme
1,031 kez görüntülendi

 

Merhaba,

HHV ve LLV fonksiyonunun önceki değerlerine erişerek işleme giriş çıkış kontrollerinde kullanmak istiyorum. Kodu derlediğimde hata vermiyor ancak Debug ile görmek istediğimde hata alıyorum. 

 

Aşağıdaki kodda, Debug için hata yok. Son aktif bara göre LowestLow değerini getiriyor. Son LowestLow değerini de bir dictionary'e atıyorum. 

using System;
using System.Collections.Generic;
using System.Linq;
using System.ComponentModel;
using Matriks.Data.Identifiers;
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;
using System.Windows.Media;

namespace Matriks.Lean.Algotrader
{
	public class Scalp_v3_HHVLLV : 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("XBT_USD_BMEX")]
		public string Symbol;

		[Parameter(SymbolPeriod.Min)]
		public SymbolPeriod SymbolPeriod;

		[Parameter(5)]
		public decimal BuyOrderQuantity;

		[Parameter(5)]
		public decimal SellOrderQuantity;

		// indikator tanımları.
		[Parameter(10)]
		public int longSpan;
		
		[Parameter(0)]
		public int lastBarIndex;

		[Parameter(0)]
		public float longHigh;
		
		[Parameter(10000000)]
		public float longLow;
		
		Dictionary<int, float> LLVList = new Dictionary<int, float>();
		Dictionary<int, float> HHVList = new Dictionary<int, float>();
		
		public override void OnInit()
		{
			
			AddSymbol(Symbol, SymbolPeriod);


			WorkWithPermanentSignal(false);

			SendOrderSequential(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 OnInitComplated()
		{
			var barDataModel = GetBarData();
			
			lastBarIndex = barDataModel.Close.Count -1;
		
		}
			

		public override void OnDataUpdate(BarDataEventArgs barData)
		{
			
			var barDataModel = GetBarData();
			
			lastBarIndex = barDataModel.Close.Count -1;
			longLow=(float)LowestLow(OHLCType.Low,longSpan);
			longHigh=(float)HighestHigh(OHLCType.High,longSpan);
			
			LLVList[lastBarIndex] = longLow;
			
					Debug("LongLow-1= " + LLVList[lastBarIndex]);
				
		}

		
		public override void OnNewsReceived(int newsId, List<string> relatedSymbols)
		{

		}

		public override void OnOrderUpdate(IOrder order)
		{
			if (order.OrdStatus.Obj == OrdStatus.Filled)
			{

			}
		}
	}
}

Beklentim, Dictionary'deki bir önceki indis'i çektiğimde LowestLow değerinin bir önceki değerinin gelmesi. Debug'ı alttaki şekilde değiştirince kod derleniyor. Ama Debug bana hata veriyor. 

Debug("LongLow-1= " + LLVList[lastBarIndex-1]);

Hata Mesajı: 

System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
   at System.ThrowHelper.ThrowKeyNotFoundException()
   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   at Matriks.Lean.Algotrader.Scalp_v3_HHVLLV.OnDataUpdate(BarDataEventArgs barData)
   at Matriks.Lean.Algotrader.AlgoBase.MatriksAlgo.UpdateBarData(BarDataEventArgs e) in E:\BuildAgentRelease\work\cb8bc45b3237af97\matriks-lean-algotrader\src\MatriksIndicator.cs:line 319

Bu bir önceki LowestLow değerine ulaşmayı ve kontrolü nasıl sağlayabilirim?

Algoritmik Trading kategorisinde (14 puan) tarafından | 1,031 kez görüntülendi

Bu soruya cevap vermek için lütfen giriş yapınız veya kayıt olunuz.

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ı