0 beğenilme 0 beğenilmeme
1,301 kez görüntülendi
MOST 3 lü stratejisinin OTT versiyonunu yazabilirmisiniz?
Algoritmik Trading kategorisinde (17 puan) tarafından | 1,301 kez görüntülendi

1 cevap

3 beğenilme 0 beğenilmeme
En İyi Cevap

biraz detay verebilir misiniz yardımcı olmaya çalışayım. Alışta ve satışda farklı periyodlu mostlar mı yoksa  büyük trendi tespit edip boğa ve ayı piyasası için 2 farklı most mu?

edit: hazır stratejilerdeki most 3 den bahsediyormuşsunuz buyrun sadece mostları ott yaptım.

edit2: koddaki hata giderildi.
 

using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.Data.Symbol;
using System.Windows.Media;
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*******************************************************//
//Stratejide 3 MOST indikatörü kullanılır. Most1'in mov'u most2'nin üzerinde iken, MOST2'de bullish cross olursa (mov2  //
//most2'nin üzerine kırarsa) alım, mov2 most2'nin altına kırarsa satım yapılır. Most1'in mov'u most2'nin üzerinde 		//
//değilse most3'e bakılır. MOST3'de bullish cross olursa (mov3 most3'ün üzerine kırarsa) alım, mov3 most3'ün altına 	//
//kırarsa satım yapılır.																								//

namespace Matriks.Lean.Algotrader
{
	public class OTTThree : MatriksAlgo
	{
		[SymbolParameter("GARAN")]
		public string Symbol;
		[Parameter(SymbolPeriod.Min)]
		public SymbolPeriod SymbolPeriod;
		[Parameter(5)]
		public decimal BuyOrderQuantity;
		[Parameter(5)]
		public decimal SellOrderQuantity;

		[Parameter(50)]
		public int Ott1Periyot;
		[Parameter(2.5)]
		public decimal Ott1_Yuzde;
		[Parameter(20)]
		public int Ott2Periyot;
		[Parameter(1.4)]
		public decimal Ott2_Yuzde;
		[Parameter(20)]
		public int Ott3Periyot;
		[Parameter(1.4)]
		public decimal Ott3_Yuzde;

		OTT ott1;

		OTT ott2;

		OTT ott3;

		// indikator tanımları.
		
		/// <summary>
		/// Strateji ilk çalıştırıldığında bu fonksiyon tetiklenir. Tüm sembole kayit işlemleri,
		/// indikator ekleme, haberlere kayıt olma işlemleri burada yapılır. 
		/// </summary>
		public override void OnInit()
		{
			ott1 = OTTIndicator(Symbol, SymbolPeriod, OHLCType.Close,  Ott1Periyot, Ott1_Yuzde, MovMethod.VAR, true);

			ott2 = OTTIndicator(Symbol, SymbolPeriod, OHLCType.Close, Ott2Periyot, Ott2_Yuzde, MovMethod.VAR, true);

			ott3 = OTTIndicator(Symbol, SymbolPeriod, OHLCType.Close, Ott3Periyot, Ott3_Yuzde, MovMethod.VAR, true);
			
			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 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)
		{
			if (ott1.ottLine.CurrentValue > ott1.ottSupportLine.CurrentValue)
			{
				if (CrossAbove(ott2.ottSupportLine, ott2.ottLine))
				{
					SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy);
					Debug("Alış Emri Gönderildi");
				}
				else if (CrossAbove(ott2.ottLine, ott2.ottSupportLine))
				{
					SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell);
					Debug("Satış Emri Gönderildi");
				}
			}
			else
			{
				if (CrossAbove(ott3.ottSupportLine, ott3.ottLine))
				{
					SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy);
					Debug("Alış Emri Gönderildi");
				}
				else if (CrossAbove(ott3.ottLine, ott3.ottSupportLine))
				{
					SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell);
					Debug("Satış Emri Gönderildi");
				}
			}
			
			
		}

		/// <summary>
		/// Gönderilen emirlerin son durumu değiştikçe bu fonksiyon tetiklenir.
		/// </summary>
		/// <param name="barData">Emrin son durumu</param>
		public override void OnOrderUpdate(IOrder order)
		{
			if (order.OrdStatus.Obj == OrdStatus.Filled)
			{

			}
		}
	}
}

 

(390 puan) tarafından
tarafından seçilmiş
1 0

ellerin,ze sağlık çoook teşekkür ederim heart

2 0
public class OTTThree : MatriksAlgo
	{

kısmındaki OTTThree yi silip yerine sizin stratejinizin adını(OTTX3) yazarsanız sorun çözülecektir.

rica ederim iyi çalışmalar.

0 0
Merhaba öncelikle tüm matriks destek ekipine ve kullanıcılara burada paylaşım desteği için teşekkür ederim.

yukarıdaki stratejiyi inceledim bana mantıksal bir hata var gibi geldi.

Öncelikle Anıl Bey'in stratejisinde OTT1 düzlemi alım bölgesi ve satım bölgesi diye ikiye ayırıyor.

Alım bölgesinde almaya istekli satmaya karşı dirençli yani OTT2 nin alım şartı OTT3 ün satım şartı olmalı

kodlara baktığımda Alım bölgesinde alış şartı OTT' satış şartıda OTT2 olarak yorumluyorum

if (CrossAbove(ott2.ottSupportLine, ott2.ottLine))

{ SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy); Debug("Alış Emri Gönderildi");

}

else if (CrossAbove(ott3.ottLine, ott3.ottSupportLine))

{ SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell); Debug("Satış Emri Gönderildi");

}

al bölgesi kodları yukarıdaki gibi olmayacak mı

Sat Bölgesi için ise sistem almak için dirençli satmak için istekli yani OTT2 Parametrelerinden Satış OTT3 parametrelerinden alış yapmalı değilmi?
0 0
merhaba,
Sayın mfas 'ın talep ettiği matriks iq içerisinde hazır bulunan most3 stratejisinin ott versiyonuydu. yukardaki stratejide bu istek doğrultusunda mostları ott yapmak suretiyle hazırlandı. Kodda Ayı ve Boğa piyasasını tespit etmek için 1 adet ott ve ayı ve boğa piyasasında işlerimleri farklı parametrelerle yapmak maksadı ile 2 farklı ott kullanılıyor.
İyi Çalışmalar.
0 0
Sonuç olarak yukarıdaki kodda mantıksal bir hata var mı? Bu haliyle kullanılabilir mi? Ya da Anıl Beyin OTT stratejisine göre daha iyi bir hale nasıl getirilebilir? İyi çalışmalar...
8,643 soru
8,594 cevap
4,826 yorum
19,864 kullanıcı