26.12.2023
0
0
145
0
ZUU2 indikatörünün IQ ya uyarlanmış halidir.


YGT1:=3;
YGT2:=1;
NET:=Mov(Mov(C-Ref(C,-1),YGT1,ww),YGT2,ww)/Mov(Mov(Abs(C-Ref(C,-1)),YGT1,ww),YGT2,ww)*100;
TET:=mov(NET,2,VAR);
NET;TET:0
using System;
using System.Collections.Generic;
using System.Linq;
using System.ComponentModel;
using Matriks.Data.Identifiers;
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
{
	/*
	YGT1:=3;
	YGT2:=1;
	NET:=Mov(Mov(C-Ref(C,-1),YGT1,ww),YGT2,ww)/Mov(Mov(Abs(C-Ref(C,-1)),YGT1,ww),YGT2,ww)*100; 
	TET:=mov(NET,2,VAR);
	NET;TET:0
	*/
	[IndicatorInformationAttribute("ZUUU2", IndicatorDrawingArea.NewWindow)]
	[IndicatorLineInformationAttribute(new []
		{
			"NET", "TET", "0"
		}, new []
		{
			"#FFFFFF", "#FFFFFF", "#FFFFFF"
		}, new []
		{
			false, true, false
		}, new []
		{
			0, 5, 0
		}, new []
		{
			1, 1, 1
		}

	)]

	public class ZUUU2 : MatriksIndicator
	{
		MOV mov1, mov2, mov3, mov4, TET;
		MOV C;

		public sealed override void OnInit()
		{

			AddSymbol(Symbol, SymbolPeriod);

			var YGT1 = 3;
			var YGT2 = 1;

			C = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, 1, MovMethod.Simple);

			mov1 = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, YGT1, MovMethod.Wilders);
			mov2 = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, YGT2, MovMethod.Wilders);
			mov3 = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, YGT1, MovMethod.Wilders);
			mov4 = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, YGT2, MovMethod.Wilders);
			TET = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, 2, MovMethod.Variable);

		}


		public override void OnDataUpdate(int currentBar, decimal inputValue, DateTime barDateTime)
		{
			var barData = GetBarData();

			if (currentBar < 3)
			{
				SetLine(0, currentBar, 0);
				SetLine(1, currentBar, 0);
				SetLine(2, currentBar, 0);
				return;
			}

			mov1.Update(C.CurrentValue - Ref(C, 1), currentBar, barDateTime, null);
			mov2.Update(mov1.CurrentValue, currentBar, barDateTime, null);
			mov3.Update(Absolute(C.CurrentValue - Ref(C, 1)), currentBar, barDateTime, null);
			mov4.Update(mov3.CurrentValue, currentBar, barDateTime, null);

			var NET = (mov2.CurrentValue / mov4.CurrentValue) * 100;
			TET.Update(NET, currentBar, barDateTime, null);

			SetLine(0, currentBar, NET);
			SetLine(1, currentBar, TET.CurrentValue);
			SetLine(2, currentBar, 0);
		}
	}
}



0 Yorum