Matriks Destek ve Yardım Platformu

Matriks Ürünleri ile ilgili tüm sorularınız için bizlere buradan ulaşabilirsiniz. Daha önce sorulan soruları ve verilen cevapları ilgili sekmelerden ve arama üzerinden inceleyebilirsiniz. Sağ taraftaki kategoriler üzerinden İlgilendiğiniz özelliklerle ilgili soruları filtreleyebilirsiniz. Soru ve cevapları sosyal medyada paylaşabilirsiniz. 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.

0

Macd ve iftcciv2

Soruldu
Görüntülenme
807 görüntülenme
Durum
Cevaplandı
Merhaba ürünü yeni kullanıyorum.

Macd sıfırın altında kesişince ve iftccıV2 -0.5 üzerine kırınca long

macd sıfırın üzerinde kesince ve ıftccV2 0.5 altına kırınca short işlemi açtırmak için ne yapmalıyım ?
Paylaş

1 Cevap

0

Merhabalar,

İstemiş olduğunuz sistem aşağıda verilmiştir.

Lütfen 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.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 MACDIFT : MatriksAlgo
	{
		[SymbolParameter("FGARAN")]
		public string Symbol;

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

		[Parameter(5)]
		public decimal BuyOrderQuantity;

		[Parameter(5)]
		public decimal SellOrderQuantity;

	[Parameter(26)]
			public int MacdLongPeriod1;

		[Parameter(12)]
			public int MacdShortPeriod1;

		[Parameter(9)]
			public int MacdTriggerPeriod1;

		[Parameter(9)]
			public int İftcci2kripexMovPeriod1;

		[Parameter(5)]
			public int İftcci2kripexCciPeriod1;

		[Parameter(3)]
		public int Kaldirac;

		MACD macd;
		MatriksIndicator IFTCCI2Kripex;


		public override void OnDataUpdate(BarDataEventArgs barData)
		{
			// alış koşulu
		if (macd.Value[0][macd.CurrentIndex] < 0m && CrossAbove(macd, macd, 0, 1) && IFTCCI2Kripex.Value[0][IFTCCI2Kripex.CurrentIndex] > -0.5m)
			{
				// Gerekli açığa satış
				FX_Alis(Symbol, BuyOrderQuantity);


				// #Gerekli açığa satış
			}

			// satış koşulu
			if (macd.Value[0][macd.CurrentIndex] > 0m && CrossBelow(macd, macd, 0, 1) && IFTCCI2Kripex.Value[0][IFTCCI2Kripex.CurrentIndex] < 0.5m)
			{
				// Gerekli açığa satış
				FX_Satis(Symbol, SellOrderQuantity);


				// #Gerekli açığa satış
			}
		}

		public override void OnInit()
		{
			AddSymbol(Symbol, SymbolPeriod);
			macd = MACDIndicator(Symbol, SymbolPeriod, OHLCType.Close, MacdLongPeriod1, MacdShortPeriod1, MacdTriggerPeriod1);
			IFTCCI2Kripex = new IFTCCI2Kripex();

			IFTCCI2Kripex.SetIndicatorParameters("MovPeriod", İftcci2kripexMovPeriod1);
			IFTCCI2Kripex.SetIndicatorParameters("CciPeriod", İftcci2kripexCciPeriod1); RegisterUserIndicator(IFTCCI2Kripex, Symbol, SymbolPeriod, OHLCType.Close, 5);


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

		public void FX_Alis(string sembol, decimal quantity)
		{
			decimal _quantity = 0;

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

				Debug("Alış emri gönderildi.[ " + _quantity + " adet ]");
				LastOrderSide.Obj = Side.Buy;
				LastOrderSideForShort.Obj = Side.Buy;
			}
		}

		public void FX_Satis(string sembol, decimal quantity)
		{
			decimal _quantity = 0;

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

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

				Debug("Satış emri gönderildi.[ " + _quantity + " adet ]");
				LastOrderSide.Obj = Side.Sell;
				LastOrderSideForShort.Obj = Side.Sell;
			}
		}

		public override void OnSyntheticOrderTriggered(SyntheticAlgoOrder sOrder)
		{
			if (sOrder.EnableOrderSending)
			{
				LastOrderSide.Obj = Side.All;
				Debug("Sentetik emir tetiklendi");
			}
		}
		// #Gerekli açığa satış
	}
}

İyi çalışmalar.

BağlantıBayraklaasiyangMatriks Destek11.113

Cevabınız

Cevap yazmak için giriş yapın.Giriş yapKayıt ol