Начитался квантов, тоже решил попробовать как они :)
В общем, получилась система, которая позволяла на истории зарабатывать на валютной паре EURUSD либо на фьючерсе на Евро. Правила довольно просты.
Для длинных позиций:
1. Если на сегодняшний день нет открытых позиций
2. Если сегодняшний лоу выше хая прошлого месяца
3. Если индикатор ROC, построенный по ценам закрытия с периодом 10, сегодня меньше чем вчера
Выставляем лимитный ордер на открытие позиции по цене вчерашнего лоу
Для коротких позиций все наоборот.
Если открылась позиция, закрываем ее в конце дня.
Исторический тест за 15 последних лет одним лотом (100 000) валютной пары EURUSD
Код для WealthLab 6:
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using WealthLab;
using WealthLab.Indicators;
namespace WealthLab.Strategies
{
public class MyStrategy : WealthScript
{
protected override void Execute()
{
SetScaleMonthly();
DataSeries MonthlyHigh = High;
DataSeries MonthlyLow = Low;
RestoreScale();
MonthlyHigh = Synchronize(MonthlyHigh);
MonthlyLow = Synchronize(MonthlyLow);
DataSeries PC = ROC.Series(Close, 10);
ChartPane PCPane = CreatePane( 60, true, true );
PlotSeries(PCPane,PC,Color.Green,LineStyle.Histogram,1);
PlotSeries(PricePane,MonthlyHigh,Color.Red,LineStyle.Solid,1);
PlotSeries(PricePane,MonthlyLow,Color.Green,LineStyle.Solid,1);
PlotStops();
for(int bar = 20; bar < Bars.Count; bar++)
{
if (IsLastPositionActive)
{
SellAtClose(bar, LastPosition);
CoverAtClose(bar, LastPosition);
}
if ( LastActivePosition == null )
if(Low[bar] > MonthlyHigh[bar-1])
if(PC[bar] < PC[bar-1])
BuyAtLimit(bar+1, Low[bar]);
if ( LastActivePosition == null )
if(High[bar] < MonthlyLow[bar-1])
if(PC[bar] > PC[bar-1])
ShortAtLimit(bar+1, High[bar]);
}
}
}
}
В общем, получилась система, которая позволяла на истории зарабатывать на валютной паре EURUSD либо на фьючерсе на Евро. Правила довольно просты.
Для длинных позиций:
1. Если на сегодняшний день нет открытых позиций
2. Если сегодняшний лоу выше хая прошлого месяца
3. Если индикатор ROC, построенный по ценам закрытия с периодом 10, сегодня меньше чем вчера
Выставляем лимитный ордер на открытие позиции по цене вчерашнего лоу
Для коротких позиций все наоборот.
Если открылась позиция, закрываем ее в конце дня.
Исторический тест за 15 последних лет одним лотом (100 000) валютной пары EURUSD
Код для WealthLab 6:
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using WealthLab;
using WealthLab.Indicators;
namespace WealthLab.Strategies
{
public class MyStrategy : WealthScript
{
protected override void Execute()
{
SetScaleMonthly();
DataSeries MonthlyHigh = High;
DataSeries MonthlyLow = Low;
RestoreScale();
MonthlyHigh = Synchronize(MonthlyHigh);
MonthlyLow = Synchronize(MonthlyLow);
DataSeries PC = ROC.Series(Close, 10);
ChartPane PCPane = CreatePane( 60, true, true );
PlotSeries(PCPane,PC,Color.Green,LineStyle.Histogram,1);
PlotSeries(PricePane,MonthlyHigh,Color.Red,LineStyle.Solid,1);
PlotSeries(PricePane,MonthlyLow,Color.Green,LineStyle.Solid,1);
PlotStops();
for(int bar = 20; bar < Bars.Count; bar++)
{
if (IsLastPositionActive)
{
SellAtClose(bar, LastPosition);
CoverAtClose(bar, LastPosition);
}
if ( LastActivePosition == null )
if(Low[bar] > MonthlyHigh[bar-1])
if(PC[bar] < PC[bar-1])
BuyAtLimit(bar+1, Low[bar]);
if ( LastActivePosition == null )
if(High[bar] < MonthlyLow[bar-1])
if(PC[bar] > PC[bar-1])
ShortAtLimit(bar+1, High[bar]);
}
}
}
}
Комментариев нет:
Отправить комментарий