23.02.2024
11
1
590
100
Anıl Özekşi'nin MOTT indikatörü ile oluşturmuş olduğu veri terminali sisteminin IQ'ya uyarlanmış halidir.


𝕿𝖗𝖆𝖓𝖘𝖑𝖆𝖙𝖊𝖉 𝓑𝔂 ⒶⓀⒾⓃ ℍü𝓃𝑒𝓇𝓁𝒾


using System;
using System.Collections.Generic;
using System.Linq;
using Matriks;
using Matriks.Data.Symbol;
using Matriks.Data.Tick;
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;
using Matriks.Enumeration;
using Matriks.IntermediaryInstitutionAnalysis.Enums;

namespace Matriks.Lean.Algotrader
{
	public class MOTT_4kurgu_stratejisi : MatriksAlgo
	{
		/*
		MOTT_4.Kurgu
		AL
		Cross(MOV(C,opt1,VAR),OTT(HHV(H,opt2),2,opt3)) OR 
		Cross(MOV(C,opt1,VAR),(OTT(HHV(H,opt2),2,opt3)+(OTT(HHV(H,opt2),2,opt3)+OTT(LLV(L,opt2),2,opt3))/2)/2) OR 
		Cross(MOV(C,opt1,VAR),(OTT(HHV(H,opt2),2,opt3)+OTT(LLV(L,opt2),2,opt3))/2) OR 
		Cross(MOV(C,opt1,VAR),(OTT(LLV(L,opt2),2,opt3)+(OTT(HHV(H,opt2),2,opt3)+OTT(LLV(L,opt2),2,opt3))/2)/2) OR 
		Cross(MOV(C,opt1,VAR),OTT(LLV(L,opt2),2,opt3))

		SAT
		Cross(OTT(HHV(H,opt2),2,opt3),MOV(C,opt1,VAR)) OR 
		Cross((OTT(HHV(H,opt2),2,opt3)+(OTT(HHV(H,opt2),2,opt3)+OTT(LLV(L,opt2),2,opt3))/2)/2,MOV(C,opt1,VAR)) OR 
		Cross((OTT(HHV(H,opt2),2,opt3)+OTT(LLV(L,opt2),2,opt3))/2,MOV(C,opt1,VAR)) OR 
		Cross((OTT(LLV(L,opt2),2,opt3)+(OTT(HHV(H,opt2),2,opt3)+OTT(LLV(L,opt2),2,opt3))/2)/2,MOV(C,opt1,VAR)) OR 
		Cross(OTT(LLV(L,opt2),2,opt3),MOV(C,opt1,VAR))
		*/

		//𝕿𝖗𝖆𝖓𝖘𝖑𝖆𝖙𝖊𝖉 𝓑𝔂 ⒶⓀⒾⓃ ℍü𝓃𝑒𝓇𝓁𝒾

		[SymbolParameter("GARAN")]
			public string Symbol;
		[Parameter(SymbolPeriod.Day)]
			public SymbolPeriod SymbolPeriod;
		[Parameter(Side.Buy)]
			public Side orderSide;
		[Parameter(4)]
			public int MovPeriod;
		[Parameter(MovMethod.VAR)]
			public MovMethod MovMovMethod;
		[Parameter(80)]
			public int MottX1;
		[Parameter(1.4)]
			public decimal MottX2;
		[Parameter(0)]
			public int MottOteleme;
		[Parameter(1)]
			public decimal OrderQuantity;
		MOV mov;
		MatriksIndicator MOTT;
		public override void OnDataUpdate(BarDataEventArgs barData)
		{
			if (CrossAbove(mov, MOTT, 0, 0)
				|| CrossAbove(mov, MOTT, 0, 1)
				|| CrossAbove(mov, MOTT, 0, 2)
				|| CrossAbove(mov, MOTT, 0, 3)
				|| CrossAbove(mov, MOTT, 0, 4))
			{
				SendMarketOrder(Symbol, OrderQuantity, OrderSide.Buy, includeAfterSession:false);
			}
			if (CrossBelow(mov, MOTT, 0, 0)
				|| CrossBelow(mov, MOTT, 0, 1)
				|| CrossBelow(mov, MOTT, 0, 2)
				|| CrossBelow(mov, MOTT, 0, 3)
				|| CrossBelow(mov, MOTT, 0, 4))
			{
				SendMarketOrder(Symbol, OrderQuantity, OrderSide.Sell, includeAfterSession:false);
			}

		}
		public override void OnInit()
		{
			mov = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, MovPeriod, MovMovMethod);
			MOTT = new MOTT();
			MOTT.SetIndicatorParameters("X1", MottX1);
			MOTT.SetIndicatorParameters("X2", MottX2);
			MOTT.SetIndicatorParameters("Oteleme", MottOteleme); RegisterUserIndicator(MOTT, Symbol, SymbolPeriod, OHLCType.Close, 5);
			SendOrderSequential(true, orderSide);
			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()
		{

		}

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


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

11 Yorum

Merhaba, Sistem ve Optimizasyon ile ilgili bilgileri anıl hocanın eğitimlerinde bulabilirsiniz.

  • 28.02.2024 10:19
  • 0

Egitimde gosterilen 4B-REFli versiyonun LONG ve SHORT aciga satisli versiyonunu da yapabilir misiniz acaba?

  • 29.02.2024 15:29
  • 1

Merhaba, Algoritma Sihirbazı kullanarak oluşturabilirsiniz. MOTT indikatöründe öteleme parametresi REF fonksiyonuna denk gelmektedir. Öteleme Parametresi 1 yazıldığında ref(c,-1) olarak indikatör çizilir.

  • 01.03.2024 10:24
  • 0

Merhaba Akın bey, burada artık kod bloğu kısmı görüntülenemiyor. Kaldırdınız mı yoksa sistemsel sorun mu var?

  • 20.04.2024 17:07
  • 0

Merhaba, kod bloğuna uygulama üzerinden stratejiyi/indikatörü kopyaladığınızda ulaşabilirsiniz.

  • 30.04.2024 13:13
  • 0

Merhaba Akın Bey, Sistemi Açığa sat ve Time stamp'li olarak IQ ya uyarlamanızı rica edebilir miyiz ?

  • 21.04.2024 23:49
  • 0

Merhaba, iqdestek mail adresine mail olarak taleplerinizi iletebilirsiniz

  • 30.04.2024 13:18
  • 0

Merhaba, Yazılımcıyım ama sizin kütüphanelerinize hakim olmadığım için 4B ref li kurguyu yazmakta zorlanıyorum. Algoritma sihirbazına ise hiç hakim değilim. bu nedenle sizden 4b refli kurgu için yardım talep ediyorum. İlginiz için şimdiden teşekkürler

  • 27.04.2024 01:00
  • 0

Merhaba, 4B ref kurgusu hazır olduğunda yüklenecektir.

  • 30.04.2024 13:20
  • 0

Merhaba Anıl Bey borsada cok islem yaptım zarar ettim ve artık algoritmik modelle al sat yapan bir strateji kullanmak istiyorum nerden baslamam gerekiyor ne yapmalıyım yardımcı olursanız sevinirim

  • 30.05.2024 07:56
  • 0

Merhaba, Matriks Veri terminali kullanıyor iseniz, eğitim birimi ile irtibata geçip, sistemleri nasıl test edebileceğinizi öğrenmekle başlayınız. Acele etmeyiniz, kendinize zaman veriniz.

  • 30.05.2024 09:00
  • 0