Видео-урок Программируем стратегию BollingerBands
[vk]http://vk.com/video_ext.php?oid=-66650972&id=167470173&hash=62ad29fe5712f0aa&hd=3[/vk]
Темы занятия:
- Стратегия проверенная на истор. данных
-
- Определяем алгоритм торговли
- Реализация стратегии
Полезные ссылки:
- Алгоритм стратегии
- Индикатор "Rate Of Change" (ROC) в S# документации, википедия
- Индикатор "Экспоненциальная скользящая средняя" в S# документации, википедия
Вложения: Скачать проекты
Изменения в проектах:
Проект BollingerBandsRobot Файл MainWindow.cs
Начиная с версии S# 4.1.19.1 статус подключения коннектора вынесен в специальное свойство ConnectionState, которое может принимать следующие значения: Disconnected - Не активно, Disconnecting - В процессе отключения, Connected - В процессе подключения, Connecting - Подключение активно, Failed - Ошибка подключения
Таким образом, теперь нет свойства IsConnected, а наличие статуса подключения мы можем получать от свойства ConnectionState.
Было:
/// <summary>
/// Обработчик события закрытия окна
/// </summary>
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
if (Connection.SafeConnection.Trader != null && Connection.SafeConnection.Trader.IsConnected)
{
Connection.SafeConnection.Trader.Dispose();
}
Thread.CurrentThread.Abort();
base.OnClosing(e);
}
Стало:
/// <summary>
/// Обработчик события закрытия окна
/// </summary>
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
if (Connection.SafeConnection.Trader != null && Connection.SafeConnection.Trader.ConnectionState ==
ConnectionStates.Connected)
{
Connection.SafeConnection.Trader.Dispose();
}
Thread.CurrentThread.Abort();
base.OnClosing(e);
}
Комментарии (6)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Доброго дня Иван. Во всех примерах со стратегиями значения индикатора передаются в стратегию в виде графического значения
В таком случае стратегия зависит от графика, например запущу вывод на график 30-минутные свечи, а стратегию запущу на минутных свечах, в этом случае она работать не будет. Так передать значение индикатора не получается
Что можно еще придумать?
var bollinger = new BollingerBands; series.ProcessCandle += candle => { if (candle.State != CandleStates.Finished) return; var bollingerValue = bollinger.Process((DecimalIndicatorValue)candle.ClosePrice; }; var bs = new BollingerStrategy(bollingerValue, _series)
Или можем подписаться также на обработку свечей второй серии ```csharp _candleSeries2.ProcessCandle += candle => {
Добрый день. У меня такой вопрос. Немного изменил эту стратегию, логика работы таже, за исключением того, что расчёты происходят не по событию окончания свечки, а по событию изменения свечки. Как только цена достигает определённого уровня, регистрируется и отправляется ордер. С тестовым квиком всё работает, но с боевым квиком как только исполняется ордер (заключается сделка), сразу всё падает, появляется новое окно No Source Available и появляется вот такая ошибка. Причём ни на какую-то конкретную строку в коде она не указывает. Никак не могу разобраться, с чем это связано?
В Вашей стратегии встречается код:
Ошибка, о которой Вы пишите возникает из за того, что не найдено значение {3} для строки форматирования. Т.е. у Вас три аргумента передается:
а в строке форматирования требуется и четвертый элемент (индекс 3).
Чтобы код работал, нужно исправить строку форматирования (видимо, по ошибке вклинился индекс 3 в место 2), правильно так:
И таких кусков кода у Вас несколько.