{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Setup" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Import Libaries" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import MetaTrader5 as mt\n", "import time\n", "import re\n", "import keyring as kr" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Login" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# login to your Trading Account - sign up in the description\n", "mt.initialize()\n", " \n", "login = 10730196\n", "server = 'VantageInternational-Demo'\n", "password = kr.get_password(server, str(login))\n", "\n", "\n", "mt.login(login, password, server)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Set Symbol" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "symbol = 'XAUUSD'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Calculate" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Get Alltimehigh " ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
timeopenhighlowclosetick_volumespreadreal_volume
02025-02-212938.702949.742916.752935.95159274180
12025-02-242935.192956.222921.302952.46171870180
22025-02-252952.422953.752888.182914.93198402180
32025-02-262915.062930.162890.772916.36158179180
42025-02-272916.732920.822867.772877.15207221180
52025-02-282877.312885.072832.622859.03224045180
62025-03-032856.182895.212855.572893.66205740180
72025-03-042892.772927.812881.922917.65214258180
82025-03-052917.842929.882894.342919.11231043180
92025-03-062919.522926.512891.202911.01219058180
102025-03-072911.392930.422896.782912.06225312180
112025-03-102911.252918.222880.222889.02220535180
122025-03-112888.822922.132880.302916.08175258180
132025-03-122915.662940.482906.112933.24170540180
142025-03-132934.102989.052932.892989.01177969180
152025-03-142989.313004.932978.462986.39197059180
162025-03-172984.833001.862982.133001.42155946180
172025-03-183001.163038.252999.393034.08179165180
182025-03-193033.893051.963022.793047.26174636180
192025-03-203047.963057.463025.693044.64200333180
202025-03-213044.553047.432999.463023.15185542180
212025-03-243021.993033.333002.463011.81193224180
222025-03-253011.623035.943007.553020.34153347180
232025-03-263019.393032.033012.343018.96162718180
242025-03-273019.373059.673017.603056.73196828180
252025-03-283056.573086.763054.193084.56187584180
262025-03-313086.343127.963076.773124.07209942180
272025-04-013122.983148.963100.793114.26206537180
282025-04-023113.803143.323105.203133.56188846180
292025-04-033142.253167.643054.213113.3231307400
302025-04-043114.543136.613015.793038.42252778180
312025-04-073008.623055.382956.522982.6021266800
322025-04-082983.163022.642974.722982.34185173180
332025-04-092983.483099.462969.983082.91253727180
342025-04-103083.533176.293071.393175.77184496180
352025-04-113175.723245.343175.713237.59187568180
362025-04-143226.903245.723193.723210.36157467180
372025-04-153211.183233.553210.023229.79115741180
382025-04-163231.043342.393229.803342.26172558180
392025-04-173343.133357.713283.983327.48162159180
402025-04-213332.683430.483328.903424.67165503180
412025-04-223424.073500.043366.853381.28205173180
422025-04-233353.283386.633260.213288.34193560180
432025-04-243288.513367.413288.453349.38160771180
442025-04-253350.423370.713265.043318.69240555180
452025-04-283325.133353.003267.943344.17213198180
462025-04-293344.693348.613299.623317.22191465180
472025-04-303313.763328.093266.903288.42208859180
482025-05-013289.213290.163201.963237.99206881180
492025-05-023238.703269.223222.863240.37208163180
502025-05-053239.473337.613237.413334.06205296180
512025-05-063336.223434.813323.373430.38246511180
522025-05-073438.233438.233360.233364.25243602180
532025-05-083366.163414.763288.713306.36245009180
542025-05-093304.703347.493274.743327.21217656180
552025-05-123287.153314.283207.773234.28270255180
562025-05-133236.583265.643215.873250.02202239180
572025-05-143249.883257.073168.023178.08242008180
582025-05-153177.503240.563120.753240.35234795180
592025-05-163240.303252.173206.503217.1442203180
\n", "
" ], "text/plain": [ " time open high low close tick_volume spread \\\n", "0 2025-02-21 2938.70 2949.74 2916.75 2935.95 159274 18 \n", "1 2025-02-24 2935.19 2956.22 2921.30 2952.46 171870 18 \n", "2 2025-02-25 2952.42 2953.75 2888.18 2914.93 198402 18 \n", "3 2025-02-26 2915.06 2930.16 2890.77 2916.36 158179 18 \n", "4 2025-02-27 2916.73 2920.82 2867.77 2877.15 207221 18 \n", "5 2025-02-28 2877.31 2885.07 2832.62 2859.03 224045 18 \n", "6 2025-03-03 2856.18 2895.21 2855.57 2893.66 205740 18 \n", "7 2025-03-04 2892.77 2927.81 2881.92 2917.65 214258 18 \n", "8 2025-03-05 2917.84 2929.88 2894.34 2919.11 231043 18 \n", "9 2025-03-06 2919.52 2926.51 2891.20 2911.01 219058 18 \n", "10 2025-03-07 2911.39 2930.42 2896.78 2912.06 225312 18 \n", "11 2025-03-10 2911.25 2918.22 2880.22 2889.02 220535 18 \n", "12 2025-03-11 2888.82 2922.13 2880.30 2916.08 175258 18 \n", "13 2025-03-12 2915.66 2940.48 2906.11 2933.24 170540 18 \n", "14 2025-03-13 2934.10 2989.05 2932.89 2989.01 177969 18 \n", "15 2025-03-14 2989.31 3004.93 2978.46 2986.39 197059 18 \n", "16 2025-03-17 2984.83 3001.86 2982.13 3001.42 155946 18 \n", "17 2025-03-18 3001.16 3038.25 2999.39 3034.08 179165 18 \n", "18 2025-03-19 3033.89 3051.96 3022.79 3047.26 174636 18 \n", "19 2025-03-20 3047.96 3057.46 3025.69 3044.64 200333 18 \n", "20 2025-03-21 3044.55 3047.43 2999.46 3023.15 185542 18 \n", "21 2025-03-24 3021.99 3033.33 3002.46 3011.81 193224 18 \n", "22 2025-03-25 3011.62 3035.94 3007.55 3020.34 153347 18 \n", "23 2025-03-26 3019.39 3032.03 3012.34 3018.96 162718 18 \n", "24 2025-03-27 3019.37 3059.67 3017.60 3056.73 196828 18 \n", "25 2025-03-28 3056.57 3086.76 3054.19 3084.56 187584 18 \n", "26 2025-03-31 3086.34 3127.96 3076.77 3124.07 209942 18 \n", "27 2025-04-01 3122.98 3148.96 3100.79 3114.26 206537 18 \n", "28 2025-04-02 3113.80 3143.32 3105.20 3133.56 188846 18 \n", "29 2025-04-03 3142.25 3167.64 3054.21 3113.32 313074 0 \n", "30 2025-04-04 3114.54 3136.61 3015.79 3038.42 252778 18 \n", "31 2025-04-07 3008.62 3055.38 2956.52 2982.60 212668 0 \n", "32 2025-04-08 2983.16 3022.64 2974.72 2982.34 185173 18 \n", "33 2025-04-09 2983.48 3099.46 2969.98 3082.91 253727 18 \n", "34 2025-04-10 3083.53 3176.29 3071.39 3175.77 184496 18 \n", "35 2025-04-11 3175.72 3245.34 3175.71 3237.59 187568 18 \n", "36 2025-04-14 3226.90 3245.72 3193.72 3210.36 157467 18 \n", "37 2025-04-15 3211.18 3233.55 3210.02 3229.79 115741 18 \n", "38 2025-04-16 3231.04 3342.39 3229.80 3342.26 172558 18 \n", "39 2025-04-17 3343.13 3357.71 3283.98 3327.48 162159 18 \n", "40 2025-04-21 3332.68 3430.48 3328.90 3424.67 165503 18 \n", "41 2025-04-22 3424.07 3500.04 3366.85 3381.28 205173 18 \n", "42 2025-04-23 3353.28 3386.63 3260.21 3288.34 193560 18 \n", "43 2025-04-24 3288.51 3367.41 3288.45 3349.38 160771 18 \n", "44 2025-04-25 3350.42 3370.71 3265.04 3318.69 240555 18 \n", "45 2025-04-28 3325.13 3353.00 3267.94 3344.17 213198 18 \n", "46 2025-04-29 3344.69 3348.61 3299.62 3317.22 191465 18 \n", "47 2025-04-30 3313.76 3328.09 3266.90 3288.42 208859 18 \n", "48 2025-05-01 3289.21 3290.16 3201.96 3237.99 206881 18 \n", "49 2025-05-02 3238.70 3269.22 3222.86 3240.37 208163 18 \n", "50 2025-05-05 3239.47 3337.61 3237.41 3334.06 205296 18 \n", "51 2025-05-06 3336.22 3434.81 3323.37 3430.38 246511 18 \n", "52 2025-05-07 3438.23 3438.23 3360.23 3364.25 243602 18 \n", "53 2025-05-08 3366.16 3414.76 3288.71 3306.36 245009 18 \n", "54 2025-05-09 3304.70 3347.49 3274.74 3327.21 217656 18 \n", "55 2025-05-12 3287.15 3314.28 3207.77 3234.28 270255 18 \n", "56 2025-05-13 3236.58 3265.64 3215.87 3250.02 202239 18 \n", "57 2025-05-14 3249.88 3257.07 3168.02 3178.08 242008 18 \n", "58 2025-05-15 3177.50 3240.56 3120.75 3240.35 234795 18 \n", "59 2025-05-16 3240.30 3252.17 3206.50 3217.14 42203 18 \n", "\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 " ] }, "execution_count": 6, "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", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(3500.0, 3367.0)" ] }, "execution_count": 7, "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", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(3240.56, 3120.75)" ] }, "execution_count": 8, "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", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(3252.17, 3206.5)" ] }, "execution_count": 9, "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": [ "## Get High and Low last 5 Minutes intervall - 75 candles" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "def tp_sl():\n", " ohlc = mt.copy_rates_from_pos('XAUUSD', mt.TIMEFRAME_M5, 1, 75)\n", " 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", " ohlc_df['box_start'] = (ohlc_df['time'].dt.minute % 15 == 0).astype(int)\n", " # Create columns for rolling maximum and minimum over the last 5 candles, excluding the current candle\n", " 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", " # Breaking signal\n", " #ohlc_df[\"Break_signal\"] = (ohlc_df[\"close\"] > ohlc_df[\"max_box\"]).astype(int) * 2 + (ohlc_df[\"close\"] < ohlc_df[\"min_box\"]).astype(int)\n", " #print(ohlc_df['max_box'][14].astype(int)*2)\n", "\n", " return ohlc_df\n" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
timeopenhighlowclosetick_volumespreadreal_volumebox_startmax_boxmin_box
22025-05-16 01:30:003246.723246.723244.333245.023051801NaNNaN
52025-05-16 01:45:003249.783250.683247.903249.745261801NaNNaN
82025-05-16 02:00:003251.213251.243242.273243.557401801NaNNaN
112025-05-16 02:15:003248.133248.193243.213244.533581801NaNNaN
142025-05-16 02:30:003243.083246.993242.673246.493991801NaNNaN
172025-05-16 02:45:003238.983239.073237.603238.1536418013252.173237.40
202025-05-16 03:00:003237.153240.843236.413240.3376318013252.173236.56
232025-05-16 03:15:003238.953239.783238.193239.4648618013251.243233.44
262025-05-16 03:30:003234.543234.723232.003232.8158818013248.193233.43
292025-05-16 03:45:003236.203238.703235.083237.0852518013246.993232.00
322025-05-16 04:00:003243.133244.473235.033236.7592618013243.933232.00
352025-05-16 04:15:003231.043231.043223.493223.4982818013244.473228.72
382025-05-16 04:30:003223.443227.523221.573227.3478618013244.473221.68
412025-05-16 04:45:003221.393221.413215.523215.6777718013244.473220.25
442025-05-16 05:00:003222.273225.923221.823224.6975718013244.473215.10
472025-05-16 05:15:003223.193224.833222.943224.6845118013244.473215.10
502025-05-16 05:30:003223.113227.513222.853226.9366718013231.043215.10
532025-05-16 05:45:003220.093220.923217.723217.9555618013228.253215.10
562025-05-16 06:00:003215.473217.413210.823215.0873118013227.513212.91
592025-05-16 06:15:003207.983210.373206.913210.3173718013227.513206.50
622025-05-16 06:30:003210.533213.233209.673212.2957018013227.513206.50
652025-05-16 06:45:003208.763210.773208.043210.5345018013227.513206.50
682025-05-16 07:00:003211.773213.453211.723213.4440918013220.923206.50
712025-05-16 07:15:003214.963215.873212.933215.5546418013217.413206.50
742025-05-16 07:30:003214.643216.833214.513216.1833618013219.383206.91
\n", "
" ], "text/plain": [ " time open high low close tick_volume \\\n", "2 2025-05-16 01:30:00 3246.72 3246.72 3244.33 3245.02 305 \n", "5 2025-05-16 01:45:00 3249.78 3250.68 3247.90 3249.74 526 \n", "8 2025-05-16 02:00:00 3251.21 3251.24 3242.27 3243.55 740 \n", "11 2025-05-16 02:15:00 3248.13 3248.19 3243.21 3244.53 358 \n", "14 2025-05-16 02:30:00 3243.08 3246.99 3242.67 3246.49 399 \n", "17 2025-05-16 02:45:00 3238.98 3239.07 3237.60 3238.15 364 \n", "20 2025-05-16 03:00:00 3237.15 3240.84 3236.41 3240.33 763 \n", "23 2025-05-16 03:15:00 3238.95 3239.78 3238.19 3239.46 486 \n", "26 2025-05-16 03:30:00 3234.54 3234.72 3232.00 3232.81 588 \n", "29 2025-05-16 03:45:00 3236.20 3238.70 3235.08 3237.08 525 \n", "32 2025-05-16 04:00:00 3243.13 3244.47 3235.03 3236.75 926 \n", "35 2025-05-16 04:15:00 3231.04 3231.04 3223.49 3223.49 828 \n", "38 2025-05-16 04:30:00 3223.44 3227.52 3221.57 3227.34 786 \n", "41 2025-05-16 04:45:00 3221.39 3221.41 3215.52 3215.67 777 \n", "44 2025-05-16 05:00:00 3222.27 3225.92 3221.82 3224.69 757 \n", "47 2025-05-16 05:15:00 3223.19 3224.83 3222.94 3224.68 451 \n", "50 2025-05-16 05:30:00 3223.11 3227.51 3222.85 3226.93 667 \n", "53 2025-05-16 05:45:00 3220.09 3220.92 3217.72 3217.95 556 \n", "56 2025-05-16 06:00:00 3215.47 3217.41 3210.82 3215.08 731 \n", "59 2025-05-16 06:15:00 3207.98 3210.37 3206.91 3210.31 737 \n", "62 2025-05-16 06:30:00 3210.53 3213.23 3209.67 3212.29 570 \n", "65 2025-05-16 06:45:00 3208.76 3210.77 3208.04 3210.53 450 \n", "68 2025-05-16 07:00:00 3211.77 3213.45 3211.72 3213.44 409 \n", "71 2025-05-16 07:15:00 3214.96 3215.87 3212.93 3215.55 464 \n", "74 2025-05-16 07:30:00 3214.64 3216.83 3214.51 3216.18 336 \n", "\n", " spread real_volume box_start max_box min_box \n", "2 18 0 1 NaN NaN \n", "5 18 0 1 NaN NaN \n", "8 18 0 1 NaN NaN \n", "11 18 0 1 NaN NaN \n", "14 18 0 1 NaN NaN \n", "17 18 0 1 3252.17 3237.40 \n", "20 18 0 1 3252.17 3236.56 \n", "23 18 0 1 3251.24 3233.44 \n", "26 18 0 1 3248.19 3233.43 \n", "29 18 0 1 3246.99 3232.00 \n", "32 18 0 1 3243.93 3232.00 \n", "35 18 0 1 3244.47 3228.72 \n", "38 18 0 1 3244.47 3221.68 \n", "41 18 0 1 3244.47 3220.25 \n", "44 18 0 1 3244.47 3215.10 \n", "47 18 0 1 3244.47 3215.10 \n", "50 18 0 1 3231.04 3215.10 \n", "53 18 0 1 3228.25 3215.10 \n", "56 18 0 1 3227.51 3212.91 \n", "59 18 0 1 3227.51 3206.50 \n", "62 18 0 1 3227.51 3206.50 \n", "65 18 0 1 3227.51 3206.50 \n", "68 18 0 1 3220.92 3206.50 \n", "71 18 0 1 3217.41 3206.50 \n", "74 18 0 1 3219.38 3206.91 " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lastchart = tp_sl()\n", "lastchart = lastchart.drop(lastchart[lastchart.box_start != 1].index)\n", "lastchart" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "45.67000000000007" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "current_high = lastchart['high'].iloc[-1]\n", "current_close = lastchart['close'].iloc[-1]\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": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(3307.48, 3228.42, 3237.2039999999997, 3219.41)" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "last_max = lastchart.max_box.mean()\n", "last_min = lastchart.min_box.mean()\n", "mean_high = round((ath + tdh + ldh + last_max) / 4, 2)\n", "mean_low = round((atl + tdl + ldl + last_min) / 4, 2)\n", "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", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(3283.65, 3268.91, 3238.71, 3228.11)" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "res = ath - ldl\n", "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", "fb1, fb2, fb3, fb4" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Take Profit and Stop Loss**" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(3543.09, 2981.12)" ] }, "execution_count": 15, "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", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Aktueller Preis 3217.14 ist kleiner als FB1 3283.65, trading ist BuyStop\n", "Aktueller Preis 3217.14 ist kleiner als FB2 3268.91, trading ist BuyStop\n", "Aktueller Preis 3217.14 ist kleiner als FB3 3238.71, trading ist BuyStop\n", "Aktueller Preis 3217.14 ist kleiner als FB4 3228.11, trading ist BuyStop\n" ] }, { "data": { "text/plain": [ "['BuyStop', 'BuyStop', 'BuyStop', 'BuyStop']" ] }, "execution_count": 16, "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", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "79.05999999999995" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ldh - tdl\n", "mean_high - mean_low" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "tp_factor = ath-ldh\n", "tp_factor = ath - tdh\n", "#tp_factor = ath - mean_low\n", "tp_factor = mean_high - mean_low - current_diff\n", "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", "execution_count": 19, "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", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
trade_typetrade_pricetrade_volumetrade_sltrade_tp
0BuyStop013283.650.13250.263317.04
1BuyStop023268.910.23235.523302.30
2BuyStop033238.710.33205.323272.10
3BuyStop043228.110.43194.723261.50
\n", "
" ], "text/plain": [ " trade_type trade_price trade_volume trade_sl trade_tp\n", "0 BuyStop01 3283.65 0.1 3250.26 3317.04\n", "1 BuyStop02 3268.91 0.2 3235.52 3302.30\n", "2 BuyStop03 3238.71 0.3 3205.32 3272.10\n", "3 BuyStop04 3228.11 0.4 3194.72 3261.50" ] }, "execution_count": 20, "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", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "BuyStop01 0.1 0\n", "BuyStop02 0.2 1\n", "BuyStop03 0.3 2\n", "BuyStop04 0.4 3\n" ] } ], "source": [ "for index, row in df.iterrows():\n", " if bool(re.search('^BuyStop[0-9]{2}', row.trade_type)):\n", " df.loc[index, ['trade_volume']] = 0.1\n", " print(row.trade_type, row.trade_volume, index)\n", " " ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
trade_typetrade_pricetrade_volumetrade_sltrade_tp
0BuyStop013283.650.13250.263317.04
1BuyStop023268.910.13235.523302.30
2BuyStop033238.710.13205.323272.10
3BuyStop043228.110.13194.723261.50
\n", "
" ], "text/plain": [ " trade_type trade_price trade_volume trade_sl trade_tp\n", "0 BuyStop01 3283.65 0.1 3250.26 3317.04\n", "1 BuyStop02 3268.91 0.1 3235.52 3302.30\n", "2 BuyStop03 3238.71 0.1 3205.32 3272.10\n", "3 BuyStop04 3228.11 0.1 3194.72 3261.50" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Correct Volume Manuel" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
trade_typetrade_pricetrade_volumetrade_sltrade_tp
0BuyStop013367.700.13302.473432.93
1BuyStop023349.940.13284.713415.17
2BuyLimit033313.560.23248.333378.79
3BuyLimit043300.780.33235.553366.01
\n", "
" ], "text/plain": [ " trade_type trade_price trade_volume trade_sl trade_tp\n", "0 BuyStop01 3367.70 0.1 3302.47 3432.93\n", "1 BuyStop02 3349.94 0.1 3284.71 3415.17\n", "2 BuyLimit03 3313.56 0.2 3248.33 3378.79\n", "3 BuyLimit04 3300.78 0.3 3235.55 3366.01" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "if bool(re.search('^BuyLimit[0-9]{2}', df.trade_type[2])) and df.trade_volume[1] == 0.1 and df.trade_volume[2] != 0.1:\n", " df.at[2, 'trade_volume'] = df.trade_volume[1] + 0.1\n", "\n", "if bool(re.search('^BuyLimit[0-9]{2}', df.trade_type[3])) and df.trade_volume[2] != 0.1 and df.trade_volume[3] != 0.1:\n", " df.at[3, 'trade_volume'] = df.trade_volume[2] + 0.1\n", "\n", "#df.at[3, 'trade_volume'] = df.trade_volume[2] + 0.1\n", "\n", "\n", "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Place Order" ] }, { "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", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "# if bool(re.search('^StopLimit[0-9]{2}', 'BuyLimit01')):\n", "# print('Wahr')\n", "# else:\n", "# print('Falsch')" ] }, { "cell_type": "code", "execution_count": 24, "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", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "BuyStop01 3283.65 0.1 3250.26 3317.04 XAUUSD\n", "BuyStop02 3268.91 0.1 3235.52 3302.2999999999997 XAUUSD\n", "BuyStop03 3238.71 0.1 3205.32 3272.1 XAUUSD\n", "BuyStop04 3228.11 0.1 3194.7200000000003 3261.5 XAUUSD\n" ] } ], "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", "execution_count": 50, "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", "execution_count": 51, "metadata": {}, "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[51], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m rm_pending_orders()\n", "Cell \u001b[1;32mIn[50], 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: " ] } ], "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" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "tp_price = 30\n", "\n", "pos = mt.positions_get()\n", "pos[0].profit\n", "pos[0].price_open + tp_price" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Check for open trades" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "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)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "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 }