2025-04-25 15:27:30 +02:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Setup"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Import Libaries"
]
},
{
"cell_type": "code",
2025-04-27 10:23:00 +02:00
"execution_count": 172,
2025-04-25 15:27:30 +02:00
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import MetaTrader5 as mt\n",
"import time\n",
"import re"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Login"
]
},
{
"cell_type": "code",
2025-04-27 10:23:00 +02:00
"execution_count": 173,
2025-04-25 15:27:30 +02:00
"metadata": {},
2025-04-27 10:23:00 +02:00
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 173,
"metadata": {},
"output_type": "execute_result"
}
],
2025-04-25 15:27:30 +02:00
"source": [
"# login to your Trading Account - sign up in the description\n",
"mt.initialize()\n",
" \n",
"login = 10730196\n",
"password = '#mDJu9O3'\n",
"server = 'VantageInternational-Demo'\n",
"\n",
"mt.login(login, password, server)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Set Symbol"
]
},
{
"cell_type": "code",
2025-04-27 10:23:00 +02:00
"execution_count": 174,
2025-04-25 15:27:30 +02:00
"metadata": {},
"outputs": [],
"source": [
"symbol = 'XAUUSD'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Calculate"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Get Alltimehigh "
]
},
{
"cell_type": "code",
2025-04-27 10:23:00 +02:00
"execution_count": 267,
2025-04-25 15:27:30 +02:00
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>time</th>\n",
" <th>open</th>\n",
" <th>high</th>\n",
" <th>low</th>\n",
" <th>close</th>\n",
" <th>tick_volume</th>\n",
" <th>spread</th>\n",
" <th>real_volume</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2025-01-31</td>\n",
" <td>2796.26</td>\n",
" <td>2817.07</td>\n",
" <td>2791.03</td>\n",
" <td>2799.25</td>\n",
" <td>176088</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>1</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-02-03</td>\n",
" <td>2800.67</td>\n",
" <td>2830.72</td>\n",
" <td>2772.09</td>\n",
" <td>2814.76</td>\n",
" <td>222780</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>2</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-02-04</td>\n",
" <td>2814.23</td>\n",
" <td>2845.34</td>\n",
" <td>2807.33</td>\n",
" <td>2842.09</td>\n",
" <td>190207</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>3</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-02-05</td>\n",
" <td>2842.57</td>\n",
" <td>2882.22</td>\n",
" <td>2839.76</td>\n",
" <td>2867.22</td>\n",
" <td>144079</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>4</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-02-06</td>\n",
" <td>2865.36</td>\n",
" <td>2873.34</td>\n",
" <td>2834.23</td>\n",
" <td>2855.99</td>\n",
" <td>136634</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>5</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-02-07</td>\n",
" <td>2855.96</td>\n",
" <td>2886.76</td>\n",
" <td>2852.55</td>\n",
" <td>2861.36</td>\n",
" <td>174549</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>6</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-02-10</td>\n",
" <td>2858.80</td>\n",
" <td>2911.71</td>\n",
" <td>2854.73</td>\n",
" <td>2907.97</td>\n",
" <td>174533</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>7</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-02-11</td>\n",
" <td>2907.84</td>\n",
" <td>2942.67</td>\n",
" <td>2881.61</td>\n",
" <td>2897.68</td>\n",
" <td>221876</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>8</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-02-12</td>\n",
" <td>2898.02</td>\n",
" <td>2909.09</td>\n",
" <td>2864.20</td>\n",
" <td>2904.11</td>\n",
" <td>185547</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>9</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-02-13</td>\n",
" <td>2904.02</td>\n",
" <td>2929.41</td>\n",
" <td>2900.54</td>\n",
" <td>2928.40</td>\n",
" <td>152063</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>10</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-02-14</td>\n",
" <td>2927.85</td>\n",
" <td>2939.99</td>\n",
" <td>2876.94</td>\n",
" <td>2882.55</td>\n",
" <td>180610</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>11</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-02-17</td>\n",
" <td>2884.84</td>\n",
" <td>2906.38</td>\n",
" <td>2878.83</td>\n",
" <td>2897.46</td>\n",
" <td>129712</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>12</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-02-18</td>\n",
" <td>2898.40</td>\n",
" <td>2936.88</td>\n",
" <td>2891.99</td>\n",
" <td>2935.23</td>\n",
" <td>139030</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>13</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-02-19</td>\n",
" <td>2935.71</td>\n",
" <td>2946.87</td>\n",
" <td>2918.54</td>\n",
" <td>2932.76</td>\n",
" <td>160944</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>14</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-02-20</td>\n",
" <td>2933.47</td>\n",
" <td>2954.83</td>\n",
" <td>2924.08</td>\n",
" <td>2938.61</td>\n",
" <td>155405</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>15</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-02-21</td>\n",
" <td>2938.70</td>\n",
" <td>2949.74</td>\n",
" <td>2916.75</td>\n",
" <td>2935.95</td>\n",
" <td>159274</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>16</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-02-24</td>\n",
" <td>2935.19</td>\n",
" <td>2956.22</td>\n",
" <td>2921.30</td>\n",
" <td>2952.46</td>\n",
" <td>171870</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>17</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-02-25</td>\n",
" <td>2952.42</td>\n",
" <td>2953.75</td>\n",
" <td>2888.18</td>\n",
" <td>2914.93</td>\n",
" <td>198402</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>18</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-02-26</td>\n",
" <td>2915.06</td>\n",
" <td>2930.16</td>\n",
" <td>2890.77</td>\n",
" <td>2916.36</td>\n",
" <td>158179</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>19</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-02-27</td>\n",
" <td>2916.73</td>\n",
" <td>2920.82</td>\n",
" <td>2867.77</td>\n",
" <td>2877.15</td>\n",
" <td>207221</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>20</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-02-28</td>\n",
" <td>2877.31</td>\n",
" <td>2885.07</td>\n",
" <td>2832.62</td>\n",
" <td>2859.03</td>\n",
" <td>224045</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>21</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-03-03</td>\n",
" <td>2856.18</td>\n",
" <td>2895.21</td>\n",
" <td>2855.57</td>\n",
" <td>2893.66</td>\n",
" <td>205740</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>22</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-03-04</td>\n",
" <td>2892.77</td>\n",
" <td>2927.81</td>\n",
" <td>2881.92</td>\n",
" <td>2917.65</td>\n",
" <td>214258</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>23</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-03-05</td>\n",
" <td>2917.84</td>\n",
" <td>2929.88</td>\n",
" <td>2894.34</td>\n",
" <td>2919.11</td>\n",
" <td>231043</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>24</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-03-06</td>\n",
" <td>2919.52</td>\n",
" <td>2926.51</td>\n",
" <td>2891.20</td>\n",
" <td>2911.01</td>\n",
" <td>219058</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>25</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-03-07</td>\n",
" <td>2911.39</td>\n",
" <td>2930.42</td>\n",
" <td>2896.78</td>\n",
" <td>2912.06</td>\n",
" <td>225312</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>26</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-03-10</td>\n",
" <td>2911.25</td>\n",
" <td>2918.22</td>\n",
" <td>2880.22</td>\n",
" <td>2889.02</td>\n",
" <td>220535</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>27</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-03-11</td>\n",
" <td>2888.82</td>\n",
" <td>2922.13</td>\n",
" <td>2880.30</td>\n",
" <td>2916.08</td>\n",
" <td>175258</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>28</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-03-12</td>\n",
" <td>2915.66</td>\n",
" <td>2940.48</td>\n",
" <td>2906.11</td>\n",
" <td>2933.24</td>\n",
" <td>170540</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>29</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-03-13</td>\n",
" <td>2934.10</td>\n",
" <td>2989.05</td>\n",
" <td>2932.89</td>\n",
" <td>2989.01</td>\n",
" <td>177969</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>30</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-03-14</td>\n",
" <td>2989.31</td>\n",
" <td>3004.93</td>\n",
" <td>2978.46</td>\n",
" <td>2986.39</td>\n",
" <td>197059</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>31</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-03-17</td>\n",
" <td>2984.83</td>\n",
" <td>3001.86</td>\n",
" <td>2982.13</td>\n",
" <td>3001.42</td>\n",
" <td>155946</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>32</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-03-18</td>\n",
" <td>3001.16</td>\n",
" <td>3038.25</td>\n",
" <td>2999.39</td>\n",
" <td>3034.08</td>\n",
" <td>179165</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>33</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-03-19</td>\n",
" <td>3033.89</td>\n",
" <td>3051.96</td>\n",
" <td>3022.79</td>\n",
" <td>3047.26</td>\n",
" <td>174636</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>34</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-03-20</td>\n",
" <td>3047.96</td>\n",
" <td>3057.46</td>\n",
" <td>3025.69</td>\n",
" <td>3044.64</td>\n",
" <td>200333</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>35</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-03-21</td>\n",
" <td>3044.55</td>\n",
" <td>3047.43</td>\n",
" <td>2999.46</td>\n",
" <td>3023.15</td>\n",
" <td>185542</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>36</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-03-24</td>\n",
" <td>3021.99</td>\n",
" <td>3033.33</td>\n",
" <td>3002.46</td>\n",
" <td>3011.81</td>\n",
" <td>193224</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>37</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-03-25</td>\n",
" <td>3011.62</td>\n",
" <td>3035.94</td>\n",
" <td>3007.55</td>\n",
" <td>3020.34</td>\n",
" <td>153347</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>38</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-03-26</td>\n",
" <td>3019.39</td>\n",
" <td>3032.03</td>\n",
" <td>3012.34</td>\n",
" <td>3018.96</td>\n",
" <td>162718</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>39</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-03-27</td>\n",
" <td>3019.37</td>\n",
" <td>3059.67</td>\n",
" <td>3017.60</td>\n",
" <td>3056.73</td>\n",
" <td>196828</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>40</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-03-28</td>\n",
" <td>3056.57</td>\n",
" <td>3086.76</td>\n",
" <td>3054.19</td>\n",
" <td>3084.56</td>\n",
" <td>187584</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>41</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-03-31</td>\n",
" <td>3086.34</td>\n",
" <td>3127.96</td>\n",
" <td>3076.77</td>\n",
" <td>3124.07</td>\n",
" <td>209942</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>42</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-04-01</td>\n",
" <td>3122.98</td>\n",
" <td>3148.96</td>\n",
" <td>3100.79</td>\n",
" <td>3114.26</td>\n",
" <td>206537</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>43</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-04-02</td>\n",
" <td>3113.80</td>\n",
" <td>3143.32</td>\n",
" <td>3105.20</td>\n",
" <td>3133.56</td>\n",
" <td>188846</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>44</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-04-03</td>\n",
" <td>3142.25</td>\n",
" <td>3167.64</td>\n",
" <td>3054.21</td>\n",
" <td>3113.32</td>\n",
" <td>313074</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>45</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-04-04</td>\n",
" <td>3114.54</td>\n",
" <td>3136.61</td>\n",
" <td>3015.79</td>\n",
" <td>3038.42</td>\n",
" <td>252778</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>46</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-04-07</td>\n",
" <td>3008.62</td>\n",
" <td>3055.38</td>\n",
" <td>2956.52</td>\n",
" <td>2982.60</td>\n",
" <td>212668</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>47</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-04-08</td>\n",
" <td>2983.16</td>\n",
" <td>3022.64</td>\n",
" <td>2974.72</td>\n",
" <td>2982.34</td>\n",
" <td>185173</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>48</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-04-09</td>\n",
" <td>2983.48</td>\n",
" <td>3099.46</td>\n",
" <td>2969.98</td>\n",
" <td>3082.91</td>\n",
" <td>253727</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>49</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-04-10</td>\n",
" <td>3083.53</td>\n",
" <td>3176.29</td>\n",
" <td>3071.39</td>\n",
" <td>3175.77</td>\n",
" <td>184496</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>50</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-04-11</td>\n",
" <td>3175.72</td>\n",
" <td>3245.34</td>\n",
" <td>3175.71</td>\n",
" <td>3237.59</td>\n",
" <td>187568</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>51</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-04-14</td>\n",
" <td>3226.90</td>\n",
" <td>3245.72</td>\n",
" <td>3193.72</td>\n",
" <td>3210.36</td>\n",
" <td>157467</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>52</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-04-15</td>\n",
" <td>3211.18</td>\n",
" <td>3233.55</td>\n",
" <td>3210.02</td>\n",
" <td>3229.79</td>\n",
" <td>115741</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>53</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-04-16</td>\n",
" <td>3231.04</td>\n",
" <td>3342.39</td>\n",
" <td>3229.80</td>\n",
" <td>3342.26</td>\n",
" <td>172558</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>54</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-04-17</td>\n",
" <td>3343.13</td>\n",
" <td>3357.71</td>\n",
" <td>3283.98</td>\n",
" <td>3327.48</td>\n",
" <td>162159</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>55</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-04-21</td>\n",
" <td>3332.68</td>\n",
" <td>3430.48</td>\n",
" <td>3328.90</td>\n",
" <td>3424.67</td>\n",
" <td>165503</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>56</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-04-22</td>\n",
" <td>3424.07</td>\n",
" <td>3500.04</td>\n",
" <td>3366.85</td>\n",
" <td>3381.28</td>\n",
" <td>205173</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
2025-04-27 10:23:00 +02:00
" <th>57</th>\n",
2025-04-25 15:27:30 +02:00
" <td>2025-04-23</td>\n",
" <td>3353.28</td>\n",
" <td>3386.63</td>\n",
" <td>3260.21</td>\n",
2025-04-27 10:23:00 +02:00
" <td>3288.34</td>\n",
" <td>193560</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58</th>\n",
" <td>2025-04-24</td>\n",
" <td>3288.51</td>\n",
" <td>3367.41</td>\n",
" <td>3288.45</td>\n",
" <td>3349.38</td>\n",
" <td>160771</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59</th>\n",
" <td>2025-04-25</td>\n",
" <td>3350.42</td>\n",
" <td>3370.71</td>\n",
" <td>3265.04</td>\n",
" <td>3318.69</td>\n",
" <td>240555</td>\n",
2025-04-25 15:27:30 +02:00
" <td>18</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" time open high low close tick_volume spread \\\n",
2025-04-27 10:23:00 +02:00
"0 2025-01-31 2796.26 2817.07 2791.03 2799.25 176088 18 \n",
"1 2025-02-03 2800.67 2830.72 2772.09 2814.76 222780 18 \n",
"2 2025-02-04 2814.23 2845.34 2807.33 2842.09 190207 18 \n",
"3 2025-02-05 2842.57 2882.22 2839.76 2867.22 144079 18 \n",
"4 2025-02-06 2865.36 2873.34 2834.23 2855.99 136634 18 \n",
"5 2025-02-07 2855.96 2886.76 2852.55 2861.36 174549 18 \n",
"6 2025-02-10 2858.80 2911.71 2854.73 2907.97 174533 18 \n",
"7 2025-02-11 2907.84 2942.67 2881.61 2897.68 221876 18 \n",
"8 2025-02-12 2898.02 2909.09 2864.20 2904.11 185547 18 \n",
"9 2025-02-13 2904.02 2929.41 2900.54 2928.40 152063 18 \n",
"10 2025-02-14 2927.85 2939.99 2876.94 2882.55 180610 18 \n",
"11 2025-02-17 2884.84 2906.38 2878.83 2897.46 129712 18 \n",
"12 2025-02-18 2898.40 2936.88 2891.99 2935.23 139030 18 \n",
"13 2025-02-19 2935.71 2946.87 2918.54 2932.76 160944 18 \n",
"14 2025-02-20 2933.47 2954.83 2924.08 2938.61 155405 18 \n",
"15 2025-02-21 2938.70 2949.74 2916.75 2935.95 159274 18 \n",
"16 2025-02-24 2935.19 2956.22 2921.30 2952.46 171870 18 \n",
"17 2025-02-25 2952.42 2953.75 2888.18 2914.93 198402 18 \n",
"18 2025-02-26 2915.06 2930.16 2890.77 2916.36 158179 18 \n",
"19 2025-02-27 2916.73 2920.82 2867.77 2877.15 207221 18 \n",
"20 2025-02-28 2877.31 2885.07 2832.62 2859.03 224045 18 \n",
"21 2025-03-03 2856.18 2895.21 2855.57 2893.66 205740 18 \n",
"22 2025-03-04 2892.77 2927.81 2881.92 2917.65 214258 18 \n",
"23 2025-03-05 2917.84 2929.88 2894.34 2919.11 231043 18 \n",
"24 2025-03-06 2919.52 2926.51 2891.20 2911.01 219058 18 \n",
"25 2025-03-07 2911.39 2930.42 2896.78 2912.06 225312 18 \n",
"26 2025-03-10 2911.25 2918.22 2880.22 2889.02 220535 18 \n",
"27 2025-03-11 2888.82 2922.13 2880.30 2916.08 175258 18 \n",
"28 2025-03-12 2915.66 2940.48 2906.11 2933.24 170540 18 \n",
"29 2025-03-13 2934.10 2989.05 2932.89 2989.01 177969 18 \n",
"30 2025-03-14 2989.31 3004.93 2978.46 2986.39 197059 18 \n",
"31 2025-03-17 2984.83 3001.86 2982.13 3001.42 155946 18 \n",
"32 2025-03-18 3001.16 3038.25 2999.39 3034.08 179165 18 \n",
"33 2025-03-19 3033.89 3051.96 3022.79 3047.26 174636 18 \n",
"34 2025-03-20 3047.96 3057.46 3025.69 3044.64 200333 18 \n",
"35 2025-03-21 3044.55 3047.43 2999.46 3023.15 185542 18 \n",
"36 2025-03-24 3021.99 3033.33 3002.46 3011.81 193224 18 \n",
"37 2025-03-25 3011.62 3035.94 3007.55 3020.34 153347 18 \n",
"38 2025-03-26 3019.39 3032.03 3012.34 3018.96 162718 18 \n",
"39 2025-03-27 3019.37 3059.67 3017.60 3056.73 196828 18 \n",
"40 2025-03-28 3056.57 3086.76 3054.19 3084.56 187584 18 \n",
"41 2025-03-31 3086.34 3127.96 3076.77 3124.07 209942 18 \n",
"42 2025-04-01 3122.98 3148.96 3100.79 3114.26 206537 18 \n",
"43 2025-04-02 3113.80 3143.32 3105.20 3133.56 188846 18 \n",
"44 2025-04-03 3142.25 3167.64 3054.21 3113.32 313074 0 \n",
"45 2025-04-04 3114.54 3136.61 3015.79 3038.42 252778 18 \n",
"46 2025-04-07 3008.62 3055.38 2956.52 2982.60 212668 0 \n",
"47 2025-04-08 2983.16 3022.64 2974.72 2982.34 185173 18 \n",
"48 2025-04-09 2983.48 3099.46 2969.98 3082.91 253727 18 \n",
"49 2025-04-10 3083.53 3176.29 3071.39 3175.77 184496 18 \n",
"50 2025-04-11 3175.72 3245.34 3175.71 3237.59 187568 18 \n",
"51 2025-04-14 3226.90 3245.72 3193.72 3210.36 157467 18 \n",
"52 2025-04-15 3211.18 3233.55 3210.02 3229.79 115741 18 \n",
"53 2025-04-16 3231.04 3342.39 3229.80 3342.26 172558 18 \n",
"54 2025-04-17 3343.13 3357.71 3283.98 3327.48 162159 18 \n",
"55 2025-04-21 3332.68 3430.48 3328.90 3424.67 165503 18 \n",
"56 2025-04-22 3424.07 3500.04 3366.85 3381.28 205173 18 \n",
"57 2025-04-23 3353.28 3386.63 3260.21 3288.34 193560 18 \n",
"58 2025-04-24 3288.51 3367.41 3288.45 3349.38 160771 18 \n",
"59 2025-04-25 3350.42 3370.71 3265.04 3318.69 240555 18 \n",
2025-04-25 15:27:30 +02:00
"\n",
" real_volume \n",
"0 0 \n",
"1 0 \n",
"2 0 \n",
"3 0 \n",
"4 0 \n",
"5 0 \n",
"6 0 \n",
"7 0 \n",
"8 0 \n",
"9 0 \n",
"10 0 \n",
"11 0 \n",
"12 0 \n",
"13 0 \n",
"14 0 \n",
"15 0 \n",
"16 0 \n",
"17 0 \n",
"18 0 \n",
"19 0 \n",
"20 0 \n",
"21 0 \n",
"22 0 \n",
"23 0 \n",
"24 0 \n",
"25 0 \n",
"26 0 \n",
"27 0 \n",
"28 0 \n",
"29 0 \n",
"30 0 \n",
"31 0 \n",
"32 0 \n",
"33 0 \n",
"34 0 \n",
"35 0 \n",
"36 0 \n",
"37 0 \n",
"38 0 \n",
"39 0 \n",
"40 0 \n",
"41 0 \n",
"42 0 \n",
"43 0 \n",
"44 0 \n",
"45 0 \n",
"46 0 \n",
"47 0 \n",
"48 0 \n",
"49 0 \n",
"50 0 \n",
"51 0 \n",
"52 0 \n",
"53 0 \n",
"54 0 \n",
"55 0 \n",
"56 0 \n",
"57 0 \n",
"58 0 \n",
"59 0 "
]
},
2025-04-27 10:23:00 +02:00
"execution_count": 267,
2025-04-25 15:27:30 +02:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ohlc = mt.copy_rates_from_pos(symbol, mt.TIMEFRAME_D1, 0, 60)\n",
"ohlc_df = pd.DataFrame(ohlc)\n",
"ohlc_df['time']=pd.to_datetime(ohlc_df['time'], unit='s')\n",
"ohlc_df"
]
},
{
"cell_type": "code",
2025-04-27 10:23:00 +02:00
"execution_count": 268,
2025-04-25 15:27:30 +02:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(3500.0, 3367.0)"
]
},
2025-04-27 10:23:00 +02:00
"execution_count": 268,
2025-04-25 15:27:30 +02:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# alltime high, low - last 60 days\n",
"ath_df = ohlc_df.iloc[ohlc_df['high'].idxmax()]\n",
"ath = round(ath_df['high'],0)\n",
"atl = round(ath_df['low'],0)\n",
"ath, atl"
]
},
{
"cell_type": "code",
2025-04-27 10:23:00 +02:00
"execution_count": 269,
2025-04-25 15:27:30 +02:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2025-04-27 10:23:00 +02:00
"(3367.41, 3288.45)"
2025-04-25 15:27:30 +02:00
]
},
2025-04-27 10:23:00 +02:00
"execution_count": 269,
2025-04-25 15:27:30 +02:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#lastday high, low\n",
"ldh = ohlc_df.iloc[-2]['high']\n",
"ldl = ohlc_df.iloc[-2]['low']\n",
"ldh, ldl\n"
]
},
{
"cell_type": "code",
2025-04-27 10:23:00 +02:00
"execution_count": 270,
2025-04-25 15:27:30 +02:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2025-04-27 10:23:00 +02:00
"(3370.71, 3265.04)"
2025-04-25 15:27:30 +02:00
]
},
2025-04-27 10:23:00 +02:00
"execution_count": 270,
2025-04-25 15:27:30 +02:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#today high, low\n",
"tdh = ohlc_df.iloc[-1]['high']\n",
"tdl = ohlc_df.iloc[-1]['low']\n",
"tdh ,tdl\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2025-04-27 10:23:00 +02:00
"## Get High and Low last 5 Minutes intervall - 75 candles"
2025-04-25 15:27:30 +02:00
]
},
{
"cell_type": "code",
2025-04-27 10:23:00 +02:00
"execution_count": 271,
2025-04-25 15:27:30 +02:00
"metadata": {},
"outputs": [],
"source": [
"def tp_sl():\n",
2025-04-27 10:23:00 +02:00
" ohlc = mt.copy_rates_from_pos('XAUUSD', mt.TIMEFRAME_M5, 1, 75)\n",
2025-04-25 15:27:30 +02:00
" ohlc_df = pd.DataFrame(ohlc)\n",
" ohlc_df['time']=pd.to_datetime(ohlc_df['time'], unit='s')\n",
"\n",
"\n",
" # Create a column to mark the start of 5-minute intervals\n",
2025-04-27 10:23:00 +02:00
" ohlc_df['box_start'] = (ohlc_df['time'].dt.minute % 15 == 0).astype(int)\n",
2025-04-25 15:27:30 +02:00
" # Create columns for rolling maximum and minimum over the last 5 candles, excluding the current candle\n",
2025-04-27 10:23:00 +02:00
" ohlc_df['max_box'] = ohlc_df['high'].shift(1).rolling(window=15).max()\n",
" ohlc_df['min_box'] = ohlc_df['low'].shift(1).rolling(window=15).min()\n",
2025-04-25 15:27:30 +02:00
" # Breaking signal\n",
2025-04-27 10:23:00 +02:00
" #ohlc_df[\"Break_signal\"] = (ohlc_df[\"close\"] > ohlc_df[\"max_box\"]).astype(int) * 2 + (ohlc_df[\"close\"] < ohlc_df[\"min_box\"]).astype(int)\n",
2025-04-25 15:27:30 +02:00
" #print(ohlc_df['max_box'][14].astype(int)*2)\n",
"\n",
" return ohlc_df\n"
]
},
{
"cell_type": "code",
2025-04-27 10:23:00 +02:00
"execution_count": 272,
2025-04-25 15:27:30 +02:00
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>time</th>\n",
" <th>open</th>\n",
" <th>high</th>\n",
" <th>low</th>\n",
" <th>close</th>\n",
" <th>tick_volume</th>\n",
" <th>spread</th>\n",
" <th>real_volume</th>\n",
" <th>box_start</th>\n",
" <th>max_box</th>\n",
" <th>min_box</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
2025-04-27 10:23:00 +02:00
" <td>2025-04-25 17:45:00</td>\n",
" <td>3282.20</td>\n",
" <td>3282.66</td>\n",
" <td>3279.63</td>\n",
" <td>3280.86</td>\n",
" <td>1373</td>\n",
2025-04-25 15:27:30 +02:00
" <td>18</td>\n",
" <td>0</td>\n",
2025-04-27 10:23:00 +02:00
" <td>1</td>\n",
2025-04-25 15:27:30 +02:00
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
2025-04-27 10:23:00 +02:00
" <td>2025-04-25 18:00:00</td>\n",
" <td>3277.96</td>\n",
" <td>3280.87</td>\n",
" <td>3276.92</td>\n",
" <td>3280.03</td>\n",
" <td>1236</td>\n",
2025-04-25 15:27:30 +02:00
" <td>18</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
2025-04-27 10:23:00 +02:00
" <td>2025-04-25 18:15:00</td>\n",
" <td>3272.39</td>\n",
" <td>3275.33</td>\n",
" <td>3272.39</td>\n",
" <td>3273.67</td>\n",
" <td>1204</td>\n",
2025-04-25 15:27:30 +02:00
" <td>18</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
2025-04-27 10:23:00 +02:00
" <td>NaN</td>\n",
" <td>NaN</td>\n",
2025-04-25 15:27:30 +02:00
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
2025-04-27 10:23:00 +02:00
" <td>2025-04-25 18:30:00</td>\n",
" <td>3272.36</td>\n",
" <td>3275.36</td>\n",
" <td>3272.02</td>\n",
" <td>3274.25</td>\n",
" <td>1014</td>\n",
2025-04-25 15:27:30 +02:00
" <td>18</td>\n",
" <td>0</td>\n",
2025-04-27 10:23:00 +02:00
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
2025-04-25 15:27:30 +02:00
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
2025-04-27 10:23:00 +02:00
" <td>2025-04-25 18:45:00</td>\n",
" <td>3280.15</td>\n",
" <td>3281.25</td>\n",
" <td>3278.42</td>\n",
" <td>3280.74</td>\n",
" <td>771</td>\n",
2025-04-25 15:27:30 +02:00
" <td>18</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
2025-04-27 10:23:00 +02:00
" <td>NaN</td>\n",
" <td>NaN</td>\n",
2025-04-25 15:27:30 +02:00
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
2025-04-27 10:23:00 +02:00
" <td>2025-04-25 19:00:00</td>\n",
" <td>3282.96</td>\n",
" <td>3284.49</td>\n",
" <td>3281.25</td>\n",
" <td>3284.49</td>\n",
" <td>839</td>\n",
2025-04-25 15:27:30 +02:00
" <td>18</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
2025-04-27 10:23:00 +02:00
" <td>3285.59</td>\n",
" <td>3270.06</td>\n",
2025-04-25 15:27:30 +02:00
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
2025-04-27 10:23:00 +02:00
" <td>2025-04-25 19:15:00</td>\n",
" <td>3283.87</td>\n",
" <td>3284.03</td>\n",
" <td>3282.06</td>\n",
" <td>3283.46</td>\n",
" <td>503</td>\n",
2025-04-25 15:27:30 +02:00
" <td>18</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
2025-04-27 10:23:00 +02:00
" <td>3285.71</td>\n",
" <td>3270.06</td>\n",
2025-04-25 15:27:30 +02:00
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
2025-04-27 10:23:00 +02:00
" <td>2025-04-25 19:30:00</td>\n",
" <td>3283.25</td>\n",
" <td>3285.59</td>\n",
" <td>3283.12</td>\n",
" <td>3284.71</td>\n",
" <td>647</td>\n",
2025-04-25 15:27:30 +02:00
" <td>18</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
2025-04-27 10:23:00 +02:00
" <td>3285.71</td>\n",
" <td>3270.06</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>2025-04-25 19:45:00</td>\n",
" <td>3280.78</td>\n",
" <td>3283.15</td>\n",
" <td>3280.31</td>\n",
" <td>3283.07</td>\n",
" <td>696</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>3285.71</td>\n",
" <td>3272.02</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>2025-04-25 20:00:00</td>\n",
" <td>3285.31</td>\n",
" <td>3285.49</td>\n",
" <td>3281.97</td>\n",
" <td>3282.23</td>\n",
" <td>935</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>3287.48</td>\n",
" <td>3278.42</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>2025-04-25 20:15:00</td>\n",
" <td>3287.70</td>\n",
" <td>3290.24</td>\n",
" <td>3286.50</td>\n",
" <td>3289.91</td>\n",
" <td>888</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>3288.42</td>\n",
" <td>3280.31</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>2025-04-25 20:30:00</td>\n",
" <td>3286.99</td>\n",
" <td>3289.14</td>\n",
" <td>3286.15</td>\n",
" <td>3289.08</td>\n",
" <td>754</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>3291.22</td>\n",
" <td>3280.31</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>2025-04-25 20:45:00</td>\n",
" <td>3291.99</td>\n",
" <td>3292.61</td>\n",
" <td>3289.81</td>\n",
" <td>3291.86</td>\n",
" <td>746</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>3294.64</td>\n",
" <td>3280.31</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>2025-04-25 21:00:00</td>\n",
" <td>3293.22</td>\n",
" <td>3295.00</td>\n",
" <td>3291.48</td>\n",
" <td>3293.64</td>\n",
" <td>558</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>3295.10</td>\n",
" <td>3280.31</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>2025-04-25 21:15:00</td>\n",
" <td>3293.62</td>\n",
" <td>3294.76</td>\n",
" <td>3292.44</td>\n",
" <td>3294.53</td>\n",
" <td>424</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>3297.03</td>\n",
" <td>3281.78</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>2025-04-25 21:30:00</td>\n",
" <td>3293.21</td>\n",
" <td>3294.49</td>\n",
" <td>3292.38</td>\n",
" <td>3292.54</td>\n",
" <td>307</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>3297.03</td>\n",
" <td>3286.15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>2025-04-25 21:45:00</td>\n",
" <td>3291.28</td>\n",
" <td>3291.98</td>\n",
" <td>3290.34</td>\n",
" <td>3290.69</td>\n",
" <td>350</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>3297.03</td>\n",
" <td>3286.15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52</th>\n",
" <td>2025-04-25 22:00:00</td>\n",
" <td>3288.37</td>\n",
" <td>3290.12</td>\n",
" <td>3288.15</td>\n",
" <td>3289.65</td>\n",
" <td>522</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>3297.03</td>\n",
" <td>3288.33</td>\n",
" </tr>\n",
" <tr>\n",
" <th>55</th>\n",
" <td>2025-04-25 22:15:00</td>\n",
" <td>3289.72</td>\n",
" <td>3292.76</td>\n",
" <td>3289.64</td>\n",
" <td>3291.62</td>\n",
" <td>402</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>3297.03</td>\n",
" <td>3287.78</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58</th>\n",
" <td>2025-04-25 22:30:00</td>\n",
" <td>3294.65</td>\n",
" <td>3298.99</td>\n",
" <td>3294.65</td>\n",
" <td>3298.55</td>\n",
" <td>443</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>3295.21</td>\n",
" <td>3287.78</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61</th>\n",
" <td>2025-04-25 22:45:00</td>\n",
" <td>3308.50</td>\n",
" <td>3308.56</td>\n",
" <td>3304.18</td>\n",
" <td>3308.00</td>\n",
" <td>699</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>3308.72</td>\n",
" <td>3287.78</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64</th>\n",
" <td>2025-04-25 23:00:00</td>\n",
" <td>3304.77</td>\n",
" <td>3306.93</td>\n",
" <td>3304.77</td>\n",
" <td>3305.68</td>\n",
" <td>426</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>3312.45</td>\n",
" <td>3287.78</td>\n",
" </tr>\n",
" <tr>\n",
" <th>67</th>\n",
" <td>2025-04-25 23:15:00</td>\n",
" <td>3305.48</td>\n",
" <td>3307.01</td>\n",
" <td>3305.44</td>\n",
" <td>3306.68</td>\n",
" <td>231</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>3312.45</td>\n",
" <td>3287.78</td>\n",
" </tr>\n",
" <tr>\n",
" <th>70</th>\n",
" <td>2025-04-25 23:30:00</td>\n",
" <td>3308.53</td>\n",
" <td>3309.31</td>\n",
" <td>3308.05</td>\n",
" <td>3308.78</td>\n",
" <td>172</td>\n",
" <td>18</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>3312.45</td>\n",
" <td>3289.64</td>\n",
" </tr>\n",
" <tr>\n",
" <th>73</th>\n",
" <td>2025-04-25 23:45:00</td>\n",
" <td>3314.35</td>\n",
" <td>3315.61</td>\n",
" <td>3313.61</td>\n",
" <td>3314.07</td>\n",
" <td>353</td>\n",
" <td>28</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>3314.33</td>\n",
" <td>3294.65</td>\n",
2025-04-25 15:27:30 +02:00
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" time open high low close tick_volume \\\n",
2025-04-27 10:23:00 +02:00
"1 2025-04-25 17:45:00 3282.20 3282.66 3279.63 3280.86 1373 \n",
"4 2025-04-25 18:00:00 3277.96 3280.87 3276.92 3280.03 1236 \n",
"7 2025-04-25 18:15:00 3272.39 3275.33 3272.39 3273.67 1204 \n",
"10 2025-04-25 18:30:00 3272.36 3275.36 3272.02 3274.25 1014 \n",
"13 2025-04-25 18:45:00 3280.15 3281.25 3278.42 3280.74 771 \n",
"16 2025-04-25 19:00:00 3282.96 3284.49 3281.25 3284.49 839 \n",
"19 2025-04-25 19:15:00 3283.87 3284.03 3282.06 3283.46 503 \n",
"22 2025-04-25 19:30:00 3283.25 3285.59 3283.12 3284.71 647 \n",
"25 2025-04-25 19:45:00 3280.78 3283.15 3280.31 3283.07 696 \n",
"28 2025-04-25 20:00:00 3285.31 3285.49 3281.97 3282.23 935 \n",
"31 2025-04-25 20:15:00 3287.70 3290.24 3286.50 3289.91 888 \n",
"34 2025-04-25 20:30:00 3286.99 3289.14 3286.15 3289.08 754 \n",
"37 2025-04-25 20:45:00 3291.99 3292.61 3289.81 3291.86 746 \n",
"40 2025-04-25 21:00:00 3293.22 3295.00 3291.48 3293.64 558 \n",
"43 2025-04-25 21:15:00 3293.62 3294.76 3292.44 3294.53 424 \n",
"46 2025-04-25 21:30:00 3293.21 3294.49 3292.38 3292.54 307 \n",
"49 2025-04-25 21:45:00 3291.28 3291.98 3290.34 3290.69 350 \n",
"52 2025-04-25 22:00:00 3288.37 3290.12 3288.15 3289.65 522 \n",
"55 2025-04-25 22:15:00 3289.72 3292.76 3289.64 3291.62 402 \n",
"58 2025-04-25 22:30:00 3294.65 3298.99 3294.65 3298.55 443 \n",
"61 2025-04-25 22:45:00 3308.50 3308.56 3304.18 3308.00 699 \n",
"64 2025-04-25 23:00:00 3304.77 3306.93 3304.77 3305.68 426 \n",
"67 2025-04-25 23:15:00 3305.48 3307.01 3305.44 3306.68 231 \n",
"70 2025-04-25 23:30:00 3308.53 3309.31 3308.05 3308.78 172 \n",
"73 2025-04-25 23:45:00 3314.35 3315.61 3313.61 3314.07 353 \n",
2025-04-25 15:27:30 +02:00
"\n",
2025-04-27 10:23:00 +02:00
" spread real_volume box_start max_box min_box \n",
"1 18 0 1 NaN NaN \n",
"4 18 0 1 NaN NaN \n",
"7 18 0 1 NaN NaN \n",
"10 18 0 1 NaN NaN \n",
"13 18 0 1 NaN NaN \n",
"16 18 0 1 3285.59 3270.06 \n",
"19 18 0 1 3285.71 3270.06 \n",
"22 18 0 1 3285.71 3270.06 \n",
"25 18 0 1 3285.71 3272.02 \n",
"28 18 0 1 3287.48 3278.42 \n",
"31 18 0 1 3288.42 3280.31 \n",
"34 18 0 1 3291.22 3280.31 \n",
"37 18 0 1 3294.64 3280.31 \n",
"40 18 0 1 3295.10 3280.31 \n",
"43 18 0 1 3297.03 3281.78 \n",
"46 18 0 1 3297.03 3286.15 \n",
"49 18 0 1 3297.03 3286.15 \n",
"52 18 0 1 3297.03 3288.33 \n",
"55 18 0 1 3297.03 3287.78 \n",
"58 18 0 1 3295.21 3287.78 \n",
"61 18 0 1 3308.72 3287.78 \n",
"64 18 0 1 3312.45 3287.78 \n",
"67 18 0 1 3312.45 3287.78 \n",
"70 18 0 1 3312.45 3289.64 \n",
"73 28 0 1 3314.33 3294.65 "
2025-04-25 15:27:30 +02:00
]
},
2025-04-27 10:23:00 +02:00
"execution_count": 272,
2025-04-25 15:27:30 +02:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lastchart = tp_sl()\n",
2025-04-27 10:23:00 +02:00
"lastchart = lastchart.drop(lastchart[lastchart.box_start != 1].index)\n",
2025-04-25 15:27:30 +02:00
"lastchart"
]
},
{
"cell_type": "code",
2025-04-27 10:23:00 +02:00
"execution_count": 285,
2025-04-25 15:27:30 +02:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2025-04-27 10:23:00 +02:00
"44.26999999999998"
2025-04-25 15:27:30 +02:00
]
},
2025-04-27 10:23:00 +02:00
"execution_count": 285,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"current_high = lastchart['high'][73]\n",
"current_close = lastchart['close'][73]\n",
"#sl = lastchart['min_box'][23] - tp_sl_ratio * (current_high - current_close) # SL at the high of the current candle\n",
"#tp = lastchart['max_box'][23] + tp_sl_ratio * (current_high - current_close)\n",
"current_diff = lastchart.max_box.max() - lastchart.min_box.min()\n",
"lastchart.max_box.max() - lastchart.min_box.min()\n",
"\n",
"#current_close, current_high"
]
},
{
"cell_type": "code",
"execution_count": 274,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(3383.78, 3300.72, 3297.017, 3282.3729999999996)"
]
},
"execution_count": 274,
2025-04-25 15:27:30 +02:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"last_max = lastchart.max_box.mean()\n",
"last_min = lastchart.min_box.mean()\n",
2025-04-27 10:23:00 +02:00
"mean_high = round((ath + tdh + ldh + last_max) / 4, 2)\n",
"mean_low = round((atl + tdl + ldl + last_min) / 4, 2)\n",
2025-04-25 15:27:30 +02:00
"mean_high, mean_low, last_max, last_min"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Fibanaccio retracement"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The Fibonacci retracement strategy is a popular technical analysis tool to identify potential reversal levels in financial markets and is used by traders. Based on the Fibonacci sequence, this strategy involves plotting key retracement levels. The typical or default levels are **23.6%, 38.2%, 50%, 61.8%, and 78.6%**, against a price movement.\n",
"\n",
"- Total up move = $250 - $200 = $50 38.2% of up move = 38.2% * 50 = $19.1\n",
"- Retracement forecast = $250 - $19.1 = $230.9\n",
"\n",
"e.g.:\n",
"\n",
"res = AllTimeHigh - LastDayLow\n",
"fb1 = round(AllTimeHigh - (res * 0.236))\n",
"\n",
"**The ratios 38.2% and 61.8% are the most important support levels.**\n",
"\n",
"[Link zur Webseite Fibanaccio](https://blog.quantinsti.com/fibonacci-retracement-trading-strategy-python/)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Calculate BuyLimit"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Fibanaccio == Take Price**"
]
},
{
"cell_type": "code",
2025-04-27 10:23:00 +02:00
"execution_count": 275,
2025-04-25 15:27:30 +02:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2025-04-27 10:23:00 +02:00
"(3355.76, 3338.42, 3302.92, 3290.45)"
2025-04-25 15:27:30 +02:00
]
},
2025-04-27 10:23:00 +02:00
"execution_count": 275,
2025-04-25 15:27:30 +02:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"res = ath - ldl\n",
2025-04-27 10:23:00 +02:00
"res = ldh - tdl\n",
"res = mean_high - tdl\n",
"fb1 = round(mean_high - (res * 0.236),2)\n",
"fb2 = round(mean_high - (res * 0.382),2)\n",
"fb3 = round(mean_high - (res * 0.681),2)\n",
"fb4 = round(mean_high - (res * 0.786),2)\n",
2025-04-25 15:27:30 +02:00
"fb1, fb2, fb3, fb4"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Take Profit and Stop Loss**"
]
},
{
"cell_type": "code",
2025-04-27 10:23:00 +02:00
"execution_count": 276,
2025-04-25 15:27:30 +02:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2025-04-27 10:23:00 +02:00
"(3488.3500000000004, 3234.8199999999997)"
2025-04-25 15:27:30 +02:00
]
},
2025-04-27 10:23:00 +02:00
"execution_count": 276,
2025-04-25 15:27:30 +02:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tp = ath - ldh + fb1\n",
"sl = fb1 - (tp - ldh)\n",
"tp, sl"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Create Dataframe "
]
},
{
"cell_type": "code",
2025-04-27 10:23:00 +02:00
"execution_count": 277,
2025-04-25 15:27:30 +02:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2025-04-27 10:23:00 +02:00
"Aktueller Preis 3318.69 ist kleiner als FB1 3355.76, trading ist BuyStop\n",
"Aktueller Preis 3318.69 ist kleiner als FB2 3338.42, trading ist BuyStop\n",
"Aktueller Preis 3318.69 ist größer als FB3 3302.92, trading type ist BuyLimit\n",
"Aktueller Preis 3318.69 ist größer als FB4 3290.45, trading type ist BuyLimit\n"
2025-04-25 15:27:30 +02:00
]
},
{
"data": {
"text/plain": [
2025-04-27 10:23:00 +02:00
"['BuyStop', 'BuyStop', 'BuyLimit', 'BuyLimit']"
2025-04-25 15:27:30 +02:00
]
},
2025-04-27 10:23:00 +02:00
"execution_count": 277,
2025-04-25 15:27:30 +02:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"current_price = mt.symbol_info_tick(symbol)\n",
"fb = [fb1, fb2, fb3, fb4]\n",
"trading_type = []\n",
"\n",
"x = 1\n",
"for i in fb:\n",
" #print(i)\n",
" \n",
" if current_price.bid < i:\n",
" print(f\"Aktueller Preis {current_price.bid} ist kleiner als FB{x} {i}, trading ist BuyStop\")\n",
" trading_type.append('BuyStop')\n",
" elif current_price.bid > i: \n",
" print(f\"Aktueller Preis {current_price.bid} ist größer als FB{x} {i}, trading type ist BuyLimit\")\n",
" trading_type.append(\"BuyLimit\")\n",
" x += 1\n",
"\n",
"trading_type\n"
]
},
{
"cell_type": "code",
2025-04-27 10:23:00 +02:00
"execution_count": 278,
2025-04-25 15:27:30 +02:00
"metadata": {},
2025-04-27 10:23:00 +02:00
"outputs": [
{
"data": {
"text/plain": [
"83.0600000000004"
]
},
"execution_count": 278,
"metadata": {},
"output_type": "execute_result"
}
],
2025-04-25 15:27:30 +02:00
"source": [
2025-04-27 10:23:00 +02:00
"ldh - tdl\n",
"mean_high - mean_low"
2025-04-25 15:27:30 +02:00
]
},
{
"cell_type": "code",
2025-04-27 10:23:00 +02:00
"execution_count": 286,
2025-04-25 15:27:30 +02:00
"metadata": {},
"outputs": [],
"source": [
"tp_factor = ath-ldh\n",
2025-04-27 10:23:00 +02:00
"tp_factor = ath - tdh\n",
2025-04-25 15:27:30 +02:00
"#tp_factor = ath - mean_low\n",
2025-04-27 10:23:00 +02:00
"tp_factor = mean_high - mean_low - current_diff\n",
2025-04-25 15:27:30 +02:00
"sl_factor = [tp - fb1, tp - fb2, tp - fb3, tp - fb4]\n",
"\n",
"\n",
"data = {\n",
" 'trade_type' : [trading_type[0] + '01', trading_type[1] + '02', trading_type[2] + '03', trading_type[3] + '04'],\n",
" 'trade_price': [fb1, fb2, fb3, fb4],\n",
" 'trade_volume': [0.1, 0.2, 0.3, 0.4],\n",
" #'trade_sl': [fb1 - sl_factor, fb2 - sl_factor, fb3 - sl_factor, fb4 - sl_factor],\n",
" #'trade_sl': [fb1 - sl_factor[0], fb2 - sl_factor[1], fb3 - sl_factor[2], fb4 - sl_factor[3]],\n",
" 'trade_sl': [fb1 - tp_factor, fb2 - tp_factor, fb3 - tp_factor, fb4 - tp_factor],\n",
" 'trade_tp': [tp_factor + fb1, tp_factor + fb2, tp_factor + fb3, tp_factor + fb4]\n",
"\n",
"}"
]
},
{
"cell_type": "code",
2025-04-27 10:23:00 +02:00
"execution_count": 280,
2025-04-25 15:27:30 +02:00
"metadata": {},
"outputs": [],
"source": [
"# adj = 15\n",
"# factor = 5\n",
"# adj2 = adj - 5\n",
"\n",
"# data = {\n",
"# 'trade_type' : ['BuyLimit01', 'BuyLimit02', 'BuyLimit03', 'BuyLimit04', 'BuyLimit05', 'BuyLimit06', 'BuyLimit07', 'BuyLimit08', 'BuyLimit09', 'BuyStop01', 'BuyStop02'],\n",
"# 'trade_price': [ath - adj, ath - adj - 25, ath - adj - 50, ath - adj - 75, ath - adj - 100, ath - adj - 125, ath - adj - 150, ath - adj - 175, ath - adj - 200, ath - 66, ath - adj],\n",
"# 'trade_volume': [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.1, 0.1],\n",
"# 'trade_sl': [ath - adj - factor, ath - adj - 25 - factor, ath - adj - 50 - factor, ath - adj - 75 - factor, ath - adj - 100 - factor, ath - adj - 125 - factor, ath - adj - 150 - factor, ath - adj - 175 - factor, ath - adj - 200 - factor, ath - 66 - 20, ath - adj - 20],\n",
"# 'trade_tp': [ath - adj2, ath - adj2, ath - adj2, ath - adj2, ath - adj2, ath - adj2, ath - adj2, ath - adj2, ath - adj2, ath, ath]\n",
"\n",
"# }"
]
},
{
"cell_type": "code",
2025-04-27 10:23:00 +02:00
"execution_count": 288,
2025-04-25 15:27:30 +02:00
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>trade_type</th>\n",
" <th>trade_price</th>\n",
" <th>trade_volume</th>\n",
" <th>trade_sl</th>\n",
" <th>trade_tp</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>BuyStop01</td>\n",
2025-04-27 10:23:00 +02:00
" <td>3355.76</td>\n",
2025-04-25 15:27:30 +02:00
" <td>0.1</td>\n",
2025-04-27 10:23:00 +02:00
" <td>3316.97</td>\n",
" <td>3394.55</td>\n",
2025-04-25 15:27:30 +02:00
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>BuyStop02</td>\n",
2025-04-27 10:23:00 +02:00
" <td>3338.42</td>\n",
2025-04-25 15:27:30 +02:00
" <td>0.2</td>\n",
2025-04-27 10:23:00 +02:00
" <td>3299.63</td>\n",
" <td>3377.21</td>\n",
2025-04-25 15:27:30 +02:00
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
2025-04-27 10:23:00 +02:00
" <td>BuyLimit03</td>\n",
" <td>3302.92</td>\n",
2025-04-25 15:27:30 +02:00
" <td>0.3</td>\n",
2025-04-27 10:23:00 +02:00
" <td>3264.13</td>\n",
" <td>3341.71</td>\n",
2025-04-25 15:27:30 +02:00
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
2025-04-27 10:23:00 +02:00
" <td>BuyLimit04</td>\n",
" <td>3290.45</td>\n",
2025-04-25 15:27:30 +02:00
" <td>0.4</td>\n",
2025-04-27 10:23:00 +02:00
" <td>3251.66</td>\n",
" <td>3329.24</td>\n",
2025-04-25 15:27:30 +02:00
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
2025-04-27 10:23:00 +02:00
" trade_type trade_price trade_volume trade_sl trade_tp\n",
"0 BuyStop01 3355.76 0.1 3316.97 3394.55\n",
"1 BuyStop02 3338.42 0.2 3299.63 3377.21\n",
"2 BuyLimit03 3302.92 0.3 3264.13 3341.71\n",
"3 BuyLimit04 3290.45 0.4 3251.66 3329.24"
2025-04-25 15:27:30 +02:00
]
},
2025-04-27 10:23:00 +02:00
"execution_count": 288,
2025-04-25 15:27:30 +02:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.DataFrame(data)\n",
"df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Set volume on BuyStops to 0.1**"
]
},
{
"cell_type": "code",
2025-04-27 10:23:00 +02:00
"execution_count": 282,
2025-04-25 15:27:30 +02:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2025-04-27 10:23:00 +02:00
"BuyStop01 0.1 0\n",
"BuyStop02 0.2 1\n",
"BuyLimit03 0.3 2\n",
"BuyLimit04 0.4 3\n"
2025-04-25 15:27:30 +02:00
]
}
],
"source": [
"for index, row in df.iterrows():\n",
" if bool(re.search('^BuyStop[0-9]{2}', row.trade_type)):\n",
2025-04-27 10:23:00 +02:00
" df.loc[index, ['trade_volume']] = 0.1\n",
" print(row.trade_type, row.trade_volume, index)\n",
" "
2025-04-25 15:27:30 +02:00
]
},
{
"cell_type": "code",
2025-04-27 10:23:00 +02:00
"execution_count": 283,
2025-04-25 15:27:30 +02:00
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>trade_type</th>\n",
" <th>trade_price</th>\n",
" <th>trade_volume</th>\n",
" <th>trade_sl</th>\n",
" <th>trade_tp</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>BuyStop01</td>\n",
2025-04-27 10:23:00 +02:00
" <td>3355.76</td>\n",
2025-04-25 15:27:30 +02:00
" <td>0.1</td>\n",
2025-04-27 10:23:00 +02:00
" <td>3272.70</td>\n",
" <td>3438.82</td>\n",
2025-04-25 15:27:30 +02:00
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>BuyStop02</td>\n",
2025-04-27 10:23:00 +02:00
" <td>3338.42</td>\n",
2025-04-25 15:27:30 +02:00
" <td>0.1</td>\n",
2025-04-27 10:23:00 +02:00
" <td>3255.36</td>\n",
" <td>3421.48</td>\n",
2025-04-25 15:27:30 +02:00
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
2025-04-27 10:23:00 +02:00
" <td>BuyLimit03</td>\n",
" <td>3302.92</td>\n",
" <td>0.3</td>\n",
" <td>3219.86</td>\n",
" <td>3385.98</td>\n",
2025-04-25 15:27:30 +02:00
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
2025-04-27 10:23:00 +02:00
" <td>BuyLimit04</td>\n",
" <td>3290.45</td>\n",
" <td>0.4</td>\n",
" <td>3207.39</td>\n",
" <td>3373.51</td>\n",
2025-04-25 15:27:30 +02:00
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
2025-04-27 10:23:00 +02:00
" trade_type trade_price trade_volume trade_sl trade_tp\n",
"0 BuyStop01 3355.76 0.1 3272.70 3438.82\n",
"1 BuyStop02 3338.42 0.1 3255.36 3421.48\n",
"2 BuyLimit03 3302.92 0.3 3219.86 3385.98\n",
"3 BuyLimit04 3290.45 0.4 3207.39 3373.51"
2025-04-25 15:27:30 +02:00
]
},
2025-04-27 10:23:00 +02:00
"execution_count": 283,
2025-04-25 15:27:30 +02:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
2025-04-27 10:23:00 +02:00
{
"cell_type": "code",
"execution_count": 284,
"metadata": {},
"outputs": [],
"source": [
"#if bool(re.search('^BuyLimit[0-9]{2}', df.trade_type[1])) and df.trade_volume[0] == 0.1 and df.trade_volume[1] != 0.1:\n",
"# df.at[2, 'trade_volume'] = df.trade_volume[1] + 0.1\n",
"\n",
"#if df.trade_volume[2] != 0.1 and df.trade_volume[2] != 0.1:\n",
"# df.at[2, 'trade_volume'] = df.trade_volume[1] + 0.1\n",
"\n",
"#df"
]
},
2025-04-25 15:27:30 +02:00
{
"cell_type": "markdown",
"metadata": {},
"source": [
2025-04-27 10:23:00 +02:00
"# Place Order"
2025-04-25 15:27:30 +02:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Pending Orders in MT5**\n",
"\n",
"Pending orders allow you to execute trades at your predetermined levels rather than at the current market price. There are four types of pending orders: \n",
"\n",
"- **Buy Limit:** It is a pending order to buy an asset below the current market price. It is ideal for buying at a support level during correction.\n",
"\n",
"- **Sell Limit:** It is an order to sell an asset above the current market price. It helps to short-sell at the resistance level.\n",
"\n",
"- **Buy Stop:** It is a buy order used to catch the bullish breakouts. You can place a stop above the current market price. \n",
"\n",
"- **Sell Stop:** It is a sell order used to catch a bearish breakout by putting an order below the current market price."
]
},
{
"cell_type": "code",
2025-04-27 10:23:00 +02:00
"execution_count": 168,
2025-04-25 15:27:30 +02:00
"metadata": {},
2025-04-27 10:23:00 +02:00
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Falsch\n"
]
}
],
2025-04-25 15:27:30 +02:00
"source": [
"if bool(re.search('^StopLimit[0-9]{2}', 'BuyLimit01')):\n",
" print('Wahr')\n",
"else:\n",
" print('Falsch')"
]
},
{
"cell_type": "code",
2025-04-27 10:23:00 +02:00
"execution_count": 169,
2025-04-25 15:27:30 +02:00
"metadata": {},
"outputs": [],
"source": [
"def buyOrder(trade_type: str, trade_price: float, trade_volume: float, trade_sl: float, trade_tp: float, symbol: str):\n",
" \n",
" if bool(re.search('^BuyLimit[0-9]{2}', trade_type)):\n",
" # Buy Stop\n",
" request = {\n",
" \"action\": mt.TRADE_ACTION_PENDING,\n",
" \"symbol\": symbol,\n",
" \"volume\": trade_volume, # FLOAT\n",
" \"type\": mt.ORDER_TYPE_BUY_LIMIT,\n",
" \"price\": trade_price,\n",
" \"sl\": trade_sl, # FLOAT\n",
" \"tp\": trade_tp, # FLOAT\n",
" \"deviation\": 20, # INTERGER\n",
" \"magic\": 0, # INTERGER\n",
" \"comment\": trade_type,\n",
" \"type_time\": mt.ORDER_TIME_GTC,\n",
" \"type_filling\": mt.ORDER_FILLING_IOC,\n",
" }\n",
" else:\n",
" #Sell Stop \n",
" request = {\n",
" \"action\": mt.TRADE_ACTION_PENDING,\n",
" \"symbol\": symbol,\n",
" \"volume\": trade_volume, # FLOAT\n",
" \"type\": mt.ORDER_TYPE_BUY_STOP,\n",
" \"price\": trade_price,\n",
" \"sl\": trade_sl, # FLOAT\n",
" \"tp\": trade_tp, # FLOAT\n",
" \"deviation\": 20, # INTERGER\n",
" \"magic\": 0, # INTERGER\n",
" \"comment\": trade_type,\n",
" \"type_time\": mt.ORDER_TIME_GTC,\n",
" \"type_filling\": mt.ORDER_FILLING_IOC,\n",
" }\n",
"\n",
" order = mt.order_send(request)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Place Orders**"
]
},
{
"cell_type": "code",
2025-04-27 10:23:00 +02:00
"execution_count": 292,
2025-04-25 15:27:30 +02:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2025-04-27 10:23:00 +02:00
"BuyStop01 3355.76 0.1 3316.97 3394.5500000000006 XAUUSD\n",
"BuyStop02 3338.42 0.2 3299.6299999999997 3377.2100000000005 XAUUSD\n",
"BuyLimit03 3302.92 0.3 3264.1299999999997 3341.7100000000005 XAUUSD\n",
"BuyLimit04 3290.45 0.4 3251.6599999999994 3329.2400000000002 XAUUSD\n"
2025-04-25 15:27:30 +02:00
]
}
],
"source": [
"for index, row in df.iterrows():\n",
" #print(index, row)\n",
" print(row['trade_type'], row['trade_price'], row['trade_volume'], row['trade_sl'], row['trade_tp'], symbol)\n",
" buyOrder(row['trade_type'], row['trade_price'], row['trade_volume'], row['trade_sl'], row['trade_tp'], symbol)\n",
"\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Remove Pending Orders"
]
},
{
"cell_type": "code",
2025-04-27 10:23:00 +02:00
"execution_count": 289,
2025-04-25 15:27:30 +02:00
"metadata": {},
"outputs": [],
"source": [
"# Remove Pending Order\n",
"\n",
"def rm_pending_orders():\n",
"\n",
" while mt.orders_total() > 0:\n",
" pending_orders = mt.orders_get()\n",
" order1 = pending_orders[0]\n",
" request = {\n",
" 'action': mt.TRADE_ACTION_REMOVE,\n",
" 'order': order1.ticket\n",
" }\n",
" mt.order_send(request)\n"
]
},
{
"cell_type": "code",
2025-04-27 10:23:00 +02:00
"execution_count": 291,
2025-04-25 15:27:30 +02:00
"metadata": {},
2025-04-27 10:23:00 +02:00
"outputs": [
{
"ename": "KeyboardInterrupt",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
"Cell \u001b[1;32mIn[291], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m rm_pending_orders()\n",
"Cell \u001b[1;32mIn[289], line 5\u001b[0m, in \u001b[0;36mrm_pending_orders\u001b[1;34m()\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mrm_pending_orders\u001b[39m():\n\u001b[1;32m----> 5\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m mt\u001b[38;5;241m.\u001b[39morders_total() \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[0;32m 6\u001b[0m pending_orders \u001b[38;5;241m=\u001b[39m mt\u001b[38;5;241m.\u001b[39morders_get()\n\u001b[0;32m 7\u001b[0m order1 \u001b[38;5;241m=\u001b[39m pending_orders[\u001b[38;5;241m0\u001b[39m]\n",
"\u001b[1;31mKeyboardInterrupt\u001b[0m: "
]
}
],
2025-04-25 15:27:30 +02:00
"source": [
"rm_pending_orders()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Check pending Orders"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"pos = mt.orders_get()\n",
"for i in pos:\n",
" print(i.comment)\n",
" df.loc[df['trade_type'] == i.comment, 'pending_trades'] = 1\n",
"df['pending_trades'] = df['pending_trades']. fillna(0)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"df.loc[df['trade_type'].isin(['BuyLimit02', 'BuyLimit03'])]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"row = df.loc[df['trade_type'] == 'BuyLimit02']\n",
"df.loc[df['trade_type'] == 'BuyLimit02', 'pending_trades'] = 1"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"df"
]
},
2025-04-27 10:23:00 +02:00
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3366.26"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tp_price = 30\n",
"\n",
"pos = mt.positions_get()\n",
"pos[0].profit\n",
"pos[0].price_open + tp_price"
]
},
2025-04-25 15:27:30 +02:00
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Check for open trades"
]
},
{
"cell_type": "code",
2025-04-27 10:23:00 +02:00
"execution_count": 48,
2025-04-25 15:27:30 +02:00
"metadata": {},
2025-04-27 10:23:00 +02:00
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"TradePosition(ticket=238422628, time=1745410731, time_msc=1745410731060, time_update=1745410731, time_update_msc=1745410731060, type=0, magic=0, identifier=238422628, reason=3, volume=0.1, price_open=3336.26, sl=3190.17, tp=3482.35, price_current=3303.56, swap=-18.48, profit=-327.0, symbol='XAUUSD', comment='BuyStop04', external_id='')\n",
"BuyStop04 -327.0\n",
"TradePosition(ticket=239454126, time=1745465427, time_msc=1745465427533, time_update=1745465427, time_update_msc=1745465427533, type=0, magic=0, identifier=239454126, reason=3, volume=0.1, price_open=3336.7, sl=3169.39, tp=3504.01, price_current=3303.56, swap=-4.62, profit=-331.4, symbol='XAUUSD', comment='BuyStop03', external_id='')\n",
"BuyStop03 -331.4\n",
"TradePosition(ticket=239454136, time=1745456864, time_msc=1745456864432, time_update=1745456864, time_update_msc=1745456864432, type=0, magic=0, identifier=239454136, reason=3, volume=0.1, price_open=3311.53, sl=3144.22, tp=3478.84, price_current=3303.56, swap=-4.62, profit=-79.7, symbol='XAUUSD', comment='BuyStop04', external_id='')\n",
"BuyStop04 -79.7\n"
]
}
],
2025-04-25 15:27:30 +02:00
"source": [
"pos = mt.positions_get()\n",
"for i in pos:\n",
" print(i)\n",
" pos_comment = i.comment\n",
" pos_profit = i.profit\n",
" print(pos_comment, pos_profit)\n",
" df.loc[df['trade_type'] == i.comment, 'open_trades'] = 1\n",
"df['open_trades'] = df['open_trades']. fillna(0)"
]
},
{
2025-04-27 10:23:00 +02:00
"cell_type": "markdown",
2025-04-25 15:27:30 +02:00
"metadata": {},
2025-04-27 10:23:00 +02:00
"source": []
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>trade_type</th>\n",
" <th>trade_price</th>\n",
" <th>trade_volume</th>\n",
" <th>trade_sl</th>\n",
" <th>trade_tp</th>\n",
" <th>open_trades</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>BuyStop01</td>\n",
" <td>3450.07</td>\n",
" <td>0.1</td>\n",
" <td>3331.67</td>\n",
" <td>3568.47</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>BuyStop02</td>\n",
" <td>3419.19</td>\n",
" <td>0.1</td>\n",
" <td>3300.79</td>\n",
" <td>3537.59</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>BuyStop03</td>\n",
" <td>3355.93</td>\n",
" <td>0.1</td>\n",
" <td>3237.53</td>\n",
" <td>3474.33</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>BuyLimit04</td>\n",
" <td>3333.72</td>\n",
" <td>0.4</td>\n",
" <td>3215.32</td>\n",
" <td>3452.12</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" trade_type trade_price trade_volume trade_sl trade_tp open_trades\n",
"0 BuyStop01 3450.07 0.1 3331.67 3568.47 0.0\n",
"1 BuyStop02 3419.19 0.1 3300.79 3537.59 0.0\n",
"2 BuyStop03 3355.93 0.1 3237.53 3474.33 1.0\n",
"3 BuyLimit04 3333.72 0.4 3215.32 3452.12 0.0"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
2025-04-25 15:27:30 +02:00
"source": [
"df"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"open_trades = df.loc[df['open_trades'] == 1]\n",
"open_trades"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"for index, row in open_trades.iterrows():\n",
" print(row.trade_type)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "base",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}