Skip to content

Alex-Shur/MOEX-Simulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MOEX Simulator - Симулятор торговли на бирже

Запуск программы

  1. Откройте ссылку MOEX-Simulator
  2. Программа загрузится с интерфейсом из нескольких вкладок

Описание

MOEX Simulator — это веб-приложение для симуляции торговли на бирже. Программа позволяет:

  • Загружать исторические данные по тикерам
  • Отрабатывать торговые стратегии в режиме проигрывания
  • Выставлять ордера на покупку/продажу и стоп-ордера
  • Отслеживать прибыль, убытки и просадку по счету
  • Анализировать результаты торговли
  • Необходимые котировки можно скачать на сайте https://moex.backtrader.ru/

Программа использует для графиков библиотеку IguanaCharts .


chart1

chart2

Структура интерфейса

Вкладка "Load" (Загрузка данных)

Это основная вкладка для инициализации программы. Здесь вы настраиваете параметры торговли и загружаете данные.

Параметры счета

  • Capital — начальная сумма денег на счете (по умолчанию: 1,000,000)

    • Именно с этой суммой начинается симуляция
  • Risk in % — процент риска от капитала на одну сделку (по умолчанию: 0.3%)

    • Используется при расчете размера позиции
  • Stop default — стоп-лосс по умолчанию в пунктах (по умолчанию: 100)

    • Применяется при расчете стопа
  • Stop mode — режим расчета стопа (отключено, значение: "price")

    • Зарезервировано для будущего использования
  • Data timeframe in min — таймфрейм данных в минутах (отключено, значение: 5)

    • Зарезервировано для будущего использования
  • Screen Size — размер экрана (по умолчанию: 1980x1080)

    • Влияет на масштабирование интерфейса и графиков
    • Доступные опции: 1980x1080 (FHD), 2560x1440 (2K)
  • Mode — режим торговли (по умолчанию: Stock Exchange)

    • Stock Exchange (int Count) — фондовая биржа, количество в целых числах
    • Crypto Exchange (float Count) — крипто-биржа, количество в дробных числах

Параметры времени

  • Start date (YYYYMMDD) — дата начала симуляции (по умолчанию: 20161213)

    • Формат: YYYYMMDD (год-месяц-день)
    • Пример: 20220101 = 1 января 2022 года
  • Play timeout (in ms) — время проигрывания одной свечи (по умолчанию: 200 мс)

    • Чем меньше значение, тем быстрее идет симуляция
    • В режиме Play программа обновляет данные на каждом таймауте

Основные тикеры

  • Ticker — основной тикер для торговли (по умолчанию: Si)

    • Пример: Si (Si-5.21 - рубль), EUR, GAZP (Газпром), YNDX (Яндекс)
  • Ticker Data — загрузить CSV файл с данными по основному тикеру

    • Должен содержать OHLCV данные (Open, High, Low, Close, Volume) в формате 5min
    • Требуемый формат CSV (с разделителем точка-запятая):
      DATE;TIME;OPEN;HIGH;LOW;CLOSE;VOLUME
      20161017;1000;65300,0000000;65430,0000000;65263,0000000;65339,0000000;40
      20161017;1005;65301,0000000;65319,0000000;65260,0000000;65294,0000000;418
      20161017;1010;65297,0000000;65313,0000000;65290,0000000;65302,0000000;29
      20161017;1015;65328,0000000;65328,0000000;65325,0000000;65325,0000000;50
      
      или
      Datetime,Open,High,Low,Close,Volume
      2024.11.01 00:00,2521.71,2522.3,2516.22,2520.1,3779.23
      2024.11.01 00:05,2520.1,2521.59,2517.48,2519.61,1910.82
      
      Необходимые котировки можно скачать на сайте https://moex.backtrader.ru/

Индикаторный тикер (дополнительный)

  • Indicator Ticker — дополнительный тикер для отображения (по умолчанию: USDTOM)

    • Используется только для визуализации, не для торговли
    • Пример: USDTOM (кросс-курс доллара)
  • Indicator Data — загрузить CSV файл с данными по индикаторному тикеру

    • Тот же формат, что и для основного тикера:
      DATE;TIME;OPEN;HIGH;LOW;CLOSE;VOLUME
      20161017;1000;1,0500000;1,0530000;1,0490000;1,0510000;1000
      20161017;1005;1,0510000;1,0520000;1,0500000;1,0515000;1200
      
      или
      Datetime,Open,High,Low,Close,Volume
      2024.11.01 00:00,2521.71,2522.3,2516.22,2520.1,3779.23
      2024.11.01 00:05,2520.1,2521.59,2517.48,2519.61,1910.82
      

Загрузка дополнительных данных

  • Equity — загрузить CSV файл с данными по капиталу счета

    • Используется для загрузки предыдущего состояния или для анализа
    • Формат CSV:
      Date,Capital,DrawDown
      2016-12-13 10:00:00,1000000,0
      2016-12-13 10:05:00,1000100,0
      ...
      
  • Trans — загрузить CSV файл с предыдущими транзакциями

    • Помогает восстановить предыдущую торговлю
    • Формат CSV:
      Date,Mode,Price,Count,Sum,Profit,DrawDown,Comment
      2016-12-13 10:05:00,buy,67.234,100,6723.4,0,0,New position
      ...
      

Кнопки управления

  • [Initialize] — инициализировать программу с выбранными параметрами

    • После заполнения всех полей и загрузки CSV файлов нажмите эту кнопку
    • Программа загрузит данные и вы сможете перейти на другие вкладки
  • [SAVE] — сохранить текущее состояние в локальном хранилище браузера

    • Автосохранение состояния при закрытии браузера
  • [RESTORE] — восстановить состояние из локального хранилища браузера

    • Загружает последнее сохраненное состояние

Вкладки просмотра данных (5 MIN, 1 H, 1 D)

После нажатия кнопки [Initialize] становятся доступны вкладки с графиками:

  • 5 MIN — график с таймфреймом 5 минут
  • 1 H — график с таймфреймом 1 час
  • 1 D — график с таймфреймом 1 день

На каждой вкладке отображаются:

  1. Два графика рядом:

    • Левый график — основной тикер (для торговли)
    • Правый график — индикаторный тикер (для справки)
  2. Кнопка "Play >>" (вверху слева):

    • Нажмите для начала проигрывания исторических данных
    • Во время проигрывания кнопка становится "Pause"
    • Нажмите еще раз для паузы
  3. Текущая дата/время (рядом с кнопкой Play)

    • Показывает дату и время текущей свечи в режиме проигрывания
  4. Левая панель управления ордерами (обычно слева от графиков):

    • Здесь можно создавать новые ордера
    • Просматривать и редактировать существующие ордера
    • Устанавливать стоп-ордера

Работа с ордерами

Создание нового ордера:

  1. На графике кликните на нужную цену или используйте диалог "New Order"
  2. Выберите тип: Buy (покупка) или Sell (продажа)
  3. Укажите цену и количество
  4. Нажмите кнопку для создания ордера

Редактирование ордера:

  1. Найдите ордер в списке текущих ордеров
  2. Кликните на него для редактирования
  3. Измените параметры и сохраните

Удаление ордера:

  1. Выберите ордер в списке
  2. Нажмите кнопку "Delete" или удалите вручную

Установка стоп-ордера:

  1. После создания основного ордера можно добавить стоп-лосс (SL) и тейк-профит (TP)
  2. SL (Stop-Loss) — ордер для закрытия позиции при убытке
  3. TP (Take-Profit) — ордер для закрытия позиции при прибыли

Диалог "New Order" (Создание обычного ордера)

Вызывается при нажатии кнопки [New Order] в панели "Orders".

Основные параметры:

  • Mode — тип ордера (Buy/Sell)

    • Buy — покупка (зеленый цвет)
    • Sell — продажа (красный цвет)
  • Price — цена ордера

    • Если оставить 0, то ордер срабатывает по цене открытия/закрытия свечи
    • Две вспомогательные кнопки:
      • [Get Market] — вставляет текущую цену тикера в поле Price
      • [Calc Stop] — рассчитывает величину стопа по формуле:
        Stop = 2 × ATR(100)
        if Stop > Stop_default:
            Stop = Stop_default
        
        Рассчитанная цена активации Stop вставляется в поле "Stop Activation"
  • Count — количество контрактов/акций

    • Кнопка [Calc Count] — автоматически рассчитывает количество исходя из:
      • Установленного уровня риска (Risk in % на вкладке Load)
      • Цены активации стопа (из поля "Stop Activation")
      • Формула: Count = (Capital × Risk%) / (Stop Activation - Price)

Параметры стоп-лосса:

  • Stop Activation — цена активации стоп-ордера

    • Когда цена достигает этого уровня, сработает стоп-лосс
  • Stop — цена исполнения стоп-ордера

    • Цена, по которой будет закрыта позиция при срабатывании стопа

Параметры тейк-профита:

  • Profit Activation — цена активации профит-ордера

    • Когда цена достигает этого уровня, сработает тейк-профит
  • Profit — цена исполнения профит-ордера

    • Цена, по которой будет закрыта позиция при срабатывании профита

Дополнительно:

  • Comment — комментарий к ордеру
    • Помогает отслеживать причину создания ордера
    • Сохраняется в истории транзакций

Исполнение:

  • При нажатии кнопки [Execute] будут выставлены:
    1. Основной ордер покупки/продажи
    2. Стоп-лосс ордер (если указаны Stop Activation и Stop)
    3. Тейк-профит ордер (если указаны Profit Activation и Profit)

Диалог "New Stop Order" (Создание стоп-ордера)

Вызывается при нажатии кнопки [New Order] в панели "Stop Orders".

Используется для создания дополнительных BuyStop/SellStop ордеров.

Основные параметры:

  • Mode — тип стоп-ордера
    • BuyStop — стоп-ордер на покупку (зеленый цвет)
    • SellStop — стоп-ордер на продажу (красный цвет)

Stop-Loss часть:

  • SL: Stop Activation — цена активации стоп-ордера для стоп-лосса

    • Когда цена достигает этого уровня, сработает SL ордер
  • SL: Stop — цена исполнения стоп-ордера для стоп-лосса

    • Цена закрытия позиции при срабатывании SL
  • SL: Count — количество контрактов/акций для стоп-лосса

    • Отдельное количество для этого ордера

Take-Profit часть:

  • TP: Profit Activation — цена активации профит-ордера

    • Когда цена достигает этого уровня, сработает TP ордер
  • TP: Profit — цена исполнения профит-ордера

    • Цена закрытия позиции при срабатывании TP
  • TP: Count — количество контрактов/акций для профита

    • Отдельное количество для этого ордера

Особенности:

  • Стоп-ордера срабатывают автоматически при проигрывании данных (режим Play)
  • Можно создавать несколько стоп-ордеров для одной позиции
  • Каждый стоп-ордер независимо отслеживает уровни активации

Диалог "Status" (Статус счета)

Отображается отдельным окном и показывает:

  • Capital — текущий размер капитала на счете

  • DD (DrawDown) — максимальная просадка от пика капитала

    • Показывает максимальный убыток с начала торговли
  • Cur Profit — текущая прибыль/убыток открытой позиции

  • Cur Pos — текущий объем открытой позиции (в количестве контрактов/акций)

  • Cur Sum — текущая сумма открытой позиции

  • [Close ALL] — закрыть все открытые позиции одной кнопкой и удаляет все неисполненные ордера

    • Удобно для быстрого выхода из позиции без создания нового ордера

Вкладка "Trans" (Транзакции)

Таблица всех совершенных сделок:

Поле Описание
# Номер сделки
Date Дата и время совершения сделки
Mode Тип: Buy (покупка) или Sell (продажа)
Price Цена исполнения ордера
Count Количество контрактов/акций
Sum Сумма сделки (Price × Count)
Profit Прибыль/убыток по сделке
DrawDown Просадка на момент сделки
Comment Комментарий к сделке

Кнопка [Save] — сохранить таблицу транзакций в CSV файл для дальнейшего анализа


Вкладка "Equity" (Капитал)

Таблица истории изменения капитала:

Поле Описание
Date Дата и время
Capital Размер капитала в этот момент
DrawDown Просадка в этот момент

Кнопка [Save] — сохранить таблицу капитала в CSV файл


Пошаговое руководство по использованию

Шаг 1: Подготовка данных

  1. Подготовьте CSV файл с историческими данными тикера
  2. Формат CSV (с разделителем точка-запятая):
    DATE;TIME;OPEN;HIGH;LOW;CLOSE;VOLUME
    20161017;1000;65300,0000000;65430,0000000;65263,0000000;65339,0000000;40
    20161017;1005;65301,0000000;65319,0000000;65260,0000000;65294,0000000;418
    20161017;1010;65297,0000000;65313,0000000;65290,0000000;65302,0000000;29
    20161017;1015;65328,0000000;65328,0000000;65325,0000000;65325,0000000;50
    
    или
    Datetime,Open,High,Low,Close,Volume
    2024.11.01 00:00,2521.71,2522.3,2516.22,2520.1,3779.23
    2024.11.01 00:05,2520.1,2521.59,2517.48,2519.61,1910.82
    
  3. Важные моменты:
    • Даты должны быть в порядке возрастания
    • Время должно соответствовать таймфрейму (10:00, 10:05, 10:10 и т.д. для 5min)

Шаг 2: Инициализация

  1. Откройте index.html в браузере
  2. На вкладке Load:
    • Установите Capital (начальный капитал)
    • Установите Risk in % (риск на сделку)
    • Выберите Mode (Stock Exchange или Crypto Exchange)
    • Установите Start date (дату начала)
    • Установите Play timeout (скорость проигрывания)
  3. Загрузите CSV файл в Ticker Data
  4. (Опционально) Загрузите данные индикаторного тикера
  5. Нажмите [Initialize]

Шаг 3: Торговля

  1. Перейдите на вкладку 5 MIN (или 1H, 1D)
  2. Нажмите кнопку Play >> для начала проигрывания
  3. Выставляйте ордера по мере проигрывания данных
  4. Следите за прибылью/убытком в диалоге Status

Шаг 4: Анализ результатов

  1. Перейдите на вкладку Trans для просмотра всех сделок
  2. Перейдите на вкладку Equity для просмотра истории капитала
  3. Сохраните данные кнопкой [Save] на каждой вкладке

Шаг 5: Сохранение состояния

  1. На вкладке Load нажмите [SAVE]
  2. Состояние будет сохранено в локальное хранилище браузера
  3. При следующем открытии нажмите [RESTORE] для восстановления

Советы по работе

Подготовка CSV файлов

  • Используйте данные в виде свечей (OHLCV)
  • Убедитесь, что временные метки в порядке возрастания
  • Проверьте, что стоимость находится в правильном масштабе (например, в копейках для рубля)

Режимы торговли

Stock Exchange (int Count):

  • Используйте для акций, фьючерсов
  • Количество всегда целое число
  • Пример: 100 акций Газпрома

Crypto Exchange (float Count):

  • Используйте для криптовалют
  • Количество может быть дробным
  • Пример: 0.5 BTC

Оптимальные параметры

  • Play timeout: 100-500 мс для нормального темпа проигрывания
  • Risk in %: 0.3-2% в зависимости от стратегии
  • Stop default: 50-200 пунктов в зависимости от волатильности

Работа со стоп-ордерами

  • SL (Stop Loss): Активируется по цене, закрывает позицию с убытком
  • TP (Take Profit): Активируется по цене, закрывает позицию с прибылью
  • Оба типа ордеров срабатывают автоматически во время Play

Клавиатурные сокращения

  • Play/Pause: Кнопка Play >> на каждой вкладке
  • Close ALL: Кнопка в диалоге Status для быстрого закрытия всех позиций

Требования к браузеру

  • Chrome 60+
  • Firefox 55+
  • Edge 79+
  • Safari 12+

Рекомендуется использование Chrome или Firefox для лучшей совместимости.


Решение проблем

График не отображается

  1. Проверьте формат CSV файла
  2. Убедитесь, что даты начина корректны
  3. Попробуйте нажать [Initialize] еще раз

Ордера не срабатывают

  1. Убедитесь, что включен режим Play
  2. Проверьте, что цена ордера находится в диапазоне текущих свечей
  3. Проверьте установку стоп-лосса и тейк-профита

Состояние не сохраняется

  1. Проверьте, включено ли локальное хранилище в браузере (Local Storage)
  2. Попробуйте очистить кэш браузера
  3. Используйте приватный режим в браузере (может помешать сохранению)

Благодарности

Программа использует следующие библиотеки:

  • jQuery 1.12.4
  • UIKit
  • jsRender
  • PapaParse
  • jQuery.qtip
  • jQuery.easing
  • jQuery-ui
  • Hammer.js
  • IguanaChart

Лицензия

Программа распространяется под лицензией GPL 3.0


About

Симулятор торговли на бирже

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published