0 beğenilme 0 beğenilmeme
749 kez görüntülendi
Kıvanç hocanın Prime'da kullandığı bir stratejiyi Algoıq'da nasıl kullanabilirim .mst dosyası, robot bağlamak istiyorum.
Algoritmik Trading kategorisinde (14 puan) tarafından | 749 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhaba,

Matriks Veri Terminalinde kullanılan hiçbir şeyi direkt IQ'da kullanamazsınız.(Grafik, ekran tasarımı,strateji)

IQ için dönüştürülmesi tasarlaması gerekir. Destek sayfasında çok fazla Matriks Veri Terminalinden IQ'ya dönüştürülmüş indikatör, explorer, strateji bulunmakta arama yapabilirsiniz.

Destek sayfasında bulmazsanız prime kodunu yazarsanız yardımcı olabiliriz.

https://destek.matriksdata.com/?qa=search&q=payla%C5%9F%C4%B1m

(15,892 puan) tarafından
0 0
PERIOD:=OPT1;
IND:=TILL((H+L+2*C)/4,Period,0.7);
K1:=valuewhen(1.,cross(ind,ref(ind,-1)),h);
ind>ref(ind,-1) and c>k1 and SDEV(c,14)>OPT2

 

 

PERIOD:=OPT1;
IND:=TILL((H+L+2*C)/4,Period,0.7);
K1:=valuewhen(1.,cross(ref(ind,-1),ind),l);
ind<ref(ind,-1) and c<k1 and SDEV(c,14)>OPT2
0 0

Aşağıdaki kodu kullanabilirsiniz.

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;
/*
AL
PERIOD:=OPT1;
IND:=TILL((H+L+2*C)/4,Period,0.7);
K1:=valuewhen(1.,cross(ind,ref(ind,-1)),h);
ind>ref(ind,-1) and c>k1 and SDEV(c,14)>OPT2

SAT
PERIOD:=OPT1;
IND:=TILL((H+L+2*C)/4,Period,0.7);
K1:=valuewhen(1.,cross(ref(ind,-1),ind),l);
ind<ref(ind,-1) and c<k1 and SDEV(c,14)>OPT2
*/

namespace Matriks.Lean.Algotrader
{
	public class TmovValueWhenStdev : 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 BuyOrderQuantity;

		[Parameter(1)]
		public decimal SellOrderQuantity;

		[Parameter(3)]
		public int TmovPeriod;

		[Parameter(0.7)]
		public decimal TmovA;

		[Parameter(14)]
		public int StdevPeriod;

		[Parameter(0.05)]
		public decimal StdevSeviye;

		TMOV tmov;

		STDEV stdev;

		/// <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);
			stdev = STDEVIndicator(Symbol, SymbolPeriod, OHLCType.Close, StdevPeriod);

			tmov = new TMOV(TmovPeriod, TmovA);

			SendOrderSequential(true, Side.Buy);
			WorkWithPermanentSignal(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 OnInitCompleted()
		{

		}

		decimal A1 = decimal.MaxValue, S1 = decimal.MinValue;

		public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues)
		{
			var currentBar = barDataCurrentValues.LastUpdate.BarDataIndex;
			var barDateTime = barDataCurrentValues.LastUpdate.DTime;

			var open = barDataCurrentValues.LastUpdate.Open;
			var high = barDataCurrentValues.LastUpdate.High;
			var low = barDataCurrentValues.LastUpdate.Low;
			var close = barDataCurrentValues.LastUpdate.Close;

			tmov.Update((open + high + low + close) / 4, currentBar, barDateTime);

			/*
			A1:=valuewhen(1.,cross(ind,ref(ind,-1)),h);
			ind>ref(ind,-1) and c>A1 and SDEV(c,14)>OPT2
			*/

			if (tmov.Value[0][tmov.CurrentIndex] >tmov.Value[0][tmov.CurrentIndex -1] &&
				tmov.Value[0][tmov.CurrentIndex -1] <tmov.Value[0][tmov.CurrentIndex -2])
			{
				A1 = high;
			}

			if (tmov.Value[0][tmov.CurrentIndex] >tmov.Value[0][tmov.CurrentIndex -1] &&
				close>A1 && stdev.Value[0][stdev.CurrentIndex] >StdevSeviye && LastOrderSide.Obj != Side.Buy)
			{
				SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy);
				Debug("Alış emri gönderildi.");
			}

			/*
			S1:=valuewhen(1.,cross(ref(ind,-1),ind),l);
			ind<ref(ind,-1) and c<S1 and SDEV(c,14)>OPT2
			*/

			if (tmov.Value[0][tmov.CurrentIndex] <tmov.Value[0][tmov.CurrentIndex -1] &&
				tmov.Value[0][tmov.CurrentIndex -1] >tmov.Value[0][tmov.CurrentIndex -2])
			{
				S1 = low;
			}

			if (tmov.Value[0][tmov.CurrentIndex] <tmov.Value[0][tmov.CurrentIndex -1] &&
				close<S1 && stdev.Value[0][stdev.CurrentIndex] >StdevSeviye && LastOrderSide.Obj != Side.Sell)
			{
				SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell);
				Debug("Satış emri gönderildi.");
			}
		}
	}
}

 

8,630 soru
8,584 cevap
4,819 yorum
19,772 kullanıcı