0 beğenilme 0 beğenilmeme
1,705 kez görüntülendi
AL

IF(MOV(C,OPT1,VAR)>OTT(C,OPT2,OPT3)

                MOV(C,OPT4,VAR)>OTT(C,OPT5,OPT6)*(1+OPT7)

                AND

                STOSK(OPT8,OPT9,33,VAR)+1000>OTT(STOSK(OPT10,OPT11,33,VAR)+1000,2,OPT12)

ELSE

                MOV(C,OPT13,VAR)>OTT(C,OPT14,OPT15)*(1+OPT16)

                AND

                STOSK(OPT17,OPT18,33,VAR)+1000>OTT(STOSK(OPT19,OPT20,33,VAR)+1000,2,OPT21)

SAT

IF(MOV(C,OPT1,VAR)>OTT(C,OPT2,OPT3)

                MOV(C,OPT4,VAR)<OTT(C,OPT5,OPT6)*(1-OPT7)

                AND

                STOSK(OPT8,OPT9,33,VAR)+1000<OTT(STOSK(OPT10,OPT11,33,VAR)+1000,2,OPT12)

ELSE

                MOV(C,OPT13,VAR)<OTT(C,OPT14,OPT15)*(1-OPT16)

                AND

                STOSK(OPT17,OPT18,33,VAR)+1000<OTT(STOSK(OPT19,OPT20,33,VAR)+1000,2,OPT21)
Algoritmik Trading kategorisinde (20 puan) tarafından | 1,705 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhabalar,

Bu tarz kompleks olmayan stratejileri algoritma sihirbazını kullanarak oluşturabilirsiniz.

Algoritma sihirbazı ile ilgili aşağıdaki dokümanları incelebilirsiniz.

https://destek.matriksdata.com/?qa=4438/iq-algoritma-sihirbaz%C4%B1n%C4%B1-nas%C4%B1l-kullan%C4%B1r%C4%B1z

https://destek.matriksdata.com/?qa=4448/algoritma-sihirbaz%C4%B1-kullan%C4%B1m%C4%B1-%C3%B6rnekler-%C3%A7oklu-ko%C5%9Ful-olu%C5%9Fturma

 

Ve ayrıca konu ile alakalı benzer bir strateji örneği de paylaşıyorum, lütfen inceleyiniz.

https://destek.matriksdata.com/?qa=8370/primedaki-stratejiyi-iq-ye-d%C3%B6n%C3%BC%C5%9Ft%C3%BCrmek&show=8370#q8370

İyi çalışmalar.

 

 

(11,069 puan) tarafından
0 0
Videoları izledim fakat if döngüsü mantığını kuramadım. Bu ise bunu yap değilse bunu yap şeklinde nasıl yapacağımı anlayamadım. Videolar da bu şekilde bir örnekte bulamadım.

Örnek kodu inceledim. İstenen formül ile gönderilen kod aynı değil. Bu kodu direkt olarak çevirip bana yardım edebilir misiniz ?
0 0

Merhabalar,

Stratejiyi lütfen inceleyiniz.

***STRATEJİLERİ TEST/DENEME ORTAMINDA SINAMADAN VE SİZİN İSTEDİĞİNİZ ŞEKİLDE ÇALIŞTIĞINA EMİN OLMADAN GERÇEK ORTAMDA HİÇBİR ZAMAN ÇALIŞTIRMAYINIZ ***

using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.Data.Symbol;
using Matriks.Engines;
using Matriks.Indicators;
using Matriks.Symbols;
using Matriks.Trader.Core;
using Matriks.Trader.Core.Fields;
using Matriks.Lean.Algotrader.AlgoBase;
using Matriks.Lean.Algotrader.Models;
using Matriks.Lean.Algotrader.Trading;
using Matriks.AI;
using Matriks.AI.AiParameters;
using Matriks.AI.Data;
using Matriks.Trader.Core.TraderModels;

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


		[Parameter(SymbolPeriod.Day)]
			public SymbolPeriod SymbolPeriod1;


		[Parameter(40)]
			public int TottPeriod1;

		[Parameter(1)]
			public decimal TottOpt1;

		[Parameter(0.001)]
			public decimal TottTwinOttCoef1;

		[Parameter(MovMethod.VAR)]
			public MovMethod TottMovMethod1;


		[Parameter(41)]
			public int TottPeriod2;

		[Parameter(1.1)]
			public decimal TottOpt2;

		[Parameter(0.011)]
			public decimal TottTwinOttCoef2;

		[Parameter(MovMethod.VAR)]
			public MovMethod TottMovMethod2;

		[Parameter(500)]
			public int SottPeriodK1;

		[Parameter(200)]
			public int SottPeriodSlowK1;

		[Parameter(2)]
			public int SottOttPeriod1;

		[Parameter(0.5)]
			public decimal SottOttOpt1;

		[Parameter(MovMethod.VAR)]
			public MovMethod SottOttMethod1;

		[Parameter(MovMethod.VAR)]
			public MovMethod SottStosKMethod1;

		[Parameter(40)]
			public int Opt7;

		[Parameter(40)]
			public int Opt8;

		[Parameter(1)]
			public decimal OrderQuantity1;

		[Parameter(42)]
			public int TottPeriod3;

		[Parameter(1.2)]
			public decimal TottOpt3;

		[Parameter(0.012)]
			public decimal TottTwinOttCoef3;

		[Parameter(MovMethod.VAR)]
			public MovMethod TottMovMethod3;


		[Parameter(501)]
			public int SottPeriodK2;

		[Parameter(201)]
			public int SottPeriodSlowK2;

		[Parameter(2)]
			public int SottOttPeriod2;

		[Parameter(0.51)]
			public decimal SottOttOpt2;

		[Parameter(MovMethod.VAR)]
			public MovMethod SottOttMethod2;

		[Parameter(MovMethod.VAR)]
			public MovMethod SottStosKMethod2;

		SOTT sott2;



		TOTT tott;

		TOTT tott2;

		TOTT tott3;

		SOTT sott;



		public override void OnInit()
		{

			tott = TOTTIndicator(Symbol1, SymbolPeriod1, OHLCType.Close, TottPeriod1, TottOpt1, TottTwinOttCoef1, TottMovMethod1);
			tott2 = TOTTIndicator(Symbol1, SymbolPeriod1, OHLCType.Close, TottPeriod2, TottOpt2, TottTwinOttCoef2, TottMovMethod2);
			sott = SOTTIndicator(Symbol1, SymbolPeriod1, OHLCType.Close, SottPeriodK1, SottPeriodSlowK1, SottOttPeriod1, SottOttOpt1, SottOttMethod1, SottStosKMethod1);
			sott2 = SOTTIndicator(Symbol1, SymbolPeriod1, OHLCType.Close, SottPeriodK2, SottPeriodSlowK2, SottOttPeriod2, SottOttOpt2, SottOttMethod2, SottStosKMethod2);

			tott3 = TOTTIndicator(Symbol1, SymbolPeriod1, OHLCType.Close, TottPeriod3, TottOpt3, TottTwinOttCoef3, TottMovMethod3);
			SendOrderSequential(true, Side.Buy);
			WorkWithPermanentSignal(true);

			//Alttaki fonksiyon açıldıktan sonra parametre olarak verilen saniyede bir OnTimer fonksiyonu tetiklenir.
			// SetTimerInterval(3600);

			//Alttaki fonksiyon ile tanımlanan sembol ile ilgili haber geldiğinde OnNewsReceived fonksiyonu tetiklenir.
			//AddNewsSymbol(Symbol);

			//Alttaki fonksiyon ile tanımlanan anahtar kelime ile ilgili haber geldiğinde OnNewsReceived fonksiyonu tetiklenir.
			//AddNewsKeyword("KAP");
		}

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

		}

		/// <summary>
		/// SetTimerInterval fonksiyonu ile belirtilen sürede bir bu fonksiyon tetiklenir.
		/// </summary>
		public override void OnTimer()
		{

		}

		/// <summary>
		/// AddNewsSymbol ve AddNewsKeyword ile haberlere kayit olunmuşsa bu fonksiyon tetiklenir.
		/// </summary>
		/// <param name="newsId">Gelen haberin id'si</param>
		/// <param name="relatedSymbols">Gelen haberin ilişkili sembolleri</param>
		public override void OnNewsReceived(int newsId, List<string> relatedSymbols)
		{

		}

		/// <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(BarDataEventArgs barData)
		{
			if (tott.Value[0][tott.CurrentIndex] > tott.Value[1][tott.CurrentIndex])
			{
				if (tott2.Value[0][tott2.CurrentIndex] > tott2.Value[1][tott2.CurrentIndex] * (1 + Opt7) && sott.Value[0][sott.CurrentIndex] > sott.Value[1][sott.CurrentIndex])
				{
					SendMarketOrder(Symbol1, OrderQuantity1, OrderSide.Buy, includeAfterSession:false);
				}

				else
				{
					if (tott3.Value[0][tott3.CurrentIndex] > tott.Value[1][tott3.CurrentIndex] * (1 + Opt8) && sott2.Value[0][sott2.CurrentIndex] > sott2.Value[1][sott2.CurrentIndex])
					{
						SendMarketOrder(Symbol1, OrderQuantity1, OrderSide.Buy, includeAfterSession:false);
					}

				}
			}

			if (tott.Value[0][tott.CurrentIndex] > tott.Value[1][tott.CurrentIndex])
			{
				if (tott2.Value[0][tott2.CurrentIndex] < tott2.Value[1][tott2.CurrentIndex] * (1 - Opt7) && sott.Value[0][sott.CurrentIndex] < sott.Value[1][sott.CurrentIndex])
				{
					SendMarketOrder(Symbol1, OrderQuantity1, OrderSide.Sell, includeAfterSession:false);
				}

				else
				{
					if (tott3.Value[0][tott3.CurrentIndex] < tott.Value[1][tott3.CurrentIndex] * (1 - Opt8) && sott2.Value[0][sott2.CurrentIndex] < sott2.Value[1][sott2.CurrentIndex])
					{
						SendMarketOrder(Symbol1, OrderQuantity1, OrderSide.Sell, includeAfterSession:false);
					}

				}
			}

		}

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

		/// <summary>
		/// Strateji durdurulduğunda bu fonksiyon tetiklenir.
		/// </summary>
		public override void OnStopped()
		{
		}
	}
}

İyi çalışmalar.

0 0
Kod çalışmanız ve yardımlarınız için teşekkür ederim.
0 0
ilginiz için teşekkür ederim ancak kodu derlediğimde hata vermemesine rağmen bactest sonrası kodu çalıştırdığımda sonuçlar o olarak görünüyor, düzeltebilirmisiniz.

iyi çalışmalar.
7,506 soru
7,510 cevap
4,405 yorum
8,687 kullanıcı