Легкие задачки

10/11/2010 3:53:37 PM
Gravatar
Total Posts 3

Легкие задачки

SMA c параметром 20, если больше чем на текущем баре 3 бара назад, то покупаем, в противном случае продаем.docx

[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++)

{

if (ds[bar] > ds[bar - 3]) {

BuyAtLimit(bar + 1, Close[bar]);

}

if (ds[bar] < ds[bar - 3])

{

SellAtLimit(bar + 1, Position.AllPositions, Close[bar]);

}

}

}

}

}[/CODE]

10/11/2010 10:50:37 PM
Gravatar
Total Posts 3

RE:Легкие задачки

Две скользящие средние с параметром 60 и 20. Покупать когда пересечение с 20, а продавать когда с 60

[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++)

{

if (ds[bar] > ds[bar - 3]) {

BuyAtLimit(bar + 1, Close[bar]);

}

if (ds[bar] < ds[bar - 3])

{

SellAtLimit(bar + 1, Position.AllPositions, Close[bar]);

}

}

}

}

}

[/CODE]

10/13/2010 9:53:11 PM
Gravatar
Total Posts 3

RE:Легкие задачки

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]