0 beğenilme 0 beğenilmeme
2,245 kez görüntülendi

Merhaba,

  1. strateji de kar > = %1 işleme girmesi 
  2. Dışarıdan değiştirme  imkanı 
  3. Backtest yapabilme imkanı 
  4. Kar al zarar durdur değil.
  5. Bu konuda yardımcı olabilir misiniz? 
Algoritmik Trading kategorisinde (51 puan) tarafından | 2,245 kez görüntülendi
0 0
Sanırım bana yardımcı olacak yok
0 0
Aciklamaniz icin tesekkurler.

"%1 Üzerinde Kaldığı yerden if (CrossBelow) koşulları oluştuğunda şatış gerçekleşmesini istiyorum."

%1 uzerine ancak alima gecsin ve normal akisinda devam ederek most negatif cross yaptiginda beklemeden satsin diyorsunuz degil mi?

Bahsettikleriniz IQ'da yapilabilir, aksam bir kod ornegi gondermeye calisacagim.

1 cevap

0 beğenilme 0 beğenilmeme

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);
			}
		}
	}
}

 

(8,035 puan) tarafından
0 0
Efendim paylaşım için çok teşekkür ederim sağolun, hayırlı bol kazançlar
0 0
BOL KAZANÇLAR TEŞEKKÜR EDERİM...
0 0
bu örnek bana da çok yardımcı oldu
0 0
Merhaba. Stratejiyi beğendim ve backtest yaptım gayet güzel sonuçlar. Optimize de ettikten sonra çalıştırdım. Satış ile başlattım ama 2 gündür hiç emir oluşmadım. hedef yüzde  kullanıyorum.
0 0
Hoş geldiniz, Matriks Destek Platformu sizlere sorularınızın hızlıca cevaplanması için bir ortam sağlar. 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.



8,636 soru
8,590 cevap
4,821 yorum
19,789 kullanıcı