где найти описание фунцкий на русском языке + помогите найти ошибку в коде

10/13/2011 6:05:52 AM
Gravatar
Total Posts 1

где найти описание фунцкий на русском языке + помогите найти ошибку в коде

1.

Где скачать описание функций (QuikRef) WealthScript на русском языке?

2.

Помогите разобраться, почему код компилится, но не выполняется (run the strategy)?

[CODE]using System;

using System.Collections.Generic;

//using System.Linq;

using System.Drawing;

using System.Text;

using WealthLab;

using WealthLab.Indicators;

using WealthLab.Optimizers;

using WealthLab.Strategies;

namespace WealthLab.Strategies

{

public class NRTR_ATR : WealthScript

{

protected override void Execute()

{

SetLogScale( PricePane, false );

int TR_Period = 20; // период WMA для True Range

int Dynamic_Channel_Period = 0; // длина динамического канала

int Max_Channel_Period = 20; // верхнее ограничение на длину динамического канала

int Trend = 0; // переменная для идентификации направления движения цены

double Reverse = 0; // NRTR_WATR

double HPrice=0; // максимальная цена за период

double LPrice=0; // минимальная цена за период

double Multiple = 2.0; // множитель для WATR

DataSeries slowma = SMA.Series(Close, 8);

DataSeries fastma = SMA.Series(Close, 3);

DataSeries K = WMA.Series( TrueRange.Series( Bars ), TR_Period ) * Multiple;

DataSeries NRTR_WATR = new DataSeries( Bars, "NRTR_WATR" );

PlotSeries( PricePane, NRTR_WATR, Color.Blue, WealthLab.LineStyle.Dotted, 2 );

for(int bar = K.FirstValidValue; bar < Bars.Count; bar++)

{

if( Trend >= 0 ) // восходящий тренд

{

if (Max_Channel_Period > Dynamic_Channel_Period)

{

Dynamic_Channel_Period++; // увеличиваем период канала

HPrice = Math.Max( Bars.Close[bar], Highest.Value(bar, Close, Dynamic_Channel_Period));

}

else HPrice = Math.Max( Bars.Close[bar], Highest.Value(bar, Close, Max_Channel_Period));

Reverse = HPrice - K[bar]; // индикатор для восходящего тренда

if( Bars.Close[bar] <= Reverse ) // переворот индикатора

{

Dynamic_Channel_Period = 0; // обнуляем период канала

Trend = -1; // меняем ориентацию тренда

LPrice = Bars.Close[bar];

Reverse = LPrice + K[bar];

}

}

if( Trend <= 0 ) // нисходящий тренд

{

if (Max_Channel_Period > Dynamic_Channel_Period)

{

Dynamic_Channel_Period++; // увеличиваем период канала

LPrice = Math.Min( Bars.Close[bar], Lowest.Value(bar, Close, Dynamic_Channel_Period));

}

else LPrice = Math.Min( Bars.Close[bar], Lowest.Value(bar, Close, Max_Channel_Period));

Reverse = LPrice + K[bar]; // индикатор для восходящего тренда

if( Bars.Close[bar] >= Reverse ) // переворот индикатора

{

Dynamic_Channel_Period = 0; // обнуляем период канала

Trend = 1; // меняем ориентацию тренда

HPrice = Bars.Close[bar];

Reverse = HPrice - K[bar];

}

}

NRTR_WATR[bar] = Reverse;

if (IsLastPositionActive)

{

//code your exit rules here

if ( CrossOver( bar, Close, NRTR_WATR ) )

SellAtMarket( bar+1, LastPosition);

}

else

{

//code your entry rules here

if ( CrossOver( bar, NRTR_WATR, Close) )

BuyAtMarket( bar+1);

}

}

}

}

}[/CODE]

10/13/2011 4:40:28 PM
Gravatar
Total Posts 151

RE:где найти описание фунцкий на русском языке + помогите найти ошибку в коде

2. В стратегии цикл начинается по значению K.FirstValidValue. Это значение 0, а внутри цикла происходит ошибка - номер бара не может быть меньше 1. Вывод - неверно рассчитывается первое доступное значение, но можно подставить константу, например 5.

10/13/2011 5:21:29 PM
Gravatar
Total Posts 2

RE:где найти описание фунцкий на русском языке + помогите найти ошибку в коде

1.А почему если убрать последние строчки где открываются/закрываются позиции, то все работает? (влд ошибку не пишет, рисует на графике nrtr_watr)

Убрать имеется в виду этот блок:

[QUOTE] if (IsLastPositionActive)

{

//code your exit rules here

if ( CrossOver( bar, Close, NRTR_WATR ) )

SellAtMarket( bar+1, LastPosition);

}

else

{

//code your entry rules here

if ( CrossOver( bar, NRTR_WATR, Close) )

BuyAtMarket( bar+1);

}

[/QUOTE]

2. Цикл вы имеете в виду этот: "for(int bar = K.FirstValidValue; bar < Bars.Count; bar++)" ?

Как вы думаете, почему автор nrtr_watr использовал его, а не стандартный "for(int bar = 20; bar < Bars.Count; bar++)"

(я в программировании на C# только в начале Пути, поэтому просто скачал NRTR в инете и добавил к нему блок с торговлей).

3. Про описание функций на русском языке помочь не сможете?

10/13/2011 6:25:23 PM
Gravatar
Total Posts 151

RE:где найти описание фунцкий на русском языке + помогите найти ошибку в коде

1. Потому, что ошибка возникает в методе CrossOver( bar, Close, NRTR_WATR ) (не проверял, может быть в торговом методе).

2. ну теоретически все индикаторы должны правильно указывать первый доступный для работы бар, но в данном случае индикатор не возвращает корректного значения.

3. про описание на русском пока не могу помочь

10/13/2011 7:29:13 PM
Gravatar
Total Posts 2

RE:где найти описание фунцкий на русском языке + помогите найти ошибку в коде

Спасибо!