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);
}
}
}