Merhaba,
- strateji de kar > = %1 işleme girmesi
- Dışarıdan değiştirme imkanı
- Backtest yapabilme imkanı
- Kar al zarar durdur değil.
- Bu konuda yardımcı olabilir misiniz?
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.
Merhaba,
Merhaba, istediginiz strateji ektedir. Malum saat gec oldugundan fazla test edemedim. Siz isterseniz kripto piyasalarinda, matriks deneme ortami ya da Bitmex testnet uzerinden stratejiyi test edebilirsiniz. Yapmak istediginiz degisiklik/duzeltme olursa yazin, Pazartesi yapariz.
***STRATEJILERI TEST/DENEME ORTAMINDA SINAMADAN VE SIZIN ISTEDIGINIZ SEKILDE CALISTIGINA EMIN OLMADAN GERCEK ORTAMDA HIC BIR ZAMAN CALISTIRMAYIN***
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;
/*Örnek : Most stratejisinde ASELS 16.91 Alım işlemi gerçekleşti.
Alımı bir yere yazdırması veya kendi içinde 16.91 tutması ve %1 ve üzerinde kâr görene kadar strateji beklemede kalarak 17.08 üzerinde yani %1
Üzerinde Kaldığı yerden if (CrossBelow) koşulları oluştuğunda şatış gerçekleşmesini istiyorum.
%1 dışardan değiştirme imkanı olabilmesi.
%1 kar koşulu olabilmesi için gerekirse günlerce stratejim çalışsın
Aradığım kar al zarar durdur değil.
Yani mutlak kâr gördüğünde üzerinde işleme kaldığı yerden devam edebilmesi.
Umarım açıklayıcı olabilmiştir teşekkür ederim */
namespace Matriks.Lean.Algotrader
{
public class mostStratejisi_mod : 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.Min)]
public SymbolPeriod SymbolPeriod;
[Parameter(1)]
public decimal BuyOrderQuantity;
[Parameter(1)]
public decimal SellOrderQuantity;
[Parameter(3)]
public int Period;
[Parameter(2)]
public decimal Percentage;
[Parameter(1)]
public decimal HedefYuzde;
MOST most;
public decimal hedefFiyat = 0;
public override void OnInit()
{
most = MOSTIndicator(Symbol, SymbolPeriod, OHLCType.Close, Period, Percentage, MovMethod.Exponential);
AddSymbol(Symbol, SymbolPeriod);
// Algoritmanın kalıcı veya geçici sinyal ile çalışıp çalışmayacağını belirleyen fonksiyondur.
// true geçerseniz algoritma sadece yeni bar açılışlarında çalışır, bu fonksiyonu çağırmazsanız veya false geçerseniz her işlem olduğunda algoritma tetiklenir.
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);
}
/// <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(BarDataCurrentValues barDataCurrentValues)
{
var BarDataModel = GetBarData();
var close = BarDataModel.Close[barDataCurrentValues.LastUpdate.BarDataIndex - 1];
if (CrossAbove(most.ExMOV, most))
{
Debug("Alim kosulu olustu. Fiyat = " + close);
hedefFiyat = close * (1+HedefYuzde/100);
Debug("Hedef fiyat olusturuldu = " + hedefFiyat);
}
if (close >= hedefFiyat && hedefFiyat!=0 && most.ExMOV.CurrentValue > most.CurrentValue)
//Hala MOST'un alim durumunda olmasi bekleniyor, yoksa emir gonderilmeyecektir "&& most.ExMOV.CurrentValue > most.CurrentValue" kismini silerek bu sarti kaldirabilirsiniz
{
Debug("Alim kosulu olustu. Fiyat = " + close );
SendMarketOrder(Symbol, BuyOrderQuantity, (OrderSide.Buy));
Debug("Alış emri verildi.");
Debug("Most.ExMov:" + most.ExMOV.CurrentValue);
Debug("Most:" + most.CurrentValue);
hedefFiyat = 0;
}
if (CrossBelow(most.ExMOV, most))
{
SendMarketOrder(Symbol, SellOrderQuantity, (OrderSide.Sell));
Debug("Satış emri verildi.");
Debug("Most.ExMov:" + most.ExMOV.CurrentValue);
Debug("Most:" + most.CurrentValue);
}
}
}
}
--------------------------------------------------------------------------------------------------
Önemli Linkler:
MatriksIQ Yardım Dokumanı
MatriksIQ Algo Teknik Dokuman
MatriksIQ’nun öne çıkan özellikleri - Canlı Yayın'dan kayıt
MatriksIQ Videolar
IQ Algoritma Sihirbazını Nasıl Kullanırız
Merhaba stratejinin son halini paylaşıyorum...
Not: Çok dikkat etmeniz gerek terste kalırsanız stop noktanıza uyunuz çünkü stratejisi kar alma üzerine kuruludur iyi günler...
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;
/*Örnek : Most stratejisinde ASELS 16.91 Alım işlemi gerçekleşti.
Alımı bir yere yazdırması veya kendi içinde 16.91 tutması ve %1 ve üzerinde kâr görene kadar strateji beklemede kalarak 17.08 üzerinde yani %1
Üzerinde Kaldığı yerden if (CrossBelow) koşulları oluştuğunda şatış gerçekleşmesini istiyorum.
%1 dışardan değiştirme imkanı olabilmesi.
%1 kar koşulu olabilmesi için gerekirse günlerce stratejim çalışsın
Aradığım kar al zarar durdur değil.
Yani mutlak kâr gördüğünde üzerinde işleme kaldığı yerden devam edebilmesi.
Umarım açıklayıcı olabilmiştir teşekkür ederim */
/*1-Örneğin : MOST, if (CrossAbove(most.ExMOV, most)) kesişiminden normal alması gereken yerden
Alım gönderildi 16.91 Al işlemi yapıldı.
2 - Most, Alım noktasından %1 kar (17.08) veya yukarısın da iken if (CrossBelow(most.ExMOV, most))
17.08 ve üzerinde nerede DENK gelip kesişim yaparsa SAT işlemi yapılsın,
aranan şart %1 ve üzerinde normal akışına devam edecek if (CrossBelow(most.ExMOV,most)) çalışmasıdır.
3- Aksi halde kar %1 altında ise if (CrossBelow(most.ExMOV,most)) bekleme de kalsın...
4- Public %1 dışardan değiştirme imkanı olması.
5- Bütün sıralı al sat işlemlerinde de bu şart aransın...*/
namespace Matriks.Lean.Algotrader
{
public class mostStratejisi_mod2 : 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("ASELS")]
public string Symbol;
[Parameter(SymbolPeriod.Min)]
public SymbolPeriod SymbolPeriod;
[Parameter(1)]
public decimal BuyOrderQuantity;
[Parameter(1)]
public decimal SellOrderQuantity;
[Parameter(2)]
public int Period;
[Parameter(2.027)]
public decimal Percentage;
[Parameter(1)]
public decimal HedefYuzde;
MOST most;
public decimal hedefFiyat = 0;
[Parameter(false)]
public bool AlisIleBasla;
public override void OnInit()
{
most = MOSTIndicator(Symbol, SymbolPeriod, OHLCType.Close, Period, Percentage, MovMethod.Exponential);
AddSymbol(Symbol, SymbolPeriod);
// Algoritmanın kalıcı veya geçici sinyal ile çalışıp çalışmayacağını belirleyen fonksiyondur.
// true geçerseniz algoritma sadece yeni bar açılışlarında çalışır, bu fonksiyonu çağırmazsanız veya false geçerseniz her işlem olduğunda algoritma tetiklenir.
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(false);
}
/// <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(BarDataCurrentValues barDataCurrentValues)
{
var BarDataModel = GetBarData();
var close = BarDataModel.Close[barDataCurrentValues.LastUpdate.BarDataIndex - 1];
if (CrossAbove(most.ExMOV, most) && AlisIleBasla == true)
{
SendMarketOrder(Symbol, BuyOrderQuantity, (OrderSide.Buy));
Debug("Alış Emri Verildi.");
Debug("Most.ExMov:" + Math.Round(most.ExMOV.CurrentValue, 2));
Debug("Most:" + Math.Round(most.CurrentValue, 2));
hedefFiyat = close * (1 + HedefYuzde / 100);
Debug("Hedef fiyat olusturuldu = " + hedefFiyat);
AlisIleBasla = false;
}
if (CrossBelow(most.ExMOV, most)&& AlisIleBasla == false)
{
Debug("Indikator satis kosulu olustu, hedef fiyat kontrol edilecek");
Debug("Most.ExMov:" + Math.Round(most.ExMOV.CurrentValue, 2));
Debug("Most:" + Math.Round(most.CurrentValue, 2));
if (close >= hedefFiyat && hedefFiyat != 0)
{
Debug("Satis kosulu mevcut. Fiyat = " + close + "Hedef Fiyat = " + hedefFiyat);
SendMarketOrder(Symbol, SellOrderQuantity, (OrderSide.Sell));
Debug("Satış Emri Verildi");
hedefFiyat = 0;
}
else Debug("Hedef fiyata ulasilamadi, strateji beklemede kalacak.");
}
if (most.ExMOV.CurrentValue < most.CurrentValue && close >= hedefFiyat && hedefFiyat != 0)
//SendOrderSequential(true) oldugu icin ek pozisyon kontrolune gerek yoktur. Pozisyon olmadigi durumda strateji Debug'a satis basacak ama satis yapamayacaktir.
{
Debug("Satis kosulu mevcut. Fiyat = " + close + "Hedef Fiyat = " + hedefFiyat);
SendMarketOrder(Symbol, SellOrderQuantity, (OrderSide.Sell));
Debug("Satış Emri Verildi");
Debug("Most.ExMov:" + Math.Round(most.ExMOV.CurrentValue, 2));
Debug("Most:" + Math.Round(most.CurrentValue, 2));
hedefFiyat = 0;
AlisIleBasla = true;
}
}
}
}
merhaba,
linkteki konuyu inceleyebilirsiniz.
https://destek.matriksdata.com/?qa=6588/stratejiyi-%C3%A7ali%C5%9Ftiriyorum-al-sat-yapmiyor
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ı