Değerli Matriks İQ Destek Ekibi ve kıdemli kullanıcılar;
(Önemli rica: Mümkünse bu soruya yazı ile değil, kısa ve eğitici bir video ile yanıt verin. Algoritma kurgusu, matriks iq, c# hakkındaki önemli noktalara dikkat çekerek nereye nasıl kod yazacağımı ve sisteme nasıl hakim olabileceğimi de paylaşabilirseniz sevinirim.)
Öncelikle Anıl Hoca'nın kodlarını Matriks İQ kütüphanesinde kullanıma sunduğunuz için emeği geçen herkese teşekkür ederim. Öğrenmek için çok iyi bir kaynak. Yaklaşık 1.5 yıldır algoritmik trading ile mesai harcamaya çalışıyorum. Çok kısıtlı olan eğitimlere Anıl Özekşi, Kıvanç Özbilgiç in youtube ve Borfin'deki eğitimlerini bir kaç defa ( her videolarını ) izledikten sonra sevgili Recep Toğaçer (
VIDEO
) ve çok değerli Özkan Aksular (
VIDEO
) ın yarım kalmış Matriks İQ da yazım rehberinden öğrenmeye çalışıyorum. Prime da başlayan algoritmik trading serüvenim İQ da devam edecek çünkü gelecek İQ da.
FirsatciTrend-4Bölge-Çift-Yön 4 bölgeli bir sistemde (x 2) olarak alım-satım yapan değil de farklı koşullarda çalışan long ve short robotları kurgulamak istiyorum. Ancak olduramadım :)
Deneme yanılma ile öğrenmek için saatler hatta günler süren 200-300 adet backtest yaparak kodları denedikten sonra kalıcı bir öğrenme çözümü bulmaya çalışıyorum.
Anıl hoca'nın çok sevdiğim ve saygı duyduğum sözü:" Size balık vermem ama balık tutmayı öğretirim" !!! Bu arada son kullanıcı olarak öğrenebildiklerim çerçevesinde yorumum; sevgili Anıl hoca ve Kıvanç hoca bizlere sadece balık tutma malzemelerini öğretti !!! Bu malzemeler her ne kadar çok kıymetli olsa da, balık tutabilmek için o malzemeleri ne zaman, nasıl, niçin kullanabileceğimi ve malzeme verimi düştüğünde ne yapacağımı öğretmediler... Bu yüzden Recep ve Özkan beyin linklerini özellikle paylaştım ki gelecekte belki Matriks İQ bünyesinde daha verimli paylaşımlar oluşturabilirler...
Lütfen birileri şu balığı tutmayı öğretmeye yardımcı olsun.
Short Robotun:
Majör Trend OTT(100,1)
ott.Value[1][ott.CurrentIndex] < ott.Value[0][ott.CurrentIndex] koşulu sağlandığında short robotu devreye girsin.
minör TOTT(30, 0.6,0.0001) MOV aşağıda olduğunda
Açığa satış yapmak istiyorum.
Kod içerisindeki mantıksal kurguyu bir daha inceleyip düzelttiğimde de long robot işlemleri devre dışı kaldı ve tamamen short ağırlıklı olarak işlem yapar hale geldi...
Long Robot alım yapıyor son işlemde ancak, short kapatamıyor ve yükelişi kaçırıyor bu sefer.
işte ben bunları birleştirmek istiyorum
Kodumun son hali aşağıdaki gibi:
using System;
using System.Collections.Generic;
using System.Linq;
using Matriks;
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 V2FirsatciTrend4BolgeCiftYon : MatriksAlgo
{
/// <summary>
/// Strateji LONG ve SHORT işlem yapmaktadır.
/// Açığa satış parametresi seçildiğinde ilk emir belirlenen lot kadar gönderilir ikinci emir ve sonraki emirler 2x olarak gönderilir.
/// örn. 1 lot ile ilk emir gönderilirse sonraki emirler 2 olarak gönderilir.
/// Strateji BIST - VIOP - BINANCE (timestamp kontrollü) için uygundur.
/// ZamanKullanilsinMI parametresi EVET seçildiğinde zamana göre çalışır. Hayır seçildiğinde zamandan bağımsız olrak çalışır.
/// MAJOR trend parametresi bir kez girilmektedir.
/// kaldıraç,AyniEmirKacSeferGonderilsin ve KacSaniyeSonraTekrarGonderilsin parametreleri sadece strateji Binance'de çalıştırıldığında geçerlidir.
///
/// Parametre Girişleri 4 bölge olarak girilmektedir.
///
/// _________________________________/ LONG \________________________________________1.BÖLGE
//if(MOV(C,15,VAR)>OTT(C,15,7),
//MOV(C,25,VAR)>OTT(C,25,0.6)*(1+0.025)
//AND STOSK(300,150,33,VAR)+1000>OTT(STOSK(300,150,33,VAR)+1000,2,0.4)
//AND H>OTT(HHV(H,16/2),2,0.4)
//AND H>REF(HHV(H,16),-1),
/// _________________________________________________________________________________2.BÖLGE
//MOV(C,15,VAR)>(OTT(C,15,3)+REF(OTT(C,15,3)-(OTT(C,15,7)-OTT(C,15,3)),-100))/2 AND
//MOV(C,15,VAR)>OTT(C,15,0.6)*(1+0.0006)
//AND STOSK(150,150,33,VAR)+1000>OTT(STOSK(150,150,33,VAR)+1000,2,0.3)
//AND H>OTT(HHV(H,22/2),2,0.4) AND H>REF(HHV(H,22),-1))
/// ____________________________/ LONG KAPAMA \_______________________________________3.BÖLGE
//if(MOV(C,15,VAR)>OTT(C,15,7),
//MOV(C,30,VAR)<OTT(C,30,0.6)*(1-0.025)
//AND STOSK(250,150,33,VAR)+1000<OTT(STOSK(250,150,33,VAR)+1000,2,0.2)
//AND L<OTT(LLV(L,46/2),2,0.4)
//AND L<REF(LLV(L,46),-1),
/// __________________________________________________________________________________4.BÖLGE
//MOV(C,15,VAR)<OTT(C,15,0.6)*(1-0.0008)
//AND STOSK(150,150,33,VAR)+1000<OTT(STOSK(150,150,33,VAR)+1000,2,0.4)
//AND L<OTT(LLV(L,46/2),2,0.4) AND L<REF(LLV(L,46),-1))
/// </summary>
[SymbolParameter("GUBRF")]
public string Symbol1;
[Parameter(SymbolPeriod.Min)]
public SymbolPeriod SymbolPeriod1;
/// _________________________________/ LONG \________________________________________1.BÖLGE
// if(MOV(C,20,VAR)>OTT(C,20,7),
[Parameter(15)]
public int MajorTrend_OttPeriod;
[Parameter(3)]
public decimal MajorTrend_OttOPT;
//MOV(C,40,VAR)>OTT(C,40,0.6)*(1+0.0004)
[Parameter(25)]
public int MinorTrend_TottPeriod;
[Parameter(0.6)]
public decimal MinorTrend_TottOPT;
[Parameter(0.025)]
public decimal MinorTrend_TottTwinOttCoef;
//AND STOSK(300,200,33,VAR)+1000>OTT(STOSK(300,200,33,VAR)+1000,2,0.4)
[Parameter(300)]
public int MinorTrend_SottPeriodK;
[Parameter(150)]
public int MinorTrend_SottPeriodSlowK;
[Parameter(2)]
public int MinorTrend_SottOttPeriod;
[Parameter(0.4)]
public decimal MinorTrend_SottOttOPT;
//AND H>OTT(HHV(H,16/2),2,0.4)
[Parameter(16)] // buraya yazılan periyot kod içerisinde 2 ye bölünür. --> 16/2
public int MinorTrend_HHV;
[Parameter(2)]
public int MinorTrend_HOttPeriod;
[Parameter(0.4)]
public decimal MinorTrend_HOttOpt;
//AND H>REF(HHV(H,16),-1),
[Parameter(16)]
public int MinorTrend_REFHHV;
/// ______________________________________/ Fırsatçı Trend \___________________________________________2.BÖLGE
//MOV(C,20,VAR)>(OTT(C,20,3)+REF(OTT(C,20,3)-(OTT(C,20,7)-OTT(C,20,3)),-100))/2
[Parameter(15)]
public int FirsatciTrend_OttPeriod;
[Parameter(3)]
public decimal FirsatciTrend_OttOpt;
//AND MOV(C,20,VAR)>OTT(C,20,0.6)*(1+0.0006)
[Parameter(20)]
public int MinorTrend2_TottPeriod;
[Parameter(0.6)]
public decimal MinorTrend2_TottOpt;
[Parameter(0.0006)]
public decimal MinorTrend2_TottTwinOttCoef;
//AND STOSK(200,200,33,VAR)+1000>OTT(STOSK(200,200,33,VAR)+1000,2,0.3)
[Parameter(200)]
public int MinorTrend2_SottPeriodK;
[Parameter(200)]
public int MinorTrend2_SottPeriodSlowK;
[Parameter(2)]
public int MinorTrend2_SottOttPeriod;
[Parameter(0.3)]
public decimal MinorTrend2_SottOttOpt;
//AND H>OTT(HHV(H,22/2),2,0.4)
[Parameter(22)]
public int MinorTrend2_HHV;
[Parameter(2)]
public int MinorTrend2_HOttPeriod;
[Parameter(0.4)]
public decimal MinorTrend2_HOttOpt;
//AND H>REF(HHV(H,22),-1))
[Parameter(22)]
public int MinorTrend2_REFHHV;
///
/// ____________________________/ LONG KAPAMA \_______________________________________3.BÖLGE
// MOV(C,30,VAR)<OTT(C,30,0.6)*(1-0.0004)
[Parameter(30)]
public int MinorTrend3_TottPeriod;
[Parameter(0.6)]
public decimal MinorTrend3_TottOpt;
[Parameter(0.0004)]
public decimal MinorTrend3_TottTwinOttCoef;
//AND STOSK(250,200,33,VAR)+1000<OTT(STOSK(250,200,33,VAR)+1000,2,0.2)
[Parameter(250)]
public int MinorTrend3_SottPeriodK;
[Parameter(200)]
public int MinorTrend3_SottPeriodSlowK;
[Parameter(2)]
public int MinorTrend3_SottOttPeriod;
[Parameter(0.2)]
public decimal MinorTrend3_SottOttOpt;
//AND L<OTT(LLV(L,46/2),2,0.4)
[Parameter(46)]
public int MinorTrend3_LLV;
[Parameter(2)]
public int MinorTrend3_LOttPeriod;
[Parameter(0.4)]
public decimal MinorTrend3_LOttOpt;
// AND L<REF(LLV(L,46),-1),
[Parameter(46)]
public int MinorTrend3_REFLLV;
/// __________________________________________________________________________________4.BÖLGE
//MOV(C,20,VAR)<OTT(C,20,0.6)*(1-0.0008)
[Parameter(20)]
public int MinorTrend4_TottPeriod;
[Parameter(0.6)]
public decimal MinorTrend4_TottOpt;
[Parameter(0.0008)]
public decimal MinorTrend4_TottTwinOttCoef;
//AND STOSK(200,200,33,VAR)+1000<OTT(STOSK(200,200,33,VAR)+1000,2,0.4)
[Parameter(200)]
public int MinorTrend4_SottPeriodK;
[Parameter(200)]
public int MinorTrend4_SottPeriodSlowK;
[Parameter(2)]
public int MinorTrend4_SottOttPeriod;
[Parameter(0.4)]
public decimal MinorTrend4_SottOttOpt;
//AND L&