Matriks Destek ve Yardım Platformu

Matriks Ürünleri ile ilgili tüm sorularınız için bizlere buradan ulaşabilirsiniz. Daha önce sorulan soruları ve verilen cevapları ilgili sekmelerden ve arama üzerinden inceleyebilirsiniz. Sağ taraftaki kategoriler üzerinden İlgilendiğiniz özelliklerle ilgili soruları filtreleyebilirsiniz. Soru ve cevapları sosyal medyada paylaşabilirsiniz. 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.

0

AL Sat için Koşulda fiyat belirlemek

Soruldu
Görüntülenme
1.039 görüntülenme
Durum
Cevaplandı
Merhaba,

Manuel olarak kendim bir kaç Al - Sat seviyesi belirledim.

Bunun için örneğin iki farklı al sat kanalı için , fiyat bazlı Al Sat yapan strateji oluşturabilirmiyiz.

Örneğin ETH fiyatı 3000 e değince ( Bar kapanışını beklemeden ) tetikleme olsun ve PYS fiyatından Buy emri versin,

ve ETH fiyatı 4000 olunca aynı şekilde bar kapanışını beklemeden tetikleme oluşsun ve Sell emri versin.

4200 e gelirse alsın, 4500 de satsın gibi.

Ayrıca Bar kapanışlı kısmını da yazabilirmiyiz.

Teşekkürler.
Paylaş

1 Cevap

1

Merhaba,

aşağıdaki stratejideki gibi alış ve satış seviyelerini belirleyip deneyebilirsiniz.

oninitcomplate methodunu kendi seviylerinize göre düzenleyiniz.

1800-> kademe

Quantity-> alış satış adedi,

orderSide-> emir yönü alış için OrderSide.Buy, satış için OrderSide.Sell olmalı

Yon-> gönderilen emrin debug çıktışı için "Alış","Satış" yazılabilir yada isteneilen başka birşey çok önemli değil

kademeList[1800] = new orderDetail{

Quantity = 2, orderSide = OrderSide.Buy, Yon = "Alış"

};

burada şunada dikkat edilmeli fiyat belirlediğiniz seviyeye eşit olmama durumlarından dolayı fark diye bir değişken var belirlediğiniz seviyenin belirlenen fark kadar aşağısı ve yukarısını dahil eder.

istediğiniz gibi çalıştığından emin olmadan canlıda çalıştırmayınız.

deneme hesabında küçük miktarlarla deneyiniz.

using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.Data.Symbol;
using Matriks.Engines;
using System.Windows.Media;
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 KademeliAlSAtList : 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("GARAN")]
		public string Symbol;

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

		[Parameter(25)]
		public decimal fark;

		decimal aktifKademe = 0;

		public class orderDetail
		{
			public decimal Quantity;
			public OrderSide orderSide;
			public string Yon;
		}

		Dictionary<decimal, orderDetail> kademeList = new Dictionary<decimal, orderDetail>();

		/// <summary>
		/// Strateji ilk çalıştırıldığında bu fonksiyon tetiklenir. Tüm sembole kayit işlemleri,
		/// indikator ekleme, haberlere kayıt olma işlemleri burada yapılır. 
		/// </summary>
		public override void OnInit()
		{
			AddSymbol(Symbol, SymbolPeriod);

			//Eger backtestte emri bir al bir sat seklinde gonderilmesi isteniyor bu true set edilir. 
			//Alttaki satırı silerek veya false geçerek emirlerin sirayla gönderilmesini engelleyebilirsiniz. 
			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()
		{
			kademeList[1800] = new orderDetail
			{
				Quantity = 2, orderSide = OrderSide.Buy, Yon = "Alış"
			};
			kademeList[1900] = new orderDetail
			{
				Quantity = 3, orderSide = OrderSide.Sell, Yon = "Satış"
			};
			kademeList[2000] = new orderDetail
			{
				Quantity = 2, orderSide = OrderSide.Buy, Yon = "Alış"
			};
			kademeList[2100] = new orderDetail
			{
				Quantity = 2, orderSide = OrderSide.Sell, Yon = "Satış"
			};
		}

		/// <summary>
		/// Eklenen sembollerin bardata'ları ve indikatorler güncellendikçe bu fonksiyon tetiklenir. 
		/// </summary>
		/// <param name="barData">Bardata ve hesaplanan gerçekleşen işleme ait detaylar</param>
		public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues)
		{
			var close = barDataCurrentValues.LastUpdate.Close;

			var tut = kademeList.FirstOrDefault(x => x.Key >= close - fark && x.Key <= close + fark);

			if (tut.Value != null && aktifKademe != tut.Key)
			{
				aktifKademe = tut.Key;
				SendMarketOrder(Symbol, tut.Value.Quantity, tut.Value.orderSide);
				Debug(tut.Value.Yon + " emri gönderildi. Teiklenen fiyat: "+close);
			}

		}

		/// <summary>
		/// Gönderilen emirlerin son durumu değiştikçe bu fonksiyon tetiklenir.
		/// </summary>
		/// <param name="barData">Emrin son durumu</param>
		public override void OnOrderUpdate(IOrder order)
		{
			if (order.OrdStatus.Obj == OrdStatus.Filled)
			{

			}
		}
	}
}

 

Unblocked Games offering a wide range of experiences: action, puzzle, platform, racing, clicker mechanics, strategy, sports, even horror.
https://unblocked1games.github.io
BağlantıBayraklaKripexMatriks Destek16.499

Cevabınız

Cevap yazmak için giriş yapın.Giriş yapKayıt ol