SMA с параметром 60. Рассчитать средние значения за последние 10 дней для SMA. Затем средние значения 20 дней. Если за 10 дней больше чем за 20, то покупаем, в противном случае продаем
В первом случае рассчитаем среднее по формуле известной всем из математики
[CODE]using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WealthLab;
using WealthLab.Indicators;
using WealthLab.Optimizers;
using WealthLab.Strategies;
namespace ConsoleApplication1
{
class Test : WealthScript
{
protected override void Execute()
{
DataSeries ds = SMA.Series (Close, 20);
for (int bar = 20; bar < Bars.Count; bar++)
{
double test1 = (ds[bar] + ds[bar - 1] + ds[bar - 2] + ds[bar - 3] + ds[bar - 4] + ds[bar - 5] + ds[bar - 6] + ds[bar - 7] + ds[bar - 8] + ds[bar - 9] + ds[bar - 10]) / 10;
double test2 = (test1 + ds[bar - 11] + ds[bar - 12] + ds[bar - 13] + ds[bar - 14] + ds[bar - 15] + ds[bar - 16] + ds[bar - 17] + ds[bar - 18] + ds[bar - 19] + ds[bar - 20]) / 20;
if (test1>test2){
BuyAtLimit(bar + 1, Close[bar]);
}
if (test1<test2){
SellAtLimit(bar + 1, Position.AllPositions, Close[bar]);
}
}
}
}
}
[/CODE]
Во втором случае, используем другой способ вычисления средних значений
[CODE] using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WealthLab;
using WealthLab.Indicators;
using WealthLab.Optimizers;
using WealthLab.Strategies;
namespace ConsoleApplication1
{
class Test : WealthScript
{
protected override void Execute()
{
DataSeries ds = SMA.Series(Close, 20);
for (int bar = 20; bar < Bars.Count; bar++)
{
double test1 = getAverageValue(ds, 10, bar);
double test2 = getAverageValue(ds, 20, bar);
if (test1 > test2)
{
BuyAtLimit(bar + 1, Close[bar]);
}
else
{
SellAtLimit(bar + 1, Position.AllPositions, Close[bar]);
}
}
}
public double getAverageValue(DataSeries ds, int days, int curBar)
{
double sum_value = 0;
for (int i = 0; i < days; i++)
{
sum_value += ds[curBar - i];
}
return sum_value / days;
}
}
}
[/CODE]