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()
{
}
}
}
Merhaba, Sistem ve Optimizasyon ile ilgili bilgileri anıl hocanın eğitimlerinde bulabilirsiniz.
Egitimde gosterilen 4B-REFli versiyonun LONG ve SHORT aciga satisli versiyonunu da yapabilir misiniz acaba?
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.
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?
Merhaba, kod bloğuna uygulama üzerinden stratejiyi/indikatörü kopyaladığınızda ulaşabilirsiniz.
Merhaba Akın Bey, Sistemi Açığa sat ve Time stamp'li olarak IQ ya uyarlamanızı rica edebilir miyiz ?
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