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

Robot Tanımlama

Soruldu
Görüntülenme
1.676 görüntülenme
Durum
Cevaplandı

Merhaba,

- Robot kurduğumuzda seansı al yaparak kapattı ve akşam ekran kapandı sabah aynı streteji tekrar çalıştırdık sat yaparak başlar mı?

- Bir soruya bu cevabı vermişsiniz " IQ'yu kapatmadiginiz surece (orn. borsa tekrar acildiginda) kaldigi yerden devam edecektir. kapattiginizda da kaldiginiz yerden devam etmek icin yontemler mevcuttur https://destek.matriksdata.com/?qa=970/strateji-de%C4%9Fi%C5%9Fkenini-kal%C4%B1c%C4%B1-olarak-haf%C4%B1zada-tutmak#a1002 sorusuna bakiniz"

bunu daha detaylı anlatabilir misiniz. Bu konuyu ilk defa yapacak olan birisine anlatır gibi, teşekkürler

Paylaş

1 Cevap

0

Hos geldiniz, stratejiyi tekrar calistirdiginizda sat yaparak baslayamaz. Ayni strateji de olsa once calistirilmis stratejiyle ilgili bir bilgisi yoktur.

Bahsettiginiz cevapta eski calistirdigimiz stratejiden yeni calistirilana bilgi aktarim yontemlerinden bir tanesini gormektesiniz. Fakat istediginiz sadece stratejinin satisla baslamasiysa, bunun icin daha kolay yontemlerimiz mevcut.

Orn. direkt al/sat seklinde ilerleyen bir stratejiniz (SendOrderSequential(true)) varsa asagidaki gibi stratejiyi calistirirken, manuel olarak kutucugu aktive ederek satisla baslamasini saglayabiliriz.

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 sendOrderSeq_YENI : 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(1)]
		public decimal OrderQuantity;
		[Parameter(14)]
		public int Period;
		[Parameter(70)]
		public int UpLevel;
		[Parameter(30)]
		public int DownLevel;
		
		[Parameter(false)]
		public bool SatislaBasla;
		
		// indikator tanımları.
		RSI rsi;
		int firstRun = 1;

		/// <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);
			rsi = RSIIndicator(Symbol, SymbolPeriod, OHLCType.Close, Period);

			WorkWithPermanentSignal(true);

			SendOrderSequential(true,true);
		}

		/// <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)
		{
			if (firstRun == 1)
			{
				if (CrossAbove(rsi, DownLevel) && !SatislaBasla)
				{
					SendMarketOrder(Symbol, OrderQuantity, (OrderSide.Buy));
					firstRun = 0;
				}
				if (CrossBelow(rsi, UpLevel) && SatislaBasla)
				{	
					SendMarketOrder(Symbol, OrderQuantity, (OrderSide.Sell));
					firstRun = 0;
				}
				
			}
			else 
				if (CrossAbove(rsi, DownLevel))
				SendMarketOrder(Symbol, OrderQuantity, (OrderSide.Buy));
				if (CrossBelow(rsi, UpLevel))
				SendMarketOrder(Symbol, OrderQuantity, (OrderSide.Sell));
		}

		/// <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)
			{

			}
		}
	}
}


RSI stratejisi sablonu uzerinde sadece bir kac degisiklik yaparak bu sonuca ulasabiliyoruz. Dikkat edilmesi gereken yerler:

SendOrderSequential(true,true); //Bu son versiyonda ekledigimiz bir ozellik. Ilk ayar true oldugunda emirlerin sirali gonderilme sarti devam etmekte, 2. ayari true yaptigimizda ise satis ya da alisla baslamasinin bir onemi olmasin diyoruz. Yani ilk emir satis da gelse kabul edilecek ve sonra alis kosulu aranacak, sirali gitmeye devam edecektir.

if (firstRun == 1): baslangic emrini ayristiriyoruz

BağlantıBayraklaMatt RicksMatriks Destek8.033

Cevabınız

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