0 beğenilme 0 beğenilmeme
1,884 kez görüntülendi
Merhaba mumlar en altta iken kapanis yaptiginda satin almasini istiyorum ve mumlar en ustte kapanis yaptiginda satmasini istiyorum nasil yapabilirim? Rsi ,mum dusukte kapanis yatiktan sonra rsi yukselise gectiginde alis yapsin ve macd kesistiginde atlama olursa mumun kapanisinda atlama olursa macd kesismesinde alsin Simdiden tesekkur ederim.. bir eklemek istedigim birsey daha var 1 dakikalik ve suresini ayarlamakta istiyorum dakikalik,5dakikalik v.s Satis icin tavanda ornegin 1 dakikalik kapanis yapildiginda satis islemi geerceklessin rsi asagi yone seyir verdiginde ve eger atlama olursa macd kesismesinde satisi versin gibi simdiden tesekkurler
Algoritmik Trading kategorisinde (22 puan) tarafından | 1,884 kez görüntülendi

2 Cevaplar

0 beğenilme 0 beğenilmeme

Merhaba,

Strateji ornegi asagidadir. mum altta kapandiktan sonra tetiklenir, RSI'in yukselise gecmesini ve MACD'nin pozitif sinyalde olmasini bekler.

RSI'in yukselise ya da dususe gectigi 2 periyottan sonra karar verilir. Yani RSI icin son barda ve bir onceki barda da yukseliyor olmasi sarti aranir.

RSI yukseliyor ve MACD pozitif sinyali durumu olustuktan sonra alim yapilir

Mum yuksekte kapandiginda ve RSI yukseliyor + MACD pozitif sinyali geldikten sonra ise satis yapilir.

Strateji calisirken ne yaptigina dair detayli bilgileri, stratejiyi calistirdiktan sonra acilan strateji raporu penceresinde Debug ve Loglar tab'lerinden takip edebilirsiniz. SendOrderSequential(true); set edildiginden Strateji ilk olarak alim emri ile baslayacak, sonra satis emri gonderebilecektir.

Kullanicilara IQ Algo ilk kullanmaya basladiklarinda yardimci olmak acisindan kod yazma disinda, sinirsiz destek veremiyoruz. Kullanicilarin ornek stratejilerden, sablonlardan, matriks destek platformu ve IQ Algo teknik dokumanindan, C# ile ilgili online fazla sayida mevcut yardim ve ogrenim sayfalarindan yararlarnmasini tavsiye ediyoruz.

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

/*Merhaba mumlar en altta iken kapanis yaptiginda satin almasini istiyorum ve mumlar en 
ustte kapani  macd kesismesinde alsin Simdiden tesekkur ederim.. 
bir eklemek istedigim birsey daha var 1 dakikalik ve suresini ayarlamakta istiyorum 
dakikalik,5dakikalik v.s Satis icin tavanda ornegin 1 dakikalik kapanis yapildiginda 
satis islemi geerceklessin rsi asagi yone seyir verdiginde ve eger atlama olursa macd 
kesismesinde satisi versin gibi simdiden tesekkurler*/

//Strateji mum altta kapandiktan sonra tetiklenir, RSI'in yukselise gecmesini ve MACD'nin pozitif sinyalde olmasini bekler
//RSI'in yukselise ya da dususe gectigi 2 periyottan sonra karar verilir. Yani RSI son barda ve bir onceki barda da yukseliyor olma sarti aranir.
//RSI yukseliyor ve MACD pozitif sinyali durumu olustuktan sonra alim yapilir
//Mum yuksekte kapandiginda ve RSI yukseliyor + MACD pozitif sinyali geldikten sonra ise satis yapilir

namespace Matriks.Lean.Algotrader
{
	public class mumAl : 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("TUPRS")]
		public string Symbol;
		[Parameter(SymbolPeriod.Min)]
		public SymbolPeriod SymbolPeriod;
		[Parameter(1)]
		public int Quantity;
		
		int BUY_Flag = 0, SELL_Flag = 0;
		RSI rsi;
		MACD macd;

		/// <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()
		{
			macd = MACDIndicator(Symbol, SymbolPeriod, OHLCType.Close, 26, 12, 9);
			rsi = RSIIndicator(Symbol, SymbolPeriod, OHLCType.Close, 14);
			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);
		}

		/// <summary>
		/// Init islemleri tamamlaninca, bardatalar kullanmaya hazir hale gelince bu fonksiyon tetiklenir. Data uzerinde bir defa yapilacak islemler icin kullanilir
		/// </summary>
		public override void OnInitComplated()
		{

		}

		/// <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(Symbol, SymbolPeriod);
			var open = barDataModel.Open[barDataCurrentValues.LastUpdate.BarDataIndex - 1];
			var high = barDataModel.High[barDataCurrentValues.LastUpdate.BarDataIndex - 1];
			var low = barDataModel.Low[barDataCurrentValues.LastUpdate.BarDataIndex - 1];
			var close = barDataModel.Close[barDataCurrentValues.LastUpdate.BarDataIndex - 1];
			var rsi_current = Math.Round(rsi.CurrentValue,2);
			var PrevRsi = Math.Round(Ref(rsi,1),2);
			var Prev2Rsi = Math.Round(Ref(rsi,2),2);
			var MACD_current = Math.Round(macd.Macd.CurrentValue,2);
			var MACD_Trigger_current = Math.Round(macd.MacdTrigger.CurrentValue,2);
			Debug($"Open = {open}, High = {high}, Low = {low}, Close = {close}");
			Debug($"BUY_Flag = {BUY_Flag}, SELL_Flag = {SELL_Flag}");
			Debug($"rsi = {rsi_current}, PrevRsi = {PrevRsi}, Prev2Rsi = {Prev2Rsi}");
			Debug($"MACD = {MACD_current}, MACD_Trigger = {MACD_Trigger_current}");
			if (close == low) { BUY_Flag = 1; SELL_Flag = 0; }
			else if (close == high) { SELL_Flag = 1; BUY_Flag = 0; }
			
			if(BUY_Flag==1 && (rsi.CurrentValue >= Ref(rsi,1)) && (Ref(rsi,1) > Ref(rsi,2)))
			{
				if(MACD_current > MACD_Trigger_current)
				{
					SendMarketOrder(Symbol, Quantity, OrderSide.Buy);
					Debug("Alis emri gonderildi.");
					BUY_Flag = 0;
				}
			}

			if(SELL_Flag == 1 && (rsi.CurrentValue <= Ref(rsi,1)) && (Ref(rsi,1) < Ref(rsi,2)))
			{
				if(MACD_current < MACD_Trigger_current)
				{
					SendMarketOrder(Symbol, Quantity, OrderSide.Sell);
					Debug("Satis emri gonderildi.");
					SELL_Flag = 0;
				}
			}
		}

		/// <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)
			{

			}
		}
	}
}

 

10498.5

(8,035 puan) tarafından
tarafından düzenlendi
0 0
Merhaba,

"Benim demek istedigim mum yuksette kapadi ve rsi dususte ve yuksegin alt sinirina dokundugunda satmasini saglamak istiyordum sanirim sizinde dediniz bu dogrumu anladim efendim?" yazdiginiz sorunuza istinaden,

En bastaki yazinizda: "Rsi ,mum dusukte kapanis yatiktan sonra rsi yukselise gectiginde alis yapsin"
yazmissiniz, buna dayanarak RSI'in yukselmesini bekliyor strateji, ve simdiki rsi > 1 onceki rsi > 2 onceki rsi seklinde calisarak RSI'in yukseldigini teyit etmeye calisiyor. Istediginiz bu degil miydi?
0 0
"Al/sat komutu yok burada nasil yapacagiz yada ilave edermisiniz lutfen?"

Al sat komutlari stratejinizde mevcuttur:

SendMarketOrder(Symbol, Quantity, OrderSide.Buy); AL

SendMarketOrder(Symbol, Quantity, OrderSide.Sell); SAT komutudur.

Para miktari da eklemiyoruz, bunun yerine Quantity var, bu da kac hisse alip satacagimizi belirlemekte. Orn. GARAN hissesinde stratejiyi calistirirsaniz ve 10,000 TL'lik islem yapmak istiyorsaniz mevcut fiyat 6.76.

10000/6.76 = 1479 adet hisseye denk gelmektedir. Bunu Quantity'ye yazabilirsiniz.
0 0
Olmadi yok sadece period var al/ sati yoktu
0 0
Binance de deniyorum olumlu sonuc ama alis/satis yazmak icin olan yer yok efendim onuda ekleyebilirmisiniz rica etsem
0 0
Evet komut cok guzel ama binancede de kullanacagim olumlu sonuc veri ve limiti al/sat fiyatini binancede kendim yazmak istiyorum eger olabilirse tesekkurler simdiden efendim
0 beğenilme 0 beğenilmeme

"Binance de deniyorum olumlu sonuc ama alis/satis yazmak icin olan yer yok efendim onuda ekleyebilirmisiniz rica etsem"

Tabi, stratejiniz benim yukariya yazdigim kodu kopyalayip basarili sekilde isimlendirebilyseniz, icerisinde Al/Sat komutlari vardir ve calistirdiginizda gonderilir emirler.

Yazdigim kodu yeni strateji olusturup icerisine kopyalamaniz gerekmekte.

Strateji ismi mumAl olmali (buyuk kucuk harf duyarli). Daha sonra strateji editorunde asagidaki gibi Kodu Derle'ye tiklamaniz gerekmekte:

Daha sonra IQ Algo menusu -> Strateji Listesine tiklayip mumAl stratejisinde calistir diyorum:

Yalniz yukariya yazdigim uyariyi da dikkate aliniz:

***STRATEJILERI TEST/DENEME ORTAMINDA SINAMADAN VE SIZIN ISTEDIGINIZ SEKILDE CALISTIGINA EMIN OLMADAN GERCEK ORTAMDA HIC BIR ZAMAN CALISTIRMAYIN***

Binance bir test ortami degildir, bu yuzden direkt binance'de gercek hesap uzerinde calistirmanizi tavsiye etmiyorum. Matriks deneme ortaminda calistiriniz once.

Binance'de calistirmakta israr ediyorsaniz PAX_USDT_BIN sembolunde calistirin, bu 2 stabil para arasinda oldugu icin kaybiniz olursa da cok dusuk olacaktir.

-------------------------------------------------------------------------------

"Evet komut cok guzel ama binancede de kullanacagim olumlu sonuc veri ve limiti al/sat fiyatini binancede kendim yazmak istiyorum eger olabilirse tesekkurler simdiden efendim"

Yazmissiniz, alim satim fiyatini kendiniz yazarsaniz stratejinin bir anlami kalmaz ki? Strateji kosullar gerceklestiginde PIYASA emri gondermekte, mevcut fiyattan alim satim yapmaktadir.

(8,035 puan) tarafından
tarafından düzenlendi
0 0
hemen denıyecegım fakat 2000 dolarlık alt coin almak istiyorum ornegın yazacagım yer yok yada 100 dolarlık bitcoin alıcagım menude cıkmıyor efendim
0 0

Efendim bunlari yapmak icin stratejiye ihtiyaciniz yok ki, bunun icin emir penceresini kullanin lutfen.

Eger strateji'yi 2000 dolarlik ve BTC_USDT paritesinde calistirmak istiyorum derseniz:

o zaman BTC_USDT su anki degeri = 10748

kullanmak istediginiz para miktari $2000 / $10748 = 0.186

Bu degeri QUANTITY kismina yazdiginizda 2bin dolarlik alis satis yapmaya baslar. Yanliz dedigim gibi bunu yapmayin. Stratejide olusabilecek bir hata ya da sizin istemediginiz bir calisma durumunun olmasina karsi stratejinizi once test etmeniz gerekmektedir.

PAX_USDT_BIN sembolunu kullanarak QUANTITY kismina 11 yazin. Strateji calisacaktir. Log ve DEBUG tab'lerinden stratejiyi takip edin.

Stratejiyi matriks deneme ortaminda da calistirabilrisiniz.

Daha fazla destek isterseniz teknik departmanimizi arayabilirsiniz +90 212 354 54 54.

0 0
uzaktan baglantı yapmak mumkunmudur acaba
0 0
Evet Teknik birimde nobetci arkadasimiz yapabilir.
0 0

Yazilim icin yarin diyor mesai saatleri icinde teknik destek olarak hozmet verebiliyorlar sanirim ve bakiye olumlu iken (-) cikti simdi nasil yapacagimi bilemedim

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ı