0 beğenilme 0 beğenilmeme
546 kez görüntülendi

merhaba. algoritma oluştururken emir eklemem gereken ekranda adet kutucuğu mevcut. benim sürekli hisse fiyatlarını ve bakiyemi kontrol edip adetleri güncellemem gerekiyor. onun yerine bu emir ekleme ekranına xxx tl yazabilmek istiyorum. yardımcı olabilir misiniz?

 

Algoritmik Trading kategorisinde (20 puan) tarafından | 546 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhaba,

Algorima sihirbazında stratejinizi oluşturduktan sonra kod üzerinde küçük eklemelerle belirlenen tutara göre al sat yapması sağlanabilir.

Aşağıdaki örneği inceleyebilirsiniz  // gerekli ..... // #gerekli yazan satırları kopyalayıp kendi stratejinize yapıştırıp alış koşuluna fx_alis() satış koşulunuza da fx_satis() fonksiyonunu eklemeniz yeterli olur.

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;

//========================================== by KRIPEX ==========================================//

namespace Matriks.Lean.Algotrader
{
	public class SablonTutaraGoreAlSat : MatriksAlgo
	{
		[SymbolParameter("GARAN")]
		public string Symbol;

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

		[Parameter(3)]
		public int Period;

		[Parameter(2)]
		public decimal Percentage;

		MOST most;

		public override void OnDataUpdate(BarDataEventArgs barData)
		{
			if (CrossAbove(most, most, 1, 0))
			{
				// Gerekli - Tutara  Göre		
				FX_Alis(Symbol);
				// # Gerekli - Tutara  Göre		
			}

			if (CrossBelow(most, most, 1, 0))
			{
				// Gerekli - Tutara  Göre		
				FX_Satis(Symbol);
				// # Gerekli - Tutara  Göre
			}
		}

		public override void OnInit()
		{
			AddSymbol(Symbol, SymbolPeriod);

			most = MOSTIndicator(Symbol, SymbolPeriod, OHLCType.Close, Period, Percentage, MovMethod.Exponential);

			WorkWithPermanentSignal(true);

			SendOrderSequential(true, Side.Buy);
		}

		// Gerekli - Tutara  Göre		
		[Parameter(50)]
		public decimal Tutar;

		public decimal Adet;

		decimal priceStep, quantityStep = 1;
		int exchangeID;

		public override void OnInitComplated()
		{
			var symbolDetail = GetSymbolDetail(Symbol);

			if (symbolDetail != null)
			{
				exchangeID = symbolDetail.ExchangeDetail.ExchangeID;
				var close = FX_Sonfiyat(Symbol); ;

				if (exchangeID != (int) ExchangeType.Ise && exchangeID != (int) ExchangeType.Viop)
				{
					priceStep = 1 / (decimal) Math.Pow(10, symbolDetail.DecimalCount);
					quantityStep = 1 / (decimal) Math.Pow(10, symbolDetail.TradeFraction);
				}else
				{
					priceStep = GetPriceStepForBistViop(Symbol, close);
				}
			}
		}

		public void FX_Alis(string sembol)
		{
			decimal _close = FX_Sonfiyat(sembol);
			decimal _adet = FX_LotAyarla(Tutar / _close);

			if (_adet > 0 && LastOrderSide.Obj != Side.Buy)
			{
				Adet = _adet;
				SendMarketOrder(sembol, _adet, (OrderSide.Buy));
				Debug("Alış sinyali oluştu. Sinyal fiyatı: " + _close + " - Adet: " + _adet);
			}
		}

		public void FX_Satis(string sembol)
		{
			if (Adet >= 0 && LastOrderSide.Obj != Side.Sell)
			{
				SendMarketOrder(sembol, Adet, (OrderSide.Sell));
				Debug("Satış sinyali oluştu. Sinyal fiyatı: " + FX_Sonfiyat(sembol) + " - Adet: " + Adet);
			}
		}

		public decimal FX_LotAyarla(decimal quantity)
		{
			return Math.Floor(quantity / quantityStep) * quantityStep;
		}

		public decimal FX_Sonfiyat(string sembol)
		{
			return GetSelectedValueFromBarData(GetBarData(sembol, SymbolPeriod), OHLCType.Close);
		}
		// # Gerekli - Tutara  Göre		
	}
}


 

(15,682 puan) tarafından
0 0
İlginiz için teşekkür ederim fakat benim bu söylediklerinizi yapma becerim maalesef ki yok. Ben istedim ki fotoğrafta belirlediğim kutucuğu miktar ya da tutar olarak sizler çevirirsiniz. Ya da uzaktan bağlanıp bana nasıl yapılacağını gösterebilirsiniz. İyi çalışmalar dilerim.
0 0
konu ile birlikte iletişim numaranızı iqdestek@matriksdata.com mail adresine iletirseniz dönüş yapılacaktır.

iyi çalışmalar
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,637 soru
7,643 cevap
4,448 yorum
10,866 kullanıcı