0 beğenilme 0 beğenilmeme
864 kez görüntülendi
AL KOŞULU
if(MOV(C,10,VAR)>MOST(C,10,0.2),
Cross(MOV(C,3,VAR),MOST(C,3,1.2,VAR)),

Cross(MOV(C,3,VAR),MOST(C,3,0.5,VAR)))

SAT KOŞULU
if(MOV(C,10,VAR)<MOST(C,10,0.2),
Cross(MOST(C,10,0.8,VAR),MOV(C,10,VAR)),

Cross(MOST(C,10,0.2,VAR),MOV(C,10,VAR)))

Şeklinde bir most stratejisi hazır strateji olarak yazabilir miyiz

sistem farklı bölgelerde farklı al ve sat parametreleri kullanıyor gelistirici Syn Anıl Özeksinin Yapay Zeka Most Stratejisi
Algoritmik Trading kategorisinde (87 puan) tarafından | 864 kez görüntülendi

2 Cevaplar

2 beğenilme 0 beğenilmeme

Merhaba,

Most3 stratejisini sizin stratejinize uyarladım. Stratejini adının MostAnilOzeksi  olmasına dikkat ediniz.

 

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;
																							//

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

		// indikator tanımları.
		MOV mov10;
		MOV mov3;
		
		MOST most10_0_2_Exp;
		MOST most10_0_2_Var;
		MOST most10_0_8_Var;
		MOST most3_1_2;
		MOST most3_0_5;

		/// <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()
		{
			AddSymbol(Symbol, SymbolPeriod);
			most10_0_2_Exp = MOSTIndicator(Symbol, SymbolPeriod, OHLCType.Close, 10, 0.2m, MovMethod.Exponential);
			most10_0_2_Var = MOSTIndicator(Symbol, SymbolPeriod, OHLCType.Close, 10, 0.2m, MovMethod.VAR);
			most10_0_8_Var = MOSTIndicator(Symbol, SymbolPeriod, OHLCType.Close, 10, 0.8m, MovMethod.VAR);
			most3_1_2 = MOSTIndicator(Symbol, SymbolPeriod, OHLCType.Close, 3, 1.2m, MovMethod.VAR);
			most3_0_5 = MOSTIndicator(Symbol, SymbolPeriod, OHLCType.Close, 3, 0.5m, MovMethod.VAR);

			mov10 = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, 10, MovMethod.VAR);
			mov3 = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, 3, MovMethod.VAR);
			

			// 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(MOV(C,10,VAR)>MOST(C,10,0.2),
				Cross(MOV(C,3,VAR),MOST(C,3,1.2,VAR)),
				
				Cross(MOV(C,3,VAR),MOST(C,3,0.5,VAR)))
			*/
			
			// Alış
			if (mov10.CurrentValue>most10_0_2_Exp.CurrentValue)
			{
				if (CrossAbove(mov3, most3_1_2))
				{
					SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy);
					Debug("Alış Emri Gönderildi");
				}
				else if (CrossAbove(mov3, most3_0_5))
				{
					SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Buy);
					Debug("Alış Emri Gönderildi");
				}
			}
			
			/*
				if(MOV(C,10,VAR)<MOST(C,10,0.2),
				Cross(MOST(C,10,0.8,VAR),MOV(C,10,VAR)),
				
				Cross(MOST(C,10,0.2,VAR),MOV(C,10,VAR)))
			*/
			
			// Satış
			if (mov10.CurrentValue<most10_0_2_Exp.CurrentValue)
			{
				if (CrossAbove(most10_0_8_Var, mov10))
				{
					SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Sell);
					Debug("Satış Emri Gönderildi");
				}
				else if (CrossAbove(most10_0_2_Var, mov10))
				{
					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)
			{

			}
		}
	}
}

 

(15,572 puan) tarafından
Opt lı Most stratejisi
0 beğenilme 0 beğenilmeme
Merhaba,

Hazır stratejilerdeki Most3 stratejisini inceleyebilirsiniz.
(15,572 puan) tarafından
Most3 strateji uygulama
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.



7,615 soru
7,614 cevap
4,444 yorum
10,795 kullanıcı