0 beğenilme 0 beğenilmeme
481 kez görüntülendi
Merhaba, örneğin EMA indikatörünün son değerine en yakın olan fiyatı nasıl çekebilirim? EMA indikatörünün son değerine algoda alış emri göndermeye çalışıyorum ancak indikatörün son değeri fiyat adımına uymadığı için emir gidemiyor. O yüzden indikatöre en yakın (ya da hemen üstünde ya da hemen altında farketmez) fiyatı çekmek istiyorum. Teşekkürler.

 

NOT: emaFiyat = Math.Round(ema.Value[0][ema.CurrentIndex], 2); kodu ile indikatörün değerini çekiyorum ama fiyat adımına tutmuyor.
Algoritmik Trading kategorisinde (146 puan) tarafından | 481 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhaba,

Eğer Bist tarafında işlem yapıyorsanız GetPriceStepForBistViop() fonksiyonunu aşağıdaki gibi kullanabilirsiniz.

var fiyatYuvarla=GetPriceStepForBistViop(Symbol,ema.CurrentValue);

Her iki piyasada da işlem yapacaksanız aşağıdaki yapıyı kullanabilirsiniz.

decimal priceStep, quantityStep = 1;
		int exchangeID;

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

			exchangeID = symbolDetail.ExchangeDetail.ExchangeID;
			var close = GetSelectedValueFromBarData(GetBarData(), OHLCType.Close);

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

			Debug("exchangeID: " + exchangeID + " priceStep: " + priceStep + " quantityStep: " + quantityStep);
		}

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

public decimal FX_FiyatAyarla(decimal price)
{
	return Math.Floor(price / priceStep) * priceStep;
}

Kullanımı:

var fiyatYuvarla=FX_FiyatAyarla(ema.CurrentValue);
var lotYuvarla=FX_LotAyarla(oncekiLotMiktari*1.1m);

 

(16,369 puan) tarafından
9,718 soru
9,677 cevap
5,197 yorum
49,237 kullanıcı