ОСВЕЩАЯ ПУТЬ К ПРИБЫЛЬНОЙ ТОРГОВЛЕ: пошаговое руководство по созданию инструмента проверки торговой стратегии с помощью макросов VBA

Excel — это приложение для работы с электронными таблицами, которое широко используется в финансовой сфере. Он позволяет хранить данные и управлять ими, выполнять вычисления и создавать диаграммы и графики. В этой главе мы рассмотрим основы Excel, которые вам необходимо знать для создания электронной таблицы для тестирования на исторических данных.

Microsoft Excel — это широко используемое программное приложение для создания электронных таблиц и выполнения расчетов. Это часть пакета программного обеспечения для повышения производительности Microsoft Office, в который также входят Microsoft Word, PowerPoint и другие программы. Microsoft Office — один из самых популярных программных пакетов в мире, которым ежедневно пользуются миллионы людей как в личных, так и в деловых целях. На самом деле, он настолько вездесущ, что практически стал нарицательным, и многие люди называют любое офисное программное обеспечение «Microsoft Office», независимо от того, сделано оно Microsoft или нет.

Например, давайте рассчитаем SMA для цены акций или индекса с помощью Excel.

SMA расшифровывается как Simple Moving Average и является широко используемым индикатором технического анализа. Это запаздывающий индикатор, который дает сглаженное среднее значение цены за определенный период времени, часто используемый трейдерами для выявления трендов и определения сигналов на покупку и продажу. Формула для расчета SMA:

SMA = сумма цен закрытия за период / количество периодов

В экселе это выглядит так:

Чтобы рассчитать 5-дневную SMA, вы должны сложить цены закрытия за последние 5 дней, а затем разделить на 5. Чтобы рассчитать 10-дневную SMA, вы должны сложить цены закрытия за последние 10 дней, а затем разделить на 10.

В Excel есть множество формул, которые помогают пользователям мгновенно выполнять почти все расчеты. Для расчета 5-дневной SMA используется формула

SMA = сумма цен закрытия за период / количество периодов

будет преобразован в язык Excel следующим образом:

=СУММ(СМЕЩ(L2,0,0,$B$2,1))/$B$2

В ячейке B2 хранится период (в данном случае это 5), а в ячейке L2 хранится цена закрытия. Окончательный результат будет храниться в ячейке P2 и так далее. У нас может быть другая более простая формула для выполнения этой работы:

=СРЕДНЕЕ(СМЕЩЕНИЕ(L2,0,0,$B$2,1))

В дополнение к формулам, доступным на листах Excel, Excel также предоставляет пользователям мощный инструмент для более настраиваемых вычислений и действий. Этот инструмент известен как VBA или Visual Basic для приложений. С помощью VBA пользователи могут писать код для автоматизации задач, выполнения сложных вычислений и создания пользовательских функций в соответствии со своими конкретными потребностями. VBA обеспечивает большую гибкость и контроль над функциями и функциями Excel, что делает его ценным инструментом для опытных пользователей и программистов.

Самое главное и интересное: VBA является неотъемлемой частью Microsoft Excel, и вам не нужно устанавливать его отдельно, как в случае с другими языками программирования, такими как Python. Это связано с тем, что VBA — это встроенный язык программирования, разработанный специально для Excel и других приложений Microsoft Office. Это означает, что любой, у кого на компьютере установлен Microsoft Office, уже имеет доступ к VBA и может сразу начать его использовать. С помощью VBA пользователи могут автоматизировать повторяющиеся задачи, создавать настраиваемые функции и создавать сложные приложения в Excel, и все это без необходимости каких-либо дополнительных установок или программного обеспечения.

Если вы используете Microsoft Office, вам не нужно платить дополнительные сборы за VBA. С помощью VBA пользователи могут писать свои собственные макросы и функции для автоматизации повторяющихся задач, создавать собственные функции и процедуры, манипулировать данными и анализировать их способами, недоступными с помощью стандартных функций Excel, и даже создавать пользовательские интерфейсы для своих электронных таблиц.

Термин Макро происходит от Макромоделирования, которое первоначально относилось к компьютерным программам, используемым для экономического прогнозирования и анализа. В VBA и Excel под макросом понимается набор инструкций или команд, которые могут выполняться автоматически для выполнения конкретной задачи и повышения эффективности.

VBA — хорошо зарекомендовавший себя инструмент с низкой вероятностью ошибок при установке и использовании. По сравнению с другим сложным программным обеспечением, VBA не требует от пользователей технического обслуживания, так как этим занимается Microsoft. Это делает VBA простым и удобным инструментом для пользователей.

Например, с помощью VBA пользователи могут создать пользовательскую функцию, которая вычисляет сложную математическую формулу, автоматизировать ввод данных, создав форму, которую пользователи могут заполнять, и создать интерактивные информационные панели, которые отображают и обновляют данные в режиме реального времени.

VBA — мощный инструмент, но для его эффективного использования требуются некоторые знания в области программирования. Однако в Интернете доступно множество ресурсов, помогающих пользователям изучать VBA, включая учебные пособия, форумы и даже полные курсы.

Синтаксис VBA подобен другим языкам программирования, таким как C++, Java и Python. Но это намного проще, чем те большие парни. Он состоит из набора операторов, которые выполняются по порядку, и эти операторы могут включать условные операторы (if-then-else), циклы (for-next, do-while) и процедуры (подпрограммы и функции).

Например, если мы решили сделать такую ​​торговую стратегию:

Когда 10-дневная SMA пересекает 100-дневную SMA вверх, открывайте длинную позицию (покупка), в то время как краткосрочная SMA снижается относительно долгосрочной SMA, затем открывайте короткую позицию (продажа).

В VBA мы можем написать часть генерации сигнала как:

Private Sub Signals()

Private LongOK, ShortOK As Boolean
Private BuyPrice, SellPrice As Double
Dim Trigger, SMA10day, SMA100day As Double
Dim Candle As Long  ‘Candle means current candlestick

Trigger = [B8].Value  ‘an action standard is stored in cell B8
‘SMA10day is calculated by formula and stored in column P
‘SMA100day is calculated by formula and stored in column Q

If (Cells(Candle + 1, "P").Value - Cells(Candle + 1, "Q").Value) < 0 And _
(Cells(Candle, "P").Value - Cells(Candle, "Q").Value) / Cells(Candle, "Q").Value > Trigger Then 
‘The “Candle + 1” means one stick before current candlestick. The short term SMA is stored in column P, long term SMA is stored in column Q. This “If… Then” is talking about: one day ago, the short term SMA was lower than the long term SMA, but today the short term SMA is higher than the long term SMA and crosses above the long term SMA at a certain point, the difference is bigger than the Trigger, then the Long signal goes to OK.
    LongOK = True
    Exit Sub
End If

If (Cells(Candle + 1, "P").Value - Cells(Candle + 1, "Q").Value) > 0 And _
(Cells(Candle, "P").Value - Cells(Candle, "Q").Value) / Cells(Candle, "Q").Value < -1 * Trigger Then
‘The “Candle + 1” means one stick before current candlestick. The short term SMA is stored in column P, long term SMA is stored in column Q. This “If… Then” is talking about: one day ago, the short term SMA was higher than the long term SMA, but today the short term SMA is lower than the long term SMA and crosses below the long term SMA at a certain point, the difference is bigger than the Trigger, then the Short signal goes to OK.
    ShortOK = True
    Exit Sub
End If

‘Open Long
If LongOK = True And ShortOK = False Then
  Call OpenLong  ‘execute a subroutine to Open a Long position (Buying)
  Cells(Candle, "N").Value = "Buy/Open @ “ & BuyPrice 
End If

‘Open Short
If ShortOK = True And LongOK = False Then
   Call OpenShort ‘execute a subroutine to Open a Short position (Selling)
   Cells(Candle, "N").Value = "Sell/Open @ “ & SellPrice 
End If

End Sub

Видеть? Это очень легко понять, а? Каждый может это сделать. Конечно, эта процедура генерации сигналов является лишь небольшой частью всей программы тестирования VBA на исторических данных. Мы включили его сюда только в демонстрационных целях.

Таким образом, VBA — это мощный инструмент, который можно использовать для расширения возможностей Excel и автоматизации повторяющихся задач, что делает его ценным активом для всех, кто работает с большими объемами данных. И, что удивительно, похоже, что он создан для создания простого инструмента для тестирования на исторических данных, который может проверить ваши торговые стратегии, независимо от того, торгуете ли вы акциями или FOREX, если вы являетесь поклонником методологии технического анализа.

Поздравляем, вы зашли так далеко! Если вы чувствуете себя перегруженным, не волнуйтесь, просто помните, что Excel и VBA подобны паре туфлей — требуется некоторое время, чтобы их разносить, но как только вы это сделаете, они будут идеально вам подходить. И кто знает, может быть, однажды вы оглянетесь на эту главу и посмеетесь над тем, насколько невежественными вы были когда-то. А пока продолжайте практиковаться и помните: с большой силой приходит большая ответственность… и еще большие электронные таблицы!

ГЛАВА 2: ЧТО ТАКОЕ ПРОВЕРКА И ПОЧЕМУ ЭТО ТАК ВАЖНО

Нажмите Блог Data Gladiator (tyzu.com), чтобы бесплатно получить полное руководство!