> ## Documentation Index
> Fetch the complete documentation index at: https://edgeful.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# daily high low by session by candle

> For each trading day, identifies which intraday session (Asia, London, NY, or their overlaps) produced the day's high and the day's low, then splits the distribution by whether the daily candle closed green or red. Returns session-level counts and percentages for highs and lows on green days and on red days. Configurable via the three session time windows.



## OpenAPI

````yaml /openapi-public.json get /intraday_calculation/daily-high-low-by-session-by-candle/{market_type}/{ticker}
openapi: 3.1.0
info:
  title: Edgeful API
  description: >-
    Public API reference for Edgeful market analysis calculations. The bearer
    token is your Edgeful API key: paste the key itself in the docs playground.
    Report responses include row-level output in `detailed` only when your plan
    includes row-level detail.
  version: 1.0.0
servers:
  - url: https://api.edgeful.com
    description: Production
security:
  - BearerAuth: []
tags:
  - name: reports
  - name: live data
paths:
  /intraday_calculation/daily-high-low-by-session-by-candle/{market_type}/{ticker}:
    get:
      tags:
        - reports
      summary: daily high low by session by candle
      description: >-
        For each trading day, identifies which intraday session (Asia, London,
        NY, or their overlaps) produced the day's high and the day's low, then
        splits the distribution by whether the daily candle closed green or red.
        Returns session-level counts and percentages for highs and lows on green
        days and on red days. Configurable via the three session time windows.
      operationId: >-
        daily_high_low_by_session_by_candle_intraday_calculation_daily_high_low_by_session_by_candle__market_type___ticker__get
      parameters:
        - name: ticker
          in: path
          required: true
          schema:
            type: string
            description: >-
              ticker symbol. format varies by `market_type`: stocks use a plain
              symbol (e.g., SPY), forex uses a 6-character pair (e.g., EURUSD),
              crypto uses a contract pair (e.g., BTCUSD), futures uses the root
              symbol (e.g., ES).
            examples:
              - SPY
              - EURUSD
              - BTCUSD
              - ES
            title: Ticker
          description: >-
            ticker symbol. format varies by `market_type`: stocks use a plain
            symbol (e.g., SPY), forex uses a 6-character pair (e.g., EURUSD),
            crypto uses a contract pair (e.g., BTCUSD), futures uses the root
            symbol (e.g., ES).
        - name: market_type
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/MarketTypeEnum'
            description: >-
              market venue for the ticker. one of: `forex`, `futures`, `crypto`,
              `stock`. determines supported symbols and whether session-based
              intraday aggregation is available.
            examples:
              - stock
              - forex
          description: >-
            market venue for the ticker. one of: `forex`, `futures`, `crypto`,
            `stock`. determines supported symbols and whether session-based
            intraday aggregation is available.
        - name: start_date
          in: query
          required: true
          schema:
            type: string
            description: >-
              inclusive start date, `YYYY-MM-DD`, interpreted in the request
              `timezone`. sessions on or after this date are included in the
              calculation.
            examples:
              - '2024-01-01'
            title: Start Date
          description: >-
            inclusive start date, `YYYY-MM-DD`, interpreted in the request
            `timezone`. sessions on or after this date are included in the
            calculation.
        - name: end_date
          in: query
          required: true
          schema:
            type: string
            description: >-
              inclusive end date, `YYYY-MM-DD`, interpreted in the request
              `timezone`. sessions on or before this date are included in the
              calculation.
            examples:
              - '2024-12-31'
            title: End Date
          description: >-
            inclusive end date, `YYYY-MM-DD`, interpreted in the request
            `timezone`. sessions on or before this date are included in the
            calculation.
        - name: session1_start_time
          in: query
          required: false
          schema:
            type: string
            description: session 1 start time, `HH:MM:SS`, interpreted in Asia/Tokyo.
            title: Session1 Start Time
          description: session 1 start time, `HH:MM:SS`, interpreted in Asia/Tokyo.
        - name: session1_end_time
          in: query
          required: false
          schema:
            type: string
            description: session 1 end time, `HH:MM:SS`, interpreted in Asia/Tokyo.
            title: Session1 End Time
          description: session 1 end time, `HH:MM:SS`, interpreted in Asia/Tokyo.
        - name: session2_start_time
          in: query
          required: false
          schema:
            type: string
            description: session 2 start time, `HH:MM:SS`, interpreted in Europe/London.
            title: Session2 Start Time
          description: session 2 start time, `HH:MM:SS`, interpreted in Europe/London.
        - name: session2_end_time
          in: query
          required: false
          schema:
            type: string
            description: session 2 end time, `HH:MM:SS`, interpreted in Europe/London.
            title: Session2 End Time
          description: session 2 end time, `HH:MM:SS`, interpreted in Europe/London.
        - name: session3_start_time
          in: query
          required: false
          schema:
            type: string
            description: session 3 start time, `HH:MM:SS`, interpreted in America/New_York.
            title: Session3 Start Time
          description: session 3 start time, `HH:MM:SS`, interpreted in America/New_York.
        - name: session3_end_time
          in: query
          required: false
          schema:
            type: string
            description: session 3 end time, `HH:MM:SS`, interpreted in America/New_York.
            title: Session3 End Time
          description: session 3 end time, `HH:MM:SS`, interpreted in America/New_York.
        - name: timeframe
          in: query
          required: false
          schema:
            type: string
            description: >-
              intraday candle granularity used for the calculation. accepted
              values: `1min`, `5min`, `15min`, `30min`, `1hour`. route-specific
              defaults are shown in the `default` field.
            default: 5min
            title: Timeframe
          description: >-
            intraday candle granularity used for the calculation. accepted
            values: `1min`, `5min`, `15min`, `30min`, `1hour`. route-specific
            defaults are shown in the `default` field.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - BearerAuth: []
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl --request GET \
              --url 'https://api.edgeful.com/intraday_calculation/daily-high-low-by-session-by-candle/<market_type>/<ticker>?start_date=<start_date>&end_date=<end_date>' \
              --header 'Authorization: Bearer <api-key>'
        - lang: python
          label: Python
          source: >-
            import requests


            url =
            "https://api.edgeful.com/intraday_calculation/daily-high-low-by-session-by-candle/<market_type>/<ticker>?start_date=<start_date>&end_date=<end_date>"

            headers = {"Authorization": "Bearer <api-key>"}


            response = requests.get(url, headers=headers)

            print(response.json())
        - lang: javascript
          label: JavaScript
          source: >-
            const url =
            "https://api.edgeful.com/intraday_calculation/daily-high-low-by-session-by-candle/<market_type>/<ticker>?start_date=<start_date>&end_date=<end_date>";

            const options = {
              method: "GET",
              headers: { Authorization: "Bearer <api-key>" },
            };


            const response = await fetch(url, options);

            const data = await response.json();

            console.log(data);
        - lang: php
          label: PHP
          source: >-
            <?php

            $ch =
            curl_init("https://api.edgeful.com/intraday_calculation/daily-high-low-by-session-by-candle/<market_type>/<ticker>?start_date=<start_date>&end_date=<end_date>");

            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");

            curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer
            <api-key>"]);

            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

            $response = curl_exec($ch);

            curl_close($ch);

            echo $response;
        - lang: go
          label: Go
          source: |-
            package main

            import (
                "fmt"
                "io"
                "net/http"
            )

            func main() {
                req, _ := http.NewRequest("GET", "https://api.edgeful.com/intraday_calculation/daily-high-low-by-session-by-candle/<market_type>/<ticker>?start_date=<start_date>&end_date=<end_date>", nil)
                req.Header.Set("Authorization", "Bearer <api-key>")
                resp, _ := http.DefaultClient.Do(req)
                defer resp.Body.Close()
                body, _ := io.ReadAll(resp.Body)
                fmt.Println(string(body))
            }
        - lang: java
          label: Java
          source: >-
            import java.net.URI;

            import java.net.http.HttpClient;

            import java.net.http.HttpRequest;

            import java.net.http.HttpResponse;


            HttpClient client = HttpClient.newHttpClient();

            HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create("https://api.edgeful.com/intraday_calculation/daily-high-low-by-session-by-candle/<market_type>/<ticker>?start_date=<start_date>&end_date=<end_date>"))
                .header("Authorization", "Bearer <api-key>")
                .method("GET", HttpRequest.BodyPublishers.noBody())
                .build();
            HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

            System.out.println(response.body());
        - lang: ruby
          label: Ruby
          source: >-
            require "net/http"

            require "uri"


            uri =
            URI("https://api.edgeful.com/intraday_calculation/daily-high-low-by-session-by-candle/<market_type>/<ticker>?start_date=<start_date>&end_date=<end_date>")

            request = Net::HTTP::Get.new(uri)

            request["Authorization"] = "Bearer <api-key>"


            response = Net::HTTP.start(uri.hostname, uri.port, use_ssl:
            uri.scheme == "https") do |http|
              http.request(request)
            end

            puts response.body
components:
  schemas:
    MarketTypeEnum:
      type: string
      enum:
        - forex
        - futures
        - crypto
        - stock
      title: MarketTypeEnum
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: >-
        Use your Edgeful API key as the bearer token. In the API Reference
        authorization drawer, paste only the key (for example,
        `ef_live_<random>`).

````