0 beğenilme 0 beğenilmeme
2,255 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,255 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
Merhaba bu bitmexte oluyor degil mi? %1 min kar alıyor ve yukselişe gecerse dewam ediyor degil mi daha sonra sat nasıl oluyor? Şimdiden tesekkürler
0 0
Rica ederiz. Anlayisiniz ve taktiriniz icin ben tesekkur ederim.

Strateji detayli incelemeniz olumlu olmus. Ayrintili notlariniz icin de tesekkur ederim. Istediginiz gibi degistirecegim. Yalniz not etmek isterim, onceki anladigim haliyle "equity curve trading" benzeri bir metoda benziyordu stratejiniz. Bu nispeten yeni ve iyi sonuclar verebilen bir yontem, tabi tam olarak bunu uygulamis olmadik stratejinizde ama o yondeydi.

Yeni haliyle ise "kar zorlama" stratejisi diyebilecegim bir hale donuyor. zarar durduru da olmadigi icin, ilk yazdigimiz strateji aslinda teknik olarak daha karli/mantikli olabilir gibi gozukuyor.
1 0
Emeğinize sağlık Yardımcı olduğunuz için teşekkür ederim...

 

Yeni stratejiyi de sabırsızlıkla bekliyorum...

Sonuçta Algoritma hayalleri gerçeğe gercekleştirme dünyası
0 0
Merhaba, strateji mail adresinize gonderilmistir. Bu sefer de baska nedenlerden dolayi test edemedim, inceleyip geri donus yapabilirsiniz.
1 0
Merhaba,

Emeklerinize sağlık Teşekkür ederim...
0 0
Bu stratejiyi görme ve test etme imkanımız varmı? eğer uygunsa burdan yayınlayabilirmisiniz?
0 0
Merhaba strateji kullanicimizin oldugu icin yukaridaki kadariyla paylasabiliyoruz, daha sonra yapilan degisiklikler icin kendisiyle iletisime gecebilirsiniz.
0 0
Hocam hayırlı akşamlar.Rica etsem stratejiyi paylaşmanız mümkün mü acaba? Saygılarımla...
2 0

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;

}

}

}

}

 

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,799 kullanıcı