0 beğenilme 0 beğenilmeme
326 kez görüntülendi
Merhaba, çok basit bir strateji soracağım. Hisse örneğin "3.54'in altını görürse sat" stratejisi oluşturmak istiyorum. Sadece 1 hissede çalıştıracağım ve çalıştıracağım hisseye göre değeri düzenle içinde değiştireceğim. Benim için bir çeşit stoploss olacak.

close<3.54 ve crossbelov'u denedim olmadı, yardımcı olursanız sevinirim. Teşekkürler
Algoritmik Trading kategorisinde (310 puan) tarafından | 326 kez görüntülendi

1 cevap

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

Merhaba,

Aşağıdaki örneği inceleyebilirsiniz.

Strateji adının Test  olmasına dikkat ediniz.

***STRATEJİLERİ TEST/DENEME ORTAMINDA SINAMADAN VE SİZİN İSTEDİĞİNİZ ŞEKİLDE ÇALIŞTIĞINA EMİN OLMADAN GERÇEK ORTAMDA HİÇBİR ZAMAN ÇALIŞTIRMAYINIZ ***

using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.Data.Symbol;
using Matriks.Engines;
using System.Windows.Media;
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 Test : 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.Min5)]
		public SymbolPeriod SymbolPeriod;
		
		[Parameter(1)]
		public int Quantity;
		
		[Parameter(3.54)]
		public decimal Seviye;

		
		public override void OnInit()
		{
			AddSymbol(Symbol, SymbolPeriod);

			//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);
			WorkWithPermanentSignal(true);
		}

		public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues)
		{
			var Close=barDataCurrentValues.LastUpdate.Close;
						
			if(Close<Seviye){
				SendMarketOrder(Symbol,Quantity,OrderSide.Sell);
				Debug("Satış emri gönderildi");
			}

		}		
	}
}

 

(7,822 puan) tarafından
tarafından seçilmiş
0 0
çok çok teşekkür ederim kripex
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.



6,800 soru
6,811 cevap
4,107 yorum
5,348 kullanıcı