Basit tma hullma
- Soruldu
- Kategori
- Algoritmik Trading
- Görüntülenme
- 709 görüntülenme
- Durum
- Cevaplandı
satış emir bölümü RSI 9 70 i aşağı kırdığında sat. 82 yi yukarı kırdığında sat olacak şekilde yardımcı olacak arkadaşlara çok teşekkür ederim..
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.
Merhabalar,
Dilerseniz aşağıdaki yapıyı 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.AlgoTrader;
using Matriks.Trader.Core;
using Matriks.Trader.Core.Fields;
using Matriks.Trader.Core.TraderModels;
using Matriks.Lean.Algotrader.AlgoBase;
using Matriks.Lean.Algotrader.Models;
using Matriks.Lean.Algotrader.Trading;
//===========================================ACIKLAMA=======================================//
// Bu statejide TMA VE HullMA indikatörleri birlikte kullanılmıştır. //
// Eğer grafikte fiyat çubukları HullMA bandını yukarı kırarsa ve o anki hullMA değeri, //
// TMA değerinin altındaysa al emri gönderilecek. //
// Eğer grafikte fiyat çubukları HullMA bandını aşağı kırarsa ve o anki hullMA değeri, //
// TMA değerinin üstündeyse sat emri gönderilecek. //
// Emirler piyasa fiyatından gönderilecektir. //
// Emir gönderimi ile birlikte strateji raporunda Debug sekmesine "Alış emri gönderildi." //
// ve "Satış emri gönderildi." ifadesi yazdırılmaktadır. //
namespace Matriks.Lean.Algotrader
{//strateji ismini burada deklare ediyoruz. Dosyada ki isimle stratejide yazılan isim tamamen aynı olmalıdır. (küçük büyük harf duyarlı)
public class projektll : MatriksAlgo
{
//canlı, backtest ve backtest optimization kısımlarında değiştirilebilir olması istenilen parametreler bu bölümde yazılır
// Strateji çalıştırılırken kullanacağımız parametreler. Eğer sembolle ilgili bir parametre ise,
[SymbolParameter("XU100")]
public string Symbol;//Sembol ismi
[Parameter(SymbolPeriod.Day)]
public SymbolPeriod SymbolPeriod;//Stratejiyi çalıştırmak istediğimiz bar periyodu
[Parameter(22)]
public int HullMAPeriod;//Moving average periyodu için kullanacağımız parametre
[Parameter(12)]
public int TmaPeriod;//RSI periyodu için kullanacağımız parametre
[Parameter(9)]
public int RsiPeriod1;
[Parameter(100)]
public decimal BuyOrderQuantity; //alım miktarı için kullanacağımız parametre
[Parameter(100)]
public decimal SellOrderQuantity; //satım miktarı için kullanacağımız parametre
TMA tma;//TMA indikatörü türünde tma isminde bir obje tanımlıyoruz
HullMA hullMA;//HullMA indikatörü türünde hullMA isminde bir obje tanımlıyoruz
RSI rsi;
public override void OnInit()
{
//tanımladığımız objelere indikatör tanımlarını ve gerekli değerleri atıyoruz
hullMA = HullMAIndicator(Symbol, SymbolPeriod, OHLCType.Close, HullMAPeriod);
tma = TMAIndicator(Symbol, SymbolPeriod, OHLCType.Close, TmaPeriod);
rsi = RSIIndicator(Symbol, SymbolPeriod, OHLCType.Close, RsiPeriod1);
//Sembol ve periyoduna kayıt
AddSymbol(Symbol, SymbolPeriod);
// Algoritmanın kalıcı veya geçici sinyal ile çalışıp çalışmayacağını belirliyoruz.
//true değer, algoritmanın sadece yeni bar açılışlarında çalışmasını sağlar, bu
//fonksiyonu çağırmazsak veya false olarak belirlersek her işlem olduğunda algoritma tetiklenecektir.
WorkWithPermanentSignal(true);
//Eger backtestte emri bir al bir sat seklinde gonderilmesi isteniyor bu true set edilir.
//Alttaki satırı silerek veya false geçerek emirlerin sirayla gönderilmesini engelleyebilirsiniz.
SendOrderSequential(true);
}
//Kayıt olunan sembol veya indikatörler güncellendikçe bu fonksiyon tetiklenir.
//Dolayısıyla asıl al/sat stratejisini yazacağımız bölümdür
public override void OnDataUpdate(BarDataEventArgs barData)
{
var barDataModel = GetBarData();
//Bu koşul alım emri içindir. Eğer grafikte fiyat çubukları hullMA bandını yukarı kırarsa ve
//o anki hullMA değeri, tma değerinin altındaysa al emri gönderilecek.
if (CrossAbove(barDataModel, hullMA, OHLCType.Close, 0) && hullMA.CurrentValue<tma.CurrentValue)
{
//Parametrelerde belirlenen sembolden, belirlenen miktarda, piyasa fiyatından alış emri gönderir
SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy);
//bar kapanışını debug penceresine basar
Debug("Close = " + barData.BarData.Close);
//HullMA değerini debug penceresine basar
Debug("HullMA = " + hullMA.CurrentValue);
//TMA değerini debug penceresine basar
Debug("TMA = " + tma.CurrentValue);
//"" içerisinde bulunan ifadeyi debug penceresine basar
Debug("Alış Emri Gönderildi");
}
//Bu koşul satım emri içindir. Eğer grafikte fiyat çubukları hullMA bandını aşağı kırarsa ve
//o anki hullMA değeri, tma değerinin üstündeyse sat emri gönderilecek.
if (CrossBelow(rsi, 70m, 0) || CrossAbove(rsi, 82m, 0))
{
//Parametrelerde belirlenen sembolden, belirlenen miktarda, piyasa fiyatından satış emri gönderir
SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell);
//bar kapanışını debug penceresine basar
Debug("Close = " + barData.BarData.Close);
//HullMA değerini debug penceresine basar
Debug("HullMA = " + hullMA.CurrentValue);
//TMA değerini debug penceresine basar
Debug("TMA = " + tma.CurrentValue);
//"" içerisinde bulunan ifadeyi debug penceresine basar
Debug("Satış Emri Gönderildi");
}
}
/// <summary>
/// Strateji durdurulduğunda bu fonksiyon tetiklenir.
/// </summary>
public override void OnStopped()
{
}
}
}
İ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ı