0 beğenilme 0 beğenilmeme
482 kez görüntülendi
Merhabalar kolay gelsin rica etsem TOTT indikatörü için TÜM BAKİYEDE açığa satış kapama - alış - satış - açığa satış ve birde kaldıraç ekleyebilirmisiniz, çok uğraştım olmadı.
İndikator kategorisinde (24 puan) tarafından | 482 kez görüntülendi

1 cevap

1 beğenilme 0 beğenilmeme

Merhabalar,

Bahsettiğiniz sistemin (açığa satış kapama - alış - satış - açığa satış ve birde kaldıraç) tüm bakiye olarak kullanılması çok sağlıklı olmayacaktır. 

Sistemin lot adedi olarak istediğiniz hali aşağıda verilmiştir.

Dilerseniz inceleyebilirsiniz.

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 SablonAcigaSatisVadeli1 : 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 TOTTPeriod;

		[Parameter(1)]
		public decimal TOTTOpt;

		[Parameter(0.001d)]
		public decimal TwinOttCoef;

		[Parameter(MovMethod.Variable)]
		public MovMethod TottMovMethod;

		[Parameter(3)]
		public int KaldiracOrani;


TOTT tott;

		public override void OnDataUpdate(BarDataEventArgs barData)
		{
			if (CrossAbove(tott.Mov, tott.OttUp))
			{
				FX_Alis();
			}

				if (CrossBelow(tott.Mov, tott.OttDown))
			{
				FX_Satis();
			}
		}

		public override void OnInit()
		{
			AddSymbol(Symbol, SymbolPeriod);
			tott = TOTTIndicator(Symbol, SymbolPeriod, OHLCType.Close, TOTTPeriod, TOTTOpt, TwinOttCoef, TottMovMethod);

			// 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,069 puan) tarafından
0 0
Çok çok teşekkürler. Yeni keşfettim.  Buna acaba bir de HOTT LOTT (kapı) ekleyebilir miyiz? Çok mu şey istemiş olurum? :)
stratejiye yön tayini yapma
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,591 soru
7,598 cevap
4,441 yorum
10,441 kullanıcı