0 beğenilme 0 beğenilmeme
348 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 (141 puan) tarafından | 348 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,179 puan) tarafından
9,220 soru
9,177 cevap
5,041 yorum
30,138 kullanıcı