Oh no! Where's the JavaScript?
Your Web browser does not have JavaScript enabled or does not support JavaScript. Please enable JavaScript on your Web browser to properly view this Web site, or upgrade to a Web browser that does support JavaScript.
Articles

Convert normal candlesticks to Heikin-Ashi candlesticks using Python

To convert normal candlesticks to Heikin-Ashi candlesticks using Python, you can follow this program. The Heikin-Ashi technique modifies the open, high, low, and close prices of candlesticks to filter out market noise and make trends easier to identify. 


Here's how you can implement this:

### Step-by-Step Guide

1. **Install Required Libraries**: Ensure you have the `pandas` library installed. If not, you can install it using pip.
    ```bash
    pip install pandas
    ```

2. **Understand Heikin-Ashi Formula**:
    - **Close**: The average of the open, high, low, and close for the current period.
    - **Open**: The average of the previous Heikin-Ashi open and close.
    - **High**: The maximum of the high, current Heikin-Ashi open, and current Heikin-Ashi close.
    - **Low**: The minimum of the low, current Heikin-Ashi open, and current Heikin-Ashi close.

3. **Python Implementation**:

```python
import pandas as pd

def heikin_ashi(df):
    # Ensure the DataFrame has the required columns
    if not {'Open', 'High', 'Low', 'Close'}.issubset(df.columns):
        raise ValueError("DataFrame must contain 'Open', 'High', 'Low', 'Close' columns")

    ha_df = pd.DataFrame(index=df.index, columns=['HA_Open', 'HA_High', 'HA_Low', 'HA_Close'])
    
    ha_df['HA_Close'] = (df['Open'] + df['High'] + df['Low'] + df['Close']) / 4

    for i in range(len(df)):
        if i == 0:
            ha_df.iat[0, 0] = df['Open'].iloc[0]  # HA_Open
        else:
            ha_df.iat[i, 0] = (ha_df.iat[i-1, 0] + ha_df.iat[i-1, 3]) / 2  # HA_Open

        ha_df.iat[i, 1] = max(df['High'].iloc[i], ha_df.iat[i, 0], ha_df.iat[i, 3])  # HA_High
        ha_df.iat[i, 2] = min(df['Low'].iloc[i], ha_df.iat[i, 0], ha_df.iat[i, 3])  # HA_Low

    return ha_df

# Example usage
data = {
    'Open': [1, 2, 3, 4, 5],
    'High': [2, 3, 4, 5, 6],
    'Low': [1, 1, 2, 3, 4],
    'Close': [2, 3, 3, 4, 5]
}
df = pd.DataFrame(data)

ha_df = heikin_ashi(df)
print(ha_df)
```

### Explanation:

- **Initialization**: The script initializes a new DataFrame `ha_df` for the Heikin-Ashi candlesticks.
- **HA_Close Calculation**: For each row, it calculates the Heikin-Ashi close as the average of the open, high, low, and close prices.
- **HA_Open Calculation**: For each row, starting from the second row, it calculates the Heikin-Ashi open as the average of the previous Heikin-Ashi open and close.
- **HA_High and HA_Low Calculation**: The script determines the Heikin-Ashi high as the maximum of the current high, Heikin-Ashi open, and Heikin-Ashi close, and the Heikin-Ashi low as the minimum of the current low, Heikin-Ashi open, and Heikin-Ashi close.

This code provides a simple and effective way to convert normal candlesticks to Heikin-Ashi candlesticks using pandas. Adjust the example usage part to match your actual data format and source.

caa June 15 2024 138 reads 0 comments Print

0 comments

Leave a Comment

Please Login to Post a Comment.
  • No Comments have been Posted.

Sign In
Not a member yet? Click here to register.
Forgot Password?