0 beğenilme 0 beğenilmeme
1,545 kez görüntülendi

Şimdiden teşekkür ederim yardımlarınız için. 
LONG
if(MOV(C,40,VAR)>OTT(C,40,7), MOV(C,40,VAR)>OTT(C,40,0.8)(1+0,0008) AND STOSK(600,300,33,VAR)+1000>OTT(STOSK(600,300,33,VAR)+1000,2,0.9), MOV(C,40,VAR)>OTT(C,40,0.8)(1+0,0008) AND STOSK(600,300,33,VAR)+1000>OTT(STOSK(600,300,33,VAR)+1000,2,0.9))
 

SHORT
if(MOV(C,40,VAR)>OTT(C,40,7), MOV(C,40,VAR)<OTT(C,40,0.8)(1+0,0008) AND STOSK(600,300,33,VAR)+1000<OTT(STOSK(600,300,33,VAR)+1000,2,0.9), MOV(C,40,VAR)<OTT(C,40,0.8)(1+0,0008) AND STOSK(600,300,33,VAR)+1000<OTT(STOSK(600,300,33,VAR)+1000,2,0.9))  

İndikator kategorisinde (14 puan) tarafından | 1,545 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhabalar,

Lütfen aşağıdaki stratejiyi test 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 Matriks.Indicators;
using Matriks.Symbols;
using Matriks.Trader.Core;
using Matriks.Trader.Core.Fields;
using Matriks.Lean.Algotrader.AlgoBase;
using Matriks.Lean.Algotrader.Models;
using Matriks.Lean.Algotrader.Trading;

namespace Matriks.Lean.Algotrader
{
	public class destekdeneme1 : MatriksAlgo
	{
		[SymbolParameter("FGARAN")]
		public string Symbol;

		[Parameter(SymbolPeriod.Min5)]
		public SymbolPeriod SymbolPeriod;

		[Parameter(5)]
		public decimal BuyOrderQuantity;

		[Parameter(5)]
		public decimal SellOrderQuantity;

		[Parameter(40)]
			public int OttPeriod1;

		[Parameter(7)]
			public decimal OttOpt1;

		[Parameter(MovMethod.VAR)]
			public MovMethod OttMovMethod1;

		[Parameter(true)]
			public bool OttSupportLine1;

		[Parameter(40)]
			public int TottPeriod1;

		[Parameter(0.8)]
			public decimal TottOpt1;

		[Parameter(0.0008)]
			public decimal TottTwinOttCoef1;

		[Parameter(MovMethod.VAR)]
			public MovMethod TottMovMethod1;

		[Parameter(600)]
			public int SottPeriodK1;

		[Parameter(300)]
			public int SottPeriodSlowK1;

		[Parameter(2)]
			public int SottOttPeriod1;

		[Parameter(0.9)]
			public decimal SottOttOpt1;

		[Parameter(MovMethod.VAR)]
			public MovMethod SottOttMethod1;

		[Parameter(MovMethod.VAR)]
			public MovMethod SottStosKMethod1;

		[Parameter(3)]
		public int KaldiracOrani;


		OTT ott;
		TOTT tott;
		SOTT sott;

		public override void OnDataUpdate(BarDataEventArgs barData)
		{
			if (ott.Value[1][ott.CurrentIndex] > ott.Value[0][ott.CurrentIndex])
			{
				if (tott.Value[0][tott.CurrentIndex] > tott.Value[1][tott.CurrentIndex] && sott.Value[0][sott.CurrentIndex] > sott.Value[1][sott.CurrentIndex])
				{
					FX_Alis();
					// sentetik emirler OnOrderUpdate() methodundan eklenmesi gerekir - örnekteki gibi 
				}

			}else if (tott.Value[0][tott.CurrentIndex] > tott.Value[1][tott.CurrentIndex] && sott.Value[0][sott.CurrentIndex] > sott.Value[1][sott.CurrentIndex])
			{
				FX_Alis();
				// sentetik emirler OnOrderUpdate() methodundan eklenmesi gerekir - örnekteki gibi 
			}


			if (ott.Value[1][ott.CurrentIndex] > ott.Value[0][ott.CurrentIndex])
			{
				if (tott.Value[0][tott.CurrentIndex] < tott.Value[1][tott.CurrentIndex] && sott.Value[0][sott.CurrentIndex] < sott.Value[1][sott.CurrentIndex])
				{
					FX_Satis();
					// sentetik emirler OnOrderUpdate() methodundan eklenmesi gerekir - örnekteki gibi 
				}

			}else if (tott.Value[0][tott.CurrentIndex] < tott.Value[1][tott.CurrentIndex] && sott.Value[0][sott.CurrentIndex] < sott.Value[1][sott.CurrentIndex])
			{
				FX_Satis();
				// sentetik emirler OnOrderUpdate() methodundan eklenmesi gerekir - örnekteki gibi 
			}
		}

		public override void OnInit()
		{
			AddSymbol(Symbol, SymbolPeriod);
			ott = OTTIndicator(Symbol, SymbolPeriod, OHLCType.Close, OttPeriod1, OttOpt1, OttMovMethod1, OttSupportLine1);
			tott = TOTTIndicator(Symbol, SymbolPeriod, OHLCType.Close, TottPeriod1, TottOpt1, TottTwinOttCoef1, TottMovMethod1);
			sott = SOTTIndicator(Symbol, SymbolPeriod, OHLCType.Close, SottPeriodK1, SottPeriodSlowK1, SottOttPeriod1, SottOttOpt1, SottOttMethod1, SottStosKMethod1);

			// Gerekli			
			WorkWithPermanentSignal(true);

			if (AcigaSatisYapilsin)
			{
				SendOrderSequential(true, Side.Buy);
				SendOrderSequentialForShort(true, Side.All);
			}else
			{
				SendOrderSequential(true, Side.Buy);
			}
			// #Gerekli

			// kaldıraç oranı
			SetLeverage(Symbol, KaldiracOrani);
			// kaldıraç tipi – true isolated, false cross
			SetLeverageType(Symbol, false);
			// Gerekli

		}

		[Parameter(false)]
		public bool AcigaSatisYapilsin;

		[Parameter(false)]
		public bool AksamSeansiniDahilEt;

		List<string> orderIDList = new List<string>();

		public void FX_Alis()
		{
			string _orderID = string.Empty; ;
			decimal _quantity = 0;

			if (LastOrderSide.Obj != Side.Buy)
			{
				if (LastOrderSide.Obj == Side.All || !AcigaSatisYapilsin)
				{
					_orderID = SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy, includeAfterSession:AksamSeansiniDahilEt);
					_quantity = BuyOrderQuantity;
				}else
				{
					if (LastOrderSideForShort.Obj == Side.All)
					{
						_orderID = SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy, includeAfterSession:AksamSeansiniDahilEt);
						_quantity = BuyOrderQuantity;
					}else
					{
						_orderID = SendMarketOrder(Symbol, BuyOrderQuantity * 2, OrderSide.Buy, includeAfterSession:AksamSeansiniDahilEt);
						_quantity = BuyOrderQuantity * 2;
					}
				}

				if (_orderID != string.Empty && _quantity != 0)
				{
					orderIDList.Add(_orderID);
					Debug("Alış emri gönderildi.[ " + _quantity + " adet ]");
					LastOrderSide.Obj = Side.Buy;
					LastOrderSideForShort.Obj = Side.Buy;
				}
			}
		}

		public void FX_Satis()
		{
			string _orderID = string.Empty; ;
			decimal _quantity = 0;

			if (LastOrderSide.Obj != Side.Sell)
			{
				if (LastOrderSide.Obj == Side.All || !AcigaSatisYapilsin)
				{
					_orderID = SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell, includeAfterSession:AksamSeansiniDahilEt);
					_quantity = SellOrderQuantity;
				}else
				{
					if (LastOrderSideForShort.Obj == Side.All)
					{
						_orderID = SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell, includeAfterSession:AksamSeansiniDahilEt);
						_quantity = SellOrderQuantity;

					}else
					{
						_orderID = SendMarketOrder(Symbol, SellOrderQuantity * 2, OrderSide.Sell, includeAfterSession:AksamSeansiniDahilEt);
						_quantity = SellOrderQuantity * 2;
					}
				}


				if (_orderID != string.Empty && _quantity != 0)
				{
					orderIDList.Add(_orderID);
					Debug("Satış emri gönderildi.[ " + _quantity + " adet ]");
					LastOrderSide.Obj = Side.Sell;
					LastOrderSideForShort.Obj = Side.Sell;
				}
			}
		}

		public override void OnOrderUpdate(IOrder order)
		{
			if (order.OrdStatus.Obj == OrdStatus.Filled)
			{
				// Senntetik emirler tanımlanıyor
				//				StopLoss(Symbol, SyntheticOrderPriceType.Percent, 1);
				//				TakeProfit(Symbol, SyntheticOrderPriceType.Percent, 1);
				if (!orderIDList.Contains(order.CliOrdID) && AcigaSatisYapilsin)
				{
					LastOrderSideForShort.Obj = Side.All;
					Debug("Sentetik emir tetiklendi");
				}
			}
		}
		// #Gerekli
	}
}



İyi çalışmalar.

(11,059 puan) tarafından
tarafından düzenlendi
0 0
Kod yazma ve okuma işinde oldukça yeniyim ama Formülün al-sat koşulunda bir "else" eksikliği olabilir mi?

if (ott.Value[1][ott.CurrentIndex] > ott.Value[0][ott.CurrentIndex]) ise bıdı bıdı,

else, bıdı bıdı gibi?

Şu durumda Long'a da Short'a da uptrend'teyken giriyormuş gibi geldi bana ama kaçırdığım bir şey varsa koddaki hangi bölüme bakmam gerekiyor, söylerseniz çok sevinirim.
0 0
Kaldıraç oranını nasıl ayarlayabiliriz buna ek olarak.
0 0
Merhabalar,

Ekteki stratejiyi düzenleyip içerisine kaldıraç ekledim.

Lütfen test ediniz.

İyi çalışmalar.
0 0
Başınızı ağrıtıyorum ama kusura bakmayın. Bende timestump hatası oluyor. Ercan bey bi kod verdi uyarladım başka strateji de çalıştı ancak bunda yine aldım buna da yardımcı olursanız çok memnun kalırım :)
0 0

Merhabalar,

Lütfen aşağıdaki yapıyı inceleyiniz.

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

namespace Matriks.Lean.Algotrader
{
	public class test45454 : MatriksAlgo
	{
		[SymbolParameter("BTC_USDT_BIN")]
		public string Symbol;

		[Parameter(SymbolPeriod.Min5)]
		public SymbolPeriod SymbolPeriod;

		[Parameter(40)]
			public int OttPeriod1;

		[Parameter(7)]
			public decimal OttOpt1;

		[Parameter(MovMethod.VAR)]
			public MovMethod OttMovMethod1;

		[Parameter(true)]
			public bool OttSupportLine1;

		[Parameter(40)]
			public int TottPeriod1;

		[Parameter(0.8)]
			public decimal TottOpt1;

		[Parameter(0.0008)]
			public decimal TottTwinOttCoef1;

		[Parameter(MovMethod.VAR)]
			public MovMethod TottMovMethod1;

		[Parameter(600)]
			public int SottPeriodK1;

		[Parameter(300)]
			public int SottPeriodSlowK1;

		[Parameter(2)]
			public int SottOttPeriod1;

		[Parameter(0.9)]
			public decimal SottOttOpt1;

		[Parameter(MovMethod.VAR)]
			public MovMethod SottOttMethod1;

		[Parameter(MovMethod.VAR)]
			public MovMethod SottStosKMethod1;

		[Parameter(5)]
		public decimal BuyOrderQuantity;

		[Parameter(5)]
		public decimal SellOrderQuantity;

		[Parameter(3)]
		public int Kaldirac;

		OTT ott;
		TOTT tott;
		SOTT sott;

		public override void OnInit()
		{
			AddSymbol(Symbol, SymbolPeriod);
			ott = OTTIndicator(Symbol, SymbolPeriod, OHLCType.Close, OttPeriod1, OttOpt1, OttMovMethod1, OttSupportLine1);
			tott = TOTTIndicator(Symbol, SymbolPeriod, OHLCType.Close, TottPeriod1, TottOpt1, TottTwinOttCoef1, TottMovMethod1);
			sott = SOTTIndicator(Symbol, SymbolPeriod, OHLCType.Close, SottPeriodK1, SottPeriodSlowK1, SottOttPeriod1, SottOttOpt1, SottOttMethod1, SottStosKMethod1);

			// Gerekli - Açığa satış
			WorkWithPermanentSignal(true);

			if (HangiIslemleBaslasin == yon.Alis)
			{
				SendOrderSequential(true, Side.Buy);
			}else if (HangiIslemleBaslasin == yon.Satis)
			{
				SendOrderSequential(true, Side.Sell);
			}else
			{
				SendOrderSequential(true, Side.All);
			}
			SendOrderSequentialForShort(true, Side.All);
			// #Gerekli - Açığa satış

			// Gerekli - Kaldıraç			
			SetLeverage(Symbol, Kaldirac); // kaldıraç oranı			
			SetLeverageType(Symbol, true); // kaldıraç tipi - true isolated, false cross
			// #Gerekli - Kaldıraç

			// Gerekli - Timestamp
			SetTimerInterval(1);
			// #Gerekli - Timestamp
		}

		public override void OnDataUpdate(BarDataEventArgs barData)
		{
			if (ott.Value[1][ott.CurrentIndex] > ott.Value[0][ott.CurrentIndex])
			{
				if (tott.Value[0][tott.CurrentIndex] > tott.Value[1][tott.CurrentIndex] && sott.Value[0][sott.CurrentIndex] > sott.Value[1][sott.CurrentIndex])
				{
					FX_Alis();
					// sentetik emirler OnOrderUpdate() methodundan eklenmesi gerekir - örnekteki gibi 
				}

			}
			else if (tott.Value[0][tott.CurrentIndex] > tott.Value[1][tott.CurrentIndex] && sott.Value[0][sott.CurrentIndex] > sott.Value[1][sott.CurrentIndex])
			{
				FX_Alis();
				// sentetik emirler OnOrderUpdate() methodundan eklenmesi gerekir - örnekteki gibi 
			}


			if (ott.Value[1][ott.CurrentIndex] > ott.Value[0][ott.CurrentIndex])
			{
				if (tott.Value[0][tott.CurrentIndex] < tott.Value[1][tott.CurrentIndex] && sott.Value[0][sott.CurrentIndex] < sott.Value[1][sott.CurrentIndex])
				{
					FX_Satis();
					// sentetik emirler OnOrderUpdate() methodundan eklenmesi gerekir - örnekteki gibi 
				}

			}
			else if (tott.Value[0][tott.CurrentIndex] < tott.Value[1][tott.CurrentIndex] && sott.Value[0][sott.CurrentIndex] < sott.Value[1][sott.CurrentIndex])
			{
				FX_Satis();
				// sentetik emirler OnOrderUpdate() methodundan eklenmesi gerekir - örnekteki gibi 
			}
		
	}

	// Gerekli - Açığa satış		
	[Parameter(true)]
		public bool AcigaSatisYapilsin;

	[Parameter(false)]
		public bool AksamSeansiniDahilEt;

	[Parameter(yon.Farketmez)]
		public yon HangiIslemleBaslasin;

	public enum yon
	{
		Alis, Satis, Farketmez
	}

	List<string> orderIDList = new List<string>();

	public void FX_Alis()
	{
		string _orderID = string.Empty; ;
		decimal _quantity = 0;

		if (LastOrderSide.Obj != Side.Buy)
		{
			if (LastOrderSide.Obj == Side.All || !AcigaSatisYapilsin)
			{
				_orderID = SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy, includeAfterSession:AksamSeansiniDahilEt);
				_quantity = BuyOrderQuantity;
			}else
			{
				if (LastOrderSideForShort.Obj == Side.All)
				{
					_orderID = SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy, includeAfterSession:AksamSeansiniDahilEt);
					_quantity = BuyOrderQuantity;
				}else
				{
					_orderID = SendMarketOrder(Symbol, BuyOrderQuantity * 2, OrderSide.Buy, includeAfterSession:AksamSeansiniDahilEt);
					_quantity = BuyOrderQuantity * 2;
				}
			}

			if (_orderID != string.Empty && _quantity != 0)
			{
				orderIDList.Add(_orderID);
				Debug("Alış emri gönderildi.[ " + _quantity + " adet ]");
				LastOrderSide.Obj = Side.Buy;
				LastOrderSideForShort.Obj = Side.Buy;
			}
		}
	}

	public void FX_Satis()
	{
		string _orderID = string.Empty; ;
		decimal _quantity = 0;

		if (LastOrderSide.Obj != Side.Sell)
		{
			if (LastOrderSide.Obj == Side.All || !AcigaSatisYapilsin)
			{
				_orderID = SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell, includeAfterSession:AksamSeansiniDahilEt);
				_quantity = SellOrderQuantity;
			}else
			{
				if (LastOrderSideForShort.Obj == Side.All)
				{
					_orderID = SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell, includeAfterSession:AksamSeansiniDahilEt);
					_quantity = SellOrderQuantity;

				}else
				{
					_orderID = SendMarketOrder(Symbol, SellOrderQuantity * 2, OrderSide.Sell, includeAfterSession:AksamSeansiniDahilEt);
					_quantity = SellOrderQuantity * 2;
				}
			}


			if (_orderID != string.Empty && _quantity != 0)
			{
				orderIDList.Add(_orderID);
				Debug("Satış emri gönderildi.[ " + _quantity + " adet ]");
				LastOrderSide.Obj = Side.Sell;
				LastOrderSideForShort.Obj = Side.Sell;
			}
		}
	}
	// #Gerekli - Açığa satış	

	// Gerekli - Timestamp
	public class OrderListTimestamp
	{
		public string ID;
		public string Sembol;
		public decimal Adet;
		public decimal Fiyat;
		public OrdType EmirTipi;
		public OrderSide orderSide;
		public string EmirYonu;
		public DateTime TetiklenmeZamani;
		public int Sayac;
		public bool AktifMI;
	}

	Dictionary<string, OrderListTimestamp> timestampDict = new Dictionary<string, OrderListTimestamp>();

	[Parameter(3)]
		public int AyniEmirKacSeferGonderilsin;

	[Parameter(10)]
		public int KacSaniyeSonraTekrarGonderilsin;

	string orderIDTimestamp = string.Empty;

	public override void OnTimer()
	{
		var tutt = timestampDict.Where(x => x.Value.AktifMI == true && DateTime.Now >= x.Value.TetiklenmeZamani);

		if (tutt.Count() >0)
		{
			foreach (var deger in tutt)
			{
				LastOrderSide.Obj = deger.Value.orderSide == OrderSide.Buy? Side.Sell:Side.Buy;

				if (deger.Value.EmirTipi.Obj == OrdType.Limit)
				{
					orderIDTimestamp = SendLimitOrder(deger.Value.Sembol, deger.Value.Adet, deger.Value.orderSide, deger.Value.Fiyat);
					Debug(deger.Value.EmirYonu + " emri tekrar gönderildi.");
				}else if (deger.Value.EmirTipi.Obj == OrdType.Market)
				{
					orderIDTimestamp = SendMarketOrder(deger.Value.Sembol, deger.Value.Adet, deger.Value.orderSide);
					Debug(deger.Value.EmirYonu + " emri tekrar gönderildi.");
				}

				deger.Value.ID = orderIDTimestamp;
				deger.Value.AktifMI = false;
				timestampDict[orderIDTimestamp] = deger.Value;
				timestampDict.Remove(deger.Key);

			}
		}
	}
	// #Gerekli - Timestamp

	public override void OnOrderUpdate(IOrder order)
	{
		// Gerekli - Açiğa satış
		if (order.OrdStatus.Obj == OrdStatus.Filled)
		{
			if (!orderIDList.Contains(order.CliOrdID) && AcigaSatisYapilsin && !timestampDict.ContainsKey(order.CliOrdID))
			{
				LastOrderSide.Obj = Side.All;
				Debug("Sentetik emir tetiklendi");
			}
		}
		// #Gerekli - Açiğa satış

		// Gerekli - Timestamp
		if (order.OrdStatus.Obj == OrdStatus.Filled)
		{
			if (timestampDict.ContainsKey(order.CliOrdID))
			{
				timestampDict.Remove(order.CliOrdID);
				Debug("Timestamp hatasına takılan emriniz gerçekleşti.");
			}
		}

		if (order.OrdStatus.Obj == OrdStatus.Rejected)
		{
			if (!timestampDict.ContainsKey(order.CliOrdID))
			{
				OrderListTimestamp orderList = new OrderListTimestamp();
				orderList.ID = order.CliOrdID;
				orderList.Sembol = order.Symbol;
				orderList.Adet = order.OrderQty;
				orderList.Fiyat = order.Price;
				orderList.EmirTipi = order.OrdType;
				orderList.TetiklenmeZamani = DateTime.Now;
				orderList.Sayac = 0;
				orderList.AktifMI = false;

				if (order.Side.Obj == Side.Buy)
				{
					orderList.orderSide = OrderSide.Buy;
					orderList.EmirYonu = "Alış";
				}else
				{
					orderList.orderSide = OrderSide.Sell;
					orderList.EmirYonu = "Satış";
				}

				timestampDict[order.CliOrdID] = orderList;
			}

			if (order.Text.Contains("Timestamp"))
			{
				if (timestampDict.ContainsKey(order.CliOrdID))
				{
					if (timestampDict[order.CliOrdID].Sayac < AyniEmirKacSeferGonderilsin)
					{
						timestampDict[order.CliOrdID].TetiklenmeZamani = DateTime.Now.AddSeconds(KacSaniyeSonraTekrarGonderilsin);
						timestampDict[order.CliOrdID].Sayac++;
						timestampDict[order.CliOrdID].AktifMI = true;

						Debug("Emir Timestamp hatasından dolayı iptal oldu tekrar gönderilecek");
					}else
					{
						timestampDict.Remove(order.CliOrdID);
						Debug("Aynı emir üst üste " + AyniEmirKacSeferGonderilsin + " defa gönderildi.");
					}
				}
			}
		}
		// #Gerekli - Timestamp			
	}
}
}

İyi çalışmalar.

0 0
Merhaba,

Bu kodlamayı çalıştırmak istiyorum ancak hata alıyorum. Sizden ricam bunu dosya şeklinde paylaşırsanız sevinirim.

Teşekkürler.
0 0

 

Merhabalar,

İstediğiniz dosya aşağıda paylaşılmıştır.

https://destek.matriksdata.com/?qa=blob&qa_blobid=8232515913138886506

Kod şeklinde paylaşıldığında ise, IQ Algo seçeneğine tıklayarak Yeni Strateji Oluştur demeniz gerekmektedir.

Oluşturduğunuz stratejiye bir isim veriniz.

Daha sonra ise önünüze açılan ekrana yukarıda paylaşılan kodu kopyala yapıştır yöntemi ile ekleyiniz.

Ekledikten sonra sol üstte yazan isim ile eklediğiniz stratejinin ismini aynı yapınız.

Sistemi kullanmaya başlayabilirsiniz.

İyi çalışmalar.

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