Files
QuanTAlib/lib/trends/dwma/Dwma.Validation.Tests.cs
T

42 lines
1.0 KiB
C#

using System;
using Xunit;
namespace QuanTAlib;
public class DwmaValidationTests
{
[Fact]
public void Validate_Against_DoubleWma()
{
// DWMA should be exactly WMA(WMA(source, period), period)
int period = 10;
int count = 1000;
var source = new TSeries();
var rnd = new Random(42);
for (int i = 0; i < count; i++)
{
source.Add(new TValue(DateTime.UtcNow.AddMinutes(i), rnd.NextDouble() * 100));
}
var dwma = new Dwma(period);
var wma1 = new Wma(period);
var wma2 = new Wma(period);
for (int i = 0; i < count; i++)
{
var val = source[i];
// Calculate DWMA
var dwmaVal = dwma.Update(val);
// Calculate WMA(WMA) manually
var wma1Val = wma1.Update(val);
var wma2Val = wma2.Update(wma1Val);
Assert.Equal(wma2Val.Value, dwmaVal.Value, 10);
}
}
}