Hazır Algo ya Farklı Periyot Ekleme
- Soruldu
- Kategori
- Algoritmik Trading
- Görüntülenme
- 1.320 görüntülenme
- Durum
- Çözüldü
Matriks Ürünleri ile ilgili tüm sorularınız için bizlere buradan ulaşabilirsiniz. Daha önce sorulan soruları ve verilen cevapları ilgili sekmelerden ve arama üzerinden inceleyebilirsiniz. Sağ taraftaki kategoriler üzerinden İlgilendiğiniz özelliklerle ilgili soruları filtreleyebilirsiniz. Soru ve cevapları sosyal medyada paylaşabilirsiniz. Sorduğunuz ve cevapladığınız soruların ve yorumlarınızın aldığı oylar üzerinden puan kazanırsınız. Puan sistemine bağlı kampanyamızla ücretsiz kullanım avantajlarından faydalanabilirsiniz.
Kabul edilen cevap
Merhaba, istediğiniz işlemin örneklerini daha önceden hem MatriksIQ teknik dokümanında hem de forumda verdik.Teknik dokümanımızı detaylı incelemenizi tavsiye ederiz. Özellikle kodlama kısmında kullanıcılarımıza yardımcı olacak içerikler bulunmakta.
MatriksIQ teknik dokümanının linki (İstediğiniz örnek "Nasıl Yapılır/ SSS" başlığının altındadır"):
https://matriksiq.matriksdata.com/Algo_Trader_IQ.pdf
Forumda benzer bir soruya verdiğimiz örnek:
https://destek.matriksdata.com/?qa=24/stratejiyi-2-farklı-periyotta-çalıştırabilir-miyim&show=24#q24
Sizin için hazırladığımız CrossMov stratejisinin düzenlenmiş hali :
Not:Strateji oluştururken, oluşturduğunuz strateji ile bizim paylaştığımız strateji adlarının aynı olmasına dikkat ediniz.
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;
namespace Matriks.Lean.Algotrader
{
public class CrossMov2 : 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 SymbolPeriodAl;
[Parameter(SymbolPeriod.Min60)]
public SymbolPeriod SymbolPeriodSat;
[Parameter(5)]
public decimal BuyOrderQuantity;
[Parameter(5)]
public decimal SellOrderQuantity;
[Parameter(5)]
public int MovPeriodAl;
[Parameter(22)]
public int MovPeriodAl2;
[Parameter(5)]
public int MovPeriodSat;
[Parameter(22)]
public int MovPeriodSat2;
// indikator tanımları.
MOV mov, mov2, mov3, mov4;
public override void OnInit()
{
AddSymbol(Symbol, SymbolPeriodAl);
mov = MOVIndicator(Symbol, SymbolPeriodAl, OHLCType.Close, MovPeriodAl, MovMethod.Exponential);
mov2 = MOVIndicator(Symbol, SymbolPeriodAl, OHLCType.Close, MovPeriodAl2, MovMethod.Exponential);
AddSymbol(Symbol, SymbolPeriodSat);
mov3 = MOVIndicator(Symbol, SymbolPeriodSat, OHLCType.Close, MovPeriodSat, MovMethod.Exponential);
mov4 = MOVIndicator(Symbol, SymbolPeriodSat, OHLCType.Close, MovPeriodSat2, MovMethod.Exponential);
WorkWithPermanentSignal(true);
SendOrderSequential(true);
}
/// <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 (barData.PeriodInfo.Equals(SymbolPeriodAl.ToPeriodInfo()))
{
if (CrossAbove(mov, mov2))
{
SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy);
Debug("Alış Emri Gönderildi");
Debug("Alış sinyallerinin alındığı symbol periodu : " + barData.PeriodInfo + "\n");
}
}
if (barData.PeriodInfo.Equals(SymbolPeriodSat.ToPeriodInfo()))
{
if (CrossBelow(mov3, mov4))
{
SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell);
Debug("Satış Emri Gönderildi");
Debug("Satış sinyallerinin alındığı symbol periodu : " + barData.PeriodInfo + "\n");
}
}
}
}
}
İyi çalışmalar
Sitenin çalışması için gerekli çerezleri kullanıyoruz. Ziyaretleri anlamak için analitik çerezleri yalnızca onayınızla kullanırız. Çerez Politikası