2013-12-31

Торговая система EuroFSB

Начитался квантов, тоже решил попробовать как они :)
В общем, получилась система, которая позволяла на истории зарабатывать на валютной паре 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]);
}
}
}
}

Комментариев нет:

Отправить комментарий