TickAtlas
No Code ~15 min setup

Excel Integration

Build live trading dashboards in Microsoft Excel. Choose between Power Query (no VBA needed) or custom VBA functions for full control. Both support auto-refresh.

Choose Your Approach

Power Query (Recommended)

No VBA or coding required. Built-in data transformation. Auto-refresh with intervals. Works in Excel 2016+.

VBA Macros

Custom cell functions like =CLAW_RSI(). Full programmatic control. Faster refresh cycles. Requires macro-enabled workbook (.xlsm).

Method 1: Power Query

Step 1 — Open Power Query Editor: Go to the Data tab > Get Data > From Web.

Step 2: Enter the API URL

Select Advanced and configure:

bash
URL: https://tickatlas.com/v1/indicator?symbol=EURUSD&indicator=RSI_14&timeframe=H1

HTTP header:
  X-API-Key: YOUR_API_KEY

Step 3: Parse the JSON Response

Power Query will detect JSON automatically. Click To Table, then expand the columns you need: value, signal, timestamp.

Step 4: Enable Auto-Refresh

Right-click the query in the Queries & Connections pane > Properties.

  • Check Refresh every N minutes
  • Check Refresh data when opening the file
  • Minimum interval: 1 minute (use VBA for faster refresh)

Tip: Multiple Symbols

Create a separate Power Query for each symbol/indicator pair. Use the /v1/multi endpoint to fetch multiple symbols in a single request and reduce your API call count.

Method 2: VBA Custom Functions

Create custom cell functions like =CLAW_RSI("EURUSD","H1"). Open the VBA editor with Alt+F11, insert a new module, and paste:

TickAtlasAPI.bas
' Module: TickAtlasAPI
' Add this to a new VBA module via Alt+F11 > Insert > Module

Private Const BASE_URL As String = "https://tickatlas.com/v1"
Private Const API_KEY As String = "YOUR_API_KEY"  ' Store securely in practice

Public Function CLAW_RSI(symbol As String, Optional timeframe As String = "H1") As Variant
    CLAW_RSI = GetIndicator(symbol, "RSI_14", timeframe)
End Function

Public Function CLAW_MACD(symbol As String, Optional timeframe As String = "H1") As Variant
    CLAW_MACD = GetIndicator(symbol, "MACD_hist", timeframe)
End Function

Public Function CLAW_QUOTE(symbol As String, Optional field As String = "bid") As Variant
    Dim url As String
    url = BASE_URL & "/quote?symbol=" & symbol

    Dim json As String
    json = MakeRequest(url)

    If json = "" Then
        CLAW_QUOTE = CVErr(xlErrNA)
        Exit Function
    End If

    CLAW_QUOTE = ExtractJsonValue(json, field)
End Function

Private Function GetIndicator(symbol As String, indicator As String, timeframe As String) As Variant
    Dim url As String
    url = BASE_URL & "/indicator?symbol=" & symbol & _
          "&indicator=" & indicator & "&timeframe=" & timeframe

    Dim json As String
    json = MakeRequest(url)

    If json = "" Then
        GetIndicator = CVErr(xlErrNA)
        Exit Function
    End If

    GetIndicator = ExtractJsonValue(json, "value")
End Function

Private Function MakeRequest(url As String) As String
    On Error GoTo ErrorHandler
    Dim http As Object
    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "GET", url, False
    http.setRequestHeader "X-API-Key", API_KEY
    http.Send

    If http.Status = 200 Then
        MakeRequest = http.responseText
    Else
        MakeRequest = ""
    End If
    Exit Function

ErrorHandler:
    MakeRequest = ""
End Function

Private Function ExtractJsonValue(json As String, key As String) As Variant
    ' Simple JSON value extraction (works for flat responses)
    Dim pattern As String
    pattern = """" & key & """:"
    Dim pos As Long
    pos = InStr(json, pattern)
    If pos = 0 Then
        ExtractJsonValue = CVErr(xlErrNA)
        Exit Function
    End If
    Dim startPos As Long
    startPos = pos + Len(pattern)
    Dim endPos As Long
    endPos = InStr(startPos, json, ",")
    If endPos = 0 Then endPos = InStr(startPos, json, "}")
    Dim val As String
    val = Mid(json, startPos, endPos - startPos)
    val = Replace(val, """", "")
    If IsNumeric(val) Then
        ExtractJsonValue = CDbl(val)
    Else
        ExtractJsonValue = val
    End If
End Function

Auto-Refresh (VBA)

Add this to the ThisWorkbook module to auto-refresh every 30 seconds:

ThisWorkbook
' Auto-refresh macro — runs every N seconds
' Add to ThisWorkbook module

Private Sub Workbook_Open()
    ScheduleRefresh
End Sub

Private Sub ScheduleRefresh()
    ' Refresh every 30 seconds
    Application.OnTime Now + TimeValue("00:00:30"), "RefreshMarketData"
End Sub

Public Sub RefreshMarketData()
    ' Force recalculation of all CLAW_ functions
    Application.CalculateFull

    ' Update the "Last Updated" cell
    Range("B1").Value = "Last updated: " & Format(Now, "hh:mm:ss")

    ' Schedule next refresh
    ScheduleRefresh
End Sub

Public Sub StopRefresh()
    On Error Resume Next
    Application.OnTime Now + TimeValue("00:00:30"), "RefreshMarketData", , False
End Sub

Security Note

Never share your workbook with the API key hardcoded. In production, store the key in a separate config sheet or Windows environment variable and reference it from VBA using Environ("CLAW_API_KEY").

Usage in Cells

Cell FormulaReturns
=CLAW_RSI("EURUSD")RSI value (e.g., 58.43)
=CLAW_RSI("XAUUSD","D1")Daily RSI for Gold
=CLAW_MACD("GBPUSD")MACD histogram value
=CLAW_QUOTE("EURUSD","bid")Current bid price