diff --git a/Graph Algorithms/Centroid Decomposition.cpp b/Graph Algorithms/Centroid Decomposition.cpp new file mode 100644 index 0000000..6441b74 --- /dev/null +++ b/Graph Algorithms/Centroid Decomposition.cpp @@ -0,0 +1,35 @@ +#include +using namespace std; + +const int N = 1e5 + 1; +const int K = 20; + +int n,m; +vector adj[N]; +int sz[N],pa[N]; +bool blocked[N]; +int res[N],dp[K][N],lv[N]; + +void dfs(int u,int p) +{ + sz[u] = 1; + for(int v : adj[u]) if(v!=p and !blocked[v]) dfs(v,u),sz[u]+=sz[v]; +} + +void build(int u,int cp) +{ + dfs(u,0); + int c = u,prev = 0; + while(true) + { + int mx = -1,id; + for(int v : adj[c]) if(!blocked[v] and v!=prev) if(sz[v]>mx) mx = sz[v],id = v; + if(mx*2>sz[u]) prev = c,c = id; + else break; + } + pa[c] = cp; + blocked[c] = true; + for(int v : adj[c]) if(!blocked[v]) build(v,c); +} + +void update_and_query(int x){ for(int u = x;u;u = pa[u]); } // go up on parent in centroid tree for update and query diff --git a/verMay23-2.ipynb b/verMay23-2.ipynb new file mode 100644 index 0000000..818c3dc --- /dev/null +++ b/verMay23-2.ipynb @@ -0,0 +1,752 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "startup.ipynb", + "provenance": [], + "collapsed_sections": [], + "mount_file_id": "13InW790IWIvDA9KY-LXT_KlObk5wcdxX", + "authorship_tag": "ABX9TyO5pv+rSIXAtd78Xhw68bgE", + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "code", + "source": [ + "from google.colab import drive\n", + "drive.mount('/content/drive')" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "jWlTS7WDk7cy", + "outputId": "e10afde3-9cc6-4524-d3d1-7647fb0475c4" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n" + ] + } + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": { + "id": "S-E7wvs-ixAn" + }, + "outputs": [], + "source": [ + "import csv\n", + "import math\n", + "from datetime import datetime,timedelta\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "# default param val\n", + "platform = \"MT\"\n", + "forexpair = \"EURUSD\"\n", + "forextype = \"M1\"\n", + "yearmonth = \"202204\"\n", + "datafilepath = \"/content/drive/My Drive/Colab Notebooks/forex_historical_data/DAT_\"+platform+\"_\"+forexpair+\"_\"+forextype+\"_\"+yearmonth+\".csv\"\n", + "paramfilepath = \"/content/drive/My Drive/Colab Notebooks/parameter.csv\"\n", + "forexfilepath = \"/content/drive/My Drive/Colab Notebooks/forex.csv\"\n", + "bbVal = 20\n", + "sdVal = 2\n", + "rsiVal = 14\n", + "width = 5\n", + "rsiUpperLim = 70\n", + "rsiLowerLim = 30\n", + "martingale = 0\n", + "\n", + "header = [\"date\",\"time\",\"open\",\"high\",\"low\",\"close\"]\n", + "allData = [] # list of data\n", + "dayData = [] # list of each day containing list of data\n", + "weekData = [] # list of each week containing list of data\n", + "weekDataK = [] # list of each week containing list of data with width of K\n", + "bbDataK = [] # list of each week containing list of bb data with width of K\n", + "rsiDataK = [] # list of each week containing list of rsi data with width of K\n", + "dataIdx = [] # idx corresponding to itself\n", + "bbDataIdx = [] # idx corresponding to weekDataK\n", + "rsiDataIdx = [] # idx corresponding to weekDataK\n", + "avaDataIdx = [] # idx of available to indicate signals, combining bb and rsi; corresponding to weekDataK\n", + "dataAmount = [] # amount of data in each week\n", + "bbAmount = [] # amuount of bb in each week\n", + "rsiAmount = [] # amount of rsi in each week\n", + "signal = [] # signal for buy or sell; 1 for up, -1 for down\n", + "sigSuccess = 0 # no of success signal\n", + "sigFail = 0 # no of fail signal\n", + "sigAll = 0 # no of all signal\n", + "sigPercent = 0\n", + "totalDate = 0\n", + "totalMin = 0\n", + "totalWeek = 0\n", + "\n", + "class eachData:\n", + " def __init__(self,date,time,open,high,low,close):\n", + " self.date = date\n", + " self.time = time\n", + " self.open = float(open)\n", + " self.high = float(high)\n", + " self.low = float(low)\n", + " self.close = float(close)\n", + " # def print(self):\n", + " # print(self.date+\" \"+self.time)\n", + " # print(self.open+\" \"+self.high+\" \"+self.low+\" \"+self.close)\n", + "\n", + "class eachBB:\n", + " def __init__(self,middle,upper,lower):\n", + " self.middle = middle\n", + " self.upper = upper\n", + " self.lower = lower\n", + "\n", + "def checkDiff(data1,data2): #check diff between data whether gap exist\n", + " format = \"%Y.%m.%d\"\n", + " datestr1 = datetime.strptime(data1.date,format)\n", + " datestr2 = datetime.strptime(data2.date,format)\n", + " expected = datestr1+timedelta(days=1)\n", + " if datestr2<=expected:\n", + " return 0 # no jump\n", + " else:\n", + " return 1 # gap exists\n", + "\n", + "def plot(wk):\n", + " #plot data\n", + " data = weekDataK[wk]\n", + " x = dataIdx[wk]\n", + " y = []\n", + " for i in data:\n", + " y.append(i.open)\n", + " plt.plot(x,y) # data open\n", + " y = []\n", + " for i in data:\n", + " y.append(i.close)\n", + " plt.plot(x,y) # data close\n", + " #plot bb\n", + " bb = bbDataK[wk]\n", + " x = bbDataIdx[wk]\n", + " y = []\n", + " for i in x:\n", + " y.append(bb[i].middle)\n", + " plt.plot(x,y) # bb middle\n", + " y = []\n", + " for i in x:\n", + " y.append(bb[i].upper)\n", + " plt.plot(x,y) # bb upper\n", + " y = []\n", + " for i in x:\n", + " y.append(bb[i].lower)\n", + " plt.plot(x,y) # bb lower\n", + " plt.show()\n", + " #plot rsi\n", + " rsi = rsiDataK[wk]\n", + " x = rsiDataIdx[wk]\n", + " y = []\n", + " for i in x:\n", + " y.append(rsi[i])\n", + " plt.plot(x,y) # rsi val\n", + " y = []\n", + " for i in x:\n", + " y.append(rsiUpperLim)\n", + " plt.plot(x,y) # rsi upper\n", + " y = []\n", + " for i in x:\n", + " y.append(rsiLowerLim)\n", + " plt.plot(x,y) # rsi lower\n", + " plt.show()\n", + "\n", + "# read parameter from csv file\n", + "file = open(paramfilepath)\n", + "csvreader = csv.reader(file)\n", + "for x in csvreader:\n", + " bbVal = int(x[0])\n", + " sdVal = int(x[1])\n", + " rsiVal = int(x[2])\n", + " width = int(x[3])\n", + " rsiUpperLim = int(x[4])\n", + " rsiLowerLim = int(x[5])\n", + " martingale = int(x[6])\n", + "file.close()\n", + "\n", + "# read forex from csv file\n", + "file = open(forexfilepath)\n", + "csvreader = csv.reader(file)\n", + "for x in csvreader:\n", + " forexpair = x[0]\n", + " yearmonth = x[1]\n", + "file.close()\n", + "datafilepath = \"/content/drive/My Drive/Colab Notebooks/forex_historical_data/DAT_\"+platform+\"_\"+forexpair+\"_\"+forextype+\"_\"+yearmonth+\".csv\"\n", + "\n", + "# read data from csv file\n", + "file = open(datafilepath)\n", + "csvreader = csv.reader(file)\n", + "for min in csvreader:\n", + " allData.append(eachData(min[0],min[1],min[2],min[3],min[4],min[5]))\n", + "file.close()\n", + "\n", + "# store and organize into days and weeks data list\n", + "totalMin = len(allData) \n", + "tmp = \"\"\n", + "for min in allData:\n", + " if min.date!=tmp:\n", + " tmp = min.date\n", + " totalDate+=1\n", + "for i in range(totalDate):\n", + " dayData.append([])\n", + "tmp = \"\"\n", + "totalDate = 0\n", + "for min in allData:\n", + " if min.date!=tmp:\n", + " tmp = min.date\n", + " totalDate+=1\n", + " dayData[totalDate-1].append(min)\n", + "# for today in range(totalDate):\n", + "# print(dayData[today][0].date+\" : \"+dayData[today][0].time+\"->\"+dayData[today][len(dayData[today])-1].time)\n", + "first = 1\n", + "tmp = []\n", + "for i in range(len(allData)):\n", + " if first==1 or checkDiff(allData[i-1],allData[i])==0:\n", + " tmp.append(allData[i])\n", + " first = 0\n", + " else:\n", + " weekData.append(tmp)\n", + " weekDataK.append([])\n", + " bbDataK.append([])\n", + " rsiDataK.append([])\n", + " tmp = []\n", + " tmp.append(allData[i])\n", + "if tmp!=[]:\n", + " weekData.append(tmp)\n", + " weekDataK.append([])\n", + " rsiDataK.append([])\n", + " bbDataK.append([])\n", + "# print(len(weekData))\n", + "totalWeek = len(weekData)\n", + "# for i in range(len(weekData)):\n", + "# print(weekData[i][0].date+\" \"+weekData[i][0].time+\" -> \"+weekData[i][len(weekData[i])-1].date+\" \"+weekData[i][len(weekData[i])-1].time)\n", + "\n", + "for i in range(len(weekData)):\n", + " for j in range(len(weekData[i])):\n", + " if j%width==width-1:\n", + " tmp = weekData[i][j]\n", + " tmp.open = weekData[i][j-width+1].open\n", + " weekDataK[i].append(tmp)\n", + "\n", + "# for i in range(len(weekDataK)):\n", + "# for j in range(len(weekDataK[i])):\n", + "# tmp = weekDataK[0][j]\n", + "# print(tmp.date+\" \"+tmp.time)\n", + "\n", + "for i in range(totalWeek):\n", + " dataAmount.append(len(weekDataK[i]))\n", + " bbAmount.append(0)\n", + " rsiAmount.append(0)\n", + "\n", + "# calculate bollinger band\n", + "for i in range(totalWeek):\n", + " each = weekDataK[i]\n", + " for j in range(len(each)):\n", + " if j>=bbVal-1:\n", + " curSum = 0\n", + " for k in range(j-bbVal+1,j): # only 19 in front\n", + " curSum+=float(each[k].close)\n", + " curAvr = curSum/(bbVal-1) \n", + " curSD = 0\n", + " for k in range(j-bbVal+1,j): \n", + " curSD+=(curAvr-float(each[k].close))*(curAvr-float(each[k].close))\n", + " curSD/=(bbVal-1)\n", + " curSD = math.sqrt(curSD)\n", + " curBB = eachBB(curAvr,curAvr+sdVal*curSD,curAvr-sdVal*curSD)\n", + " # print(each[k].close,end=\" \")\n", + " # print(curAvr,end=\" \")\n", + " # print(curAvr+sdVal*curSD,end=\" \")\n", + " # print(curAvr-sdVal*curSD)\n", + " bbDataK[i].append(curBB)\n", + " bbAmount[i]+=1\n", + " else:\n", + " bbDataK[i].append(eachBB(-1,-1,-1))\n", + " \n", + "# calculate rsi value\n", + "for i in range(totalWeek):\n", + " each = weekDataK[i]\n", + " for j in range(len(each)):\n", + " if j>=rsiVal-1:\n", + " avrGain = 0\n", + " avrLoss = 0\n", + " for k in range(j-rsiVal+1,j+1): # all 14 including the current one\n", + " change = each[k].close-each[k].open\n", + " if change>0:\n", + " avrGain+=change\n", + " else:\n", + " avrLoss-=change\n", + " avrGain/=rsiVal\n", + " avrLoss/=rsiVal\n", + " if avrLoss!=0:\n", + " rs = avrGain/avrLoss\n", + " rsi = 100-(100/(1+rs))\n", + " else:\n", + " rsi = 100\n", + " rsiDataK[i].append(rsi)\n", + " rsiAmount[i]+=1\n", + " else:\n", + " rsiDataK[i].append(-1)\n", + "\n", + "# create idx of each data bb rsi\n", + "for i in range(totalWeek):\n", + " data = weekDataK[i]\n", + " bb = bbDataK[i]\n", + " rsi = rsiDataK[i]\n", + " dataIdx.append(range(dataAmount[i]))\n", + " bbDataIdx.append(range(dataAmount[i]-bbAmount[i],dataAmount[i]))\n", + " rsiDataIdx.append(range(dataAmount[i]-rsiAmount[i],dataAmount[i]))\n", + " avaDataIdx.append(range(max(dataAmount[i]-bbAmount[i],dataAmount[i]-rsiAmount[i]),dataAmount[i]))\n", + " # plot(i)\n", + "\n", + "# creating and evaluating signal\n", + "for i in range(totalWeek):\n", + " signal.append([])\n", + " for j in range(dataAmount[i]):\n", + " signal[i].append(0)\n", + " prevBbSig = -5\n", + " prevRsiSig = -5\n", + " curSideway = 0\n", + " curSuccess = 0\n", + " for j in avaDataIdx[i]:\n", + " if weekDataK[i][j].close>=bbDataK[i][j].upper:\n", + " bbSig = -1\n", + " elif weekDataK[i][j].close<=bbDataK[i][j].lower:\n", + " bbSig = 1\n", + " else:\n", + " bbSig = 0\n", + " if rsiDataK[i][j]>=rsiUpperLim:\n", + " rsiSig = -1\n", + " elif rsiDataK[i][j]<=rsiLowerLim:\n", + " rsiSig = 1\n", + " else:\n", + " rsiSig = 0\n", + " curSig = 0\n", + " if bbSig==rsiSig and bbSig!=0:\n", + " if bbSig!=prevBbSig or rsiSig!=prevRsiSig:\n", + " curSig = bbSig\n", + " curSideway = 0\n", + " curSuccess = 0\n", + " sigAll+=1\n", + " else:\n", + " curSideway+=1\n", + " if curSideway<=martingale and curSuccess==0:\n", + " curSig = bbSig\n", + " signal[i][j] = curSig\n", + " prevBbSig = bbSig\n", + " prevRsiSig = rsiSig\n", + " if curSig!=0 and jweekDataK[i][j+1].close:\n", + " curStatus = 1\n", + " if signal[i][j]==1 and weekDataK[i][j].closebestSigPercent:\n", + " bestSigPercent = sigPercent\n", + " bestBB = bbVal\n", + " bestRSI = rsiVal\n", + "\n", + "print()\n", + "print(\"best parameter config is\")\n", + "print(\"BB:\",end = \"\")\n", + "print(bestBB,end = \" \")\n", + "print(\"RSI:\",end = \"\")\n", + "if bestRSI<10:\n", + " print(\" \",end=\"\")\n", + "print(bestRSI,end = \"\")\n", + "print(\"; percent accuracy : \",end = \"\")\n", + "print(bestSigPercent)\n", + " \n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "uvQ4Hb6WUEpN", + "outputId": "8c4988c4-c8fc-4d9f-fe0d-19da6ffa0199" + }, + "execution_count": 70, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "BB:10 RSI: 8; percent accuracy : 74.06639004149378\n", + "BB:10 RSI: 9; percent accuracy : 73.47417840375586\n", + "BB:10 RSI:10; percent accuracy : 71.64556962025317\n", + "BB:10 RSI:11; percent accuracy : 73.92550143266476\n", + "BB:10 RSI:12; percent accuracy : 73.4567901234568\n", + "BB:10 RSI:13; percent accuracy : 71.72413793103448\n", + "BB:10 RSI:14; percent accuracy : 72.47386759581882\n", + "BB:10 RSI:15; percent accuracy : 77.32342007434944\n", + "BB:10 RSI:16; percent accuracy : 76.98412698412699\n", + "BB:10 RSI:17; percent accuracy : 78.57142857142857\n", + "BB:10 RSI:18; percent accuracy : 75.25773195876289\n", + "BB:10 RSI:19; percent accuracy : 75.0\n", + "BB:10 RSI:20; percent accuracy : 76.33136094674556\n", + "BB:11 RSI: 8; percent accuracy : 76.80851063829788\n", + "BB:11 RSI: 9; percent accuracy : 76.16822429906543\n", + "BB:11 RSI:10; percent accuracy : 74.35897435897436\n", + "BB:11 RSI:11; percent accuracy : 76.61971830985915\n", + "BB:11 RSI:12; percent accuracy : 75.15527950310559\n", + "BB:11 RSI:13; percent accuracy : 73.10344827586206\n", + "BB:11 RSI:14; percent accuracy : 74.56445993031359\n", + "BB:11 RSI:15; percent accuracy : 79.182156133829\n", + "BB:11 RSI:16; percent accuracy : 79.03225806451613\n", + "BB:11 RSI:17; percent accuracy : 80.53097345132744\n", + "BB:11 RSI:18; percent accuracy : 76.53061224489795\n", + "BB:11 RSI:19; percent accuracy : 74.86033519553072\n", + "BB:11 RSI:20; percent accuracy : 76.19047619047619\n", + "BB:12 RSI: 8; percent accuracy : 76.28205128205127\n", + "BB:12 RSI: 9; percent accuracy : 76.6743648960739\n", + "BB:12 RSI:10; percent accuracy : 73.9240506329114\n", + "BB:12 RSI:11; percent accuracy : 77.29885057471265\n", + "BB:12 RSI:12; percent accuracy : 75.63291139240506\n", + "BB:12 RSI:13; percent accuracy : 72.88732394366197\n", + "BB:12 RSI:14; percent accuracy : 73.83512544802868\n", + "BB:12 RSI:15; percent accuracy : 78.4090909090909\n", + "BB:12 RSI:16; percent accuracy : 78.18930041152264\n", + "BB:12 RSI:17; percent accuracy : 79.01785714285714\n", + "BB:12 RSI:18; percent accuracy : 76.04166666666666\n", + "BB:12 RSI:19; percent accuracy : 76.0\n", + "BB:12 RSI:20; percent accuracy : 74.69879518072288\n", + "BB:13 RSI: 8; percent accuracy : 75.89285714285714\n", + "BB:13 RSI: 9; percent accuracy : 75.88652482269504\n", + "BB:13 RSI:10; percent accuracy : 74.02597402597402\n", + "BB:13 RSI:11; percent accuracy : 75.65217391304347\n", + "BB:13 RSI:12; percent accuracy : 74.03846153846155\n", + "BB:13 RSI:13; percent accuracy : 71.73144876325088\n", + "BB:13 RSI:14; percent accuracy : 72.92418772563177\n", + "BB:13 RSI:15; percent accuracy : 77.77777777777779\n", + "BB:13 RSI:16; percent accuracy : 76.98744769874477\n", + "BB:13 RSI:17; percent accuracy : 78.18181818181819\n", + "BB:13 RSI:18; percent accuracy : 75.93582887700535\n", + "BB:13 RSI:19; percent accuracy : 74.85380116959064\n", + "BB:13 RSI:20; percent accuracy : 74.21383647798741\n", + "BB:14 RSI: 8; percent accuracy : 77.44874715261959\n", + "BB:14 RSI: 9; percent accuracy : 76.2589928057554\n", + "BB:14 RSI:10; percent accuracy : 73.94736842105263\n", + "BB:14 RSI:11; percent accuracy : 75.93123209169055\n", + "BB:14 RSI:12; percent accuracy : 75.39936102236422\n", + "BB:14 RSI:13; percent accuracy : 73.83512544802868\n", + "BB:14 RSI:14; percent accuracy : 74.72924187725631\n", + "BB:14 RSI:15; percent accuracy : 77.77777777777779\n", + "BB:14 RSI:16; percent accuracy : 78.90295358649789\n", + "BB:14 RSI:17; percent accuracy : 79.63800904977376\n", + "BB:14 RSI:18; percent accuracy : 78.49462365591397\n", + "BB:14 RSI:19; percent accuracy : 77.84431137724552\n", + "BB:14 RSI:20; percent accuracy : 75.15923566878982\n", + "BB:15 RSI: 8; percent accuracy : 76.12293144208037\n", + "BB:15 RSI: 9; percent accuracy : 75.18427518427518\n", + "BB:15 RSI:10; percent accuracy : 73.17073170731707\n", + "BB:15 RSI:11; percent accuracy : 73.83720930232558\n", + "BB:15 RSI:12; percent accuracy : 72.84345047923323\n", + "BB:15 RSI:13; percent accuracy : 72.69503546099291\n", + "BB:15 RSI:14; percent accuracy : 73.68421052631578\n", + "BB:15 RSI:15; percent accuracy : 75.39682539682539\n", + "BB:15 RSI:16; percent accuracy : 75.74468085106383\n", + "BB:15 RSI:17; percent accuracy : 78.3410138248848\n", + "BB:15 RSI:18; percent accuracy : 76.37362637362637\n", + "BB:15 RSI:19; percent accuracy : 75.75757575757575\n", + "BB:15 RSI:20; percent accuracy : 72.43589743589743\n", + "BB:16 RSI: 8; percent accuracy : 75.41766109785203\n", + "BB:16 RSI: 9; percent accuracy : 74.2014742014742\n", + "BB:16 RSI:10; percent accuracy : 72.99465240641712\n", + "BB:16 RSI:11; percent accuracy : 73.5632183908046\n", + "BB:16 RSI:12; percent accuracy : 72.44582043343654\n", + "BB:16 RSI:13; percent accuracy : 72.91666666666666\n", + "BB:16 RSI:14; percent accuracy : 74.72527472527473\n", + "BB:16 RSI:15; percent accuracy : 76.5873015873016\n", + "BB:16 RSI:16; percent accuracy : 76.47058823529412\n", + "BB:16 RSI:17; percent accuracy : 78.63636363636364\n", + "BB:16 RSI:18; percent accuracy : 76.28865979381443\n", + "BB:16 RSI:19; percent accuracy : 76.47058823529412\n", + "BB:16 RSI:20; percent accuracy : 73.75\n", + "BB:17 RSI: 8; percent accuracy : 73.96593673965937\n", + "BB:17 RSI: 9; percent accuracy : 72.9113924050633\n", + "BB:17 RSI:10; percent accuracy : 72.35772357723577\n", + "BB:17 RSI:11; percent accuracy : 74.19354838709677\n", + "BB:17 RSI:12; percent accuracy : 73.27044025157232\n", + "BB:17 RSI:13; percent accuracy : 73.42657342657343\n", + "BB:17 RSI:14; percent accuracy : 75.18248175182481\n", + "BB:17 RSI:15; percent accuracy : 76.98412698412699\n", + "BB:17 RSI:16; percent accuracy : 76.62337662337663\n", + "BB:17 RSI:17; percent accuracy : 79.62962962962963\n", + "BB:17 RSI:18; percent accuracy : 78.3068783068783\n", + "BB:17 RSI:19; percent accuracy : 77.24550898203593\n", + "BB:17 RSI:20; percent accuracy : 74.83870967741936\n", + "BB:18 RSI: 8; percent accuracy : 74.55012853470437\n", + "BB:18 RSI: 9; percent accuracy : 73.17073170731707\n", + "BB:18 RSI:10; percent accuracy : 72.59887005649718\n", + "BB:18 RSI:11; percent accuracy : 74.77203647416414\n", + "BB:18 RSI:12; percent accuracy : 73.61563517915309\n", + "BB:18 RSI:13; percent accuracy : 74.28571428571429\n", + "BB:18 RSI:14; percent accuracy : 75.64575645756457\n", + "BB:18 RSI:15; percent accuracy : 78.714859437751\n", + "BB:18 RSI:16; percent accuracy : 76.99115044247787\n", + "BB:18 RSI:17; percent accuracy : 80.09708737864078\n", + "BB:18 RSI:18; percent accuracy : 78.37837837837837\n", + "BB:18 RSI:19; percent accuracy : 77.91411042944786\n", + "BB:18 RSI:20; percent accuracy : 76.51006711409396\n", + "BB:19 RSI: 8; percent accuracy : 73.9946380697051\n", + "BB:19 RSI: 9; percent accuracy : 73.46368715083798\n", + "BB:19 RSI:10; percent accuracy : 71.67630057803468\n", + "BB:19 RSI:11; percent accuracy : 74.38271604938271\n", + "BB:19 RSI:12; percent accuracy : 73.26732673267327\n", + "BB:19 RSI:13; percent accuracy : 73.02158273381295\n", + "BB:19 RSI:14; percent accuracy : 74.25373134328358\n", + "BB:19 RSI:15; percent accuracy : 77.04918032786885\n", + "BB:19 RSI:16; percent accuracy : 77.82805429864254\n", + "BB:19 RSI:17; percent accuracy : 78.43137254901961\n", + "BB:19 RSI:18; percent accuracy : 78.2122905027933\n", + "BB:19 RSI:19; percent accuracy : 78.48101265822784\n", + "BB:19 RSI:20; percent accuracy : 75.86206896551724\n", + "BB:20 RSI: 8; percent accuracy : 73.65439093484419\n", + "BB:20 RSI: 9; percent accuracy : 73.48703170028818\n", + "BB:20 RSI:10; percent accuracy : 72.23880597014926\n", + "BB:20 RSI:11; percent accuracy : 73.81703470031546\n", + "BB:20 RSI:12; percent accuracy : 73.4006734006734\n", + "BB:20 RSI:13; percent accuracy : 74.28571428571429\n", + "BB:20 RSI:14; percent accuracy : 74.43609022556392\n", + "BB:20 RSI:15; percent accuracy : 76.85950413223141\n", + "BB:20 RSI:16; percent accuracy : 76.47058823529412\n", + "BB:20 RSI:17; percent accuracy : 78.43137254901961\n", + "BB:20 RSI:18; percent accuracy : 77.52808988764045\n", + "BB:20 RSI:19; percent accuracy : 77.12418300653596\n", + "BB:20 RSI:20; percent accuracy : 74.82517482517483\n", + "BB:21 RSI: 8; percent accuracy : 73.57954545454545\n", + "BB:21 RSI: 9; percent accuracy : 73.54651162790698\n", + "BB:21 RSI:10; percent accuracy : 73.03030303030303\n", + "BB:21 RSI:11; percent accuracy : 73.73417721518987\n", + "BB:21 RSI:12; percent accuracy : 73.8255033557047\n", + "BB:21 RSI:13; percent accuracy : 74.55197132616487\n", + "BB:21 RSI:14; percent accuracy : 74.34944237918215\n", + "BB:21 RSI:15; percent accuracy : 75.80645161290323\n", + "BB:21 RSI:16; percent accuracy : 75.1111111111111\n", + "BB:21 RSI:17; percent accuracy : 76.32850241545893\n", + "BB:21 RSI:18; percent accuracy : 74.86033519553072\n", + "BB:21 RSI:19; percent accuracy : 74.68354430379746\n", + "BB:21 RSI:20; percent accuracy : 72.72727272727273\n", + "BB:22 RSI: 8; percent accuracy : 73.77521613832853\n", + "BB:22 RSI: 9; percent accuracy : 73.23529411764706\n", + "BB:22 RSI:10; percent accuracy : 72.2560975609756\n", + "BB:22 RSI:11; percent accuracy : 73.88535031847134\n", + "BB:22 RSI:12; percent accuracy : 74.32432432432432\n", + "BB:22 RSI:13; percent accuracy : 75.82417582417582\n", + "BB:22 RSI:14; percent accuracy : 74.33962264150942\n", + "BB:22 RSI:15; percent accuracy : 76.19047619047619\n", + "BB:22 RSI:16; percent accuracy : 74.89177489177489\n", + "BB:22 RSI:17; percent accuracy : 75.23364485981308\n", + "BB:22 RSI:18; percent accuracy : 74.86338797814209\n", + "BB:22 RSI:19; percent accuracy : 74.53416149068323\n", + "BB:22 RSI:20; percent accuracy : 75.16778523489933\n", + "BB:23 RSI: 8; percent accuracy : 73.29376854599407\n", + "BB:23 RSI: 9; percent accuracy : 72.97297297297297\n", + "BB:23 RSI:10; percent accuracy : 71.38364779874213\n", + "BB:23 RSI:11; percent accuracy : 72.9903536977492\n", + "BB:23 RSI:12; percent accuracy : 73.63013698630137\n", + "BB:23 RSI:13; percent accuracy : 75.09293680297398\n", + "BB:23 RSI:14; percent accuracy : 74.70817120622569\n", + "BB:23 RSI:15; percent accuracy : 76.20967741935483\n", + "BB:23 RSI:16; percent accuracy : 75.65217391304347\n", + "BB:23 RSI:17; percent accuracy : 75.5868544600939\n", + "BB:23 RSI:18; percent accuracy : 74.17582417582418\n", + "BB:23 RSI:19; percent accuracy : 74.07407407407408\n", + "BB:23 RSI:20; percent accuracy : 74.65753424657534\n", + "BB:24 RSI: 8; percent accuracy : 74.23312883435584\n", + "BB:24 RSI: 9; percent accuracy : 74.22360248447205\n", + "BB:24 RSI:10; percent accuracy : 72.90322580645162\n", + "BB:24 RSI:11; percent accuracy : 74.25742574257426\n", + "BB:24 RSI:12; percent accuracy : 75.71428571428571\n", + "BB:24 RSI:13; percent accuracy : 75.5813953488372\n", + "BB:24 RSI:14; percent accuracy : 76.09561752988047\n", + "BB:24 RSI:15; percent accuracy : 78.18930041152264\n", + "BB:24 RSI:16; percent accuracy : 77.57847533632287\n", + "BB:24 RSI:17; percent accuracy : 76.55502392344498\n", + "BB:24 RSI:18; percent accuracy : 75.70621468926554\n", + "BB:24 RSI:19; percent accuracy : 73.61963190184049\n", + "BB:24 RSI:20; percent accuracy : 73.61111111111111\n", + "BB:25 RSI: 8; percent accuracy : 74.14330218068535\n", + "BB:25 RSI: 9; percent accuracy : 74.4408945686901\n", + "BB:25 RSI:10; percent accuracy : 71.76079734219269\n", + "BB:25 RSI:11; percent accuracy : 75.0\n", + "BB:25 RSI:12; percent accuracy : 75.82417582417582\n", + "BB:25 RSI:13; percent accuracy : 73.91304347826086\n", + "BB:25 RSI:14; percent accuracy : 74.48559670781893\n", + "BB:25 RSI:15; percent accuracy : 77.35042735042735\n", + "BB:25 RSI:16; percent accuracy : 76.60550458715596\n", + "BB:25 RSI:17; percent accuracy : 76.58536585365854\n", + "BB:25 RSI:18; percent accuracy : 75.0\n", + "BB:25 RSI:19; percent accuracy : 72.04968944099379\n", + "BB:25 RSI:20; percent accuracy : 71.94244604316546\n", + "BB:26 RSI: 8; percent accuracy : 74.375\n", + "BB:26 RSI: 9; percent accuracy : 75.8957654723127\n", + "BB:26 RSI:10; percent accuracy : 73.15436241610739\n", + "BB:26 RSI:11; percent accuracy : 75.34246575342466\n", + "BB:26 RSI:12; percent accuracy : 76.75276752767527\n", + "BB:26 RSI:13; percent accuracy : 74.59677419354838\n", + "BB:26 RSI:14; percent accuracy : 74.27385892116183\n", + "BB:26 RSI:15; percent accuracy : 77.11864406779661\n", + "BB:26 RSI:16; percent accuracy : 76.92307692307693\n", + "BB:26 RSI:17; percent accuracy : 76.92307692307693\n", + "BB:26 RSI:18; percent accuracy : 75.86206896551724\n", + "BB:26 RSI:19; percent accuracy : 72.67080745341616\n", + "BB:26 RSI:20; percent accuracy : 72.85714285714285\n", + "BB:27 RSI: 8; percent accuracy : 74.92063492063492\n", + "BB:27 RSI: 9; percent accuracy : 75.73770491803279\n", + "BB:27 RSI:10; percent accuracy : 73.46938775510205\n", + "BB:27 RSI:11; percent accuracy : 74.30555555555556\n", + "BB:27 RSI:12; percent accuracy : 76.11940298507463\n", + "BB:27 RSI:13; percent accuracy : 73.38709677419355\n", + "BB:27 RSI:14; percent accuracy : 74.18032786885246\n", + "BB:27 RSI:15; percent accuracy : 76.59574468085107\n", + "BB:27 RSI:16; percent accuracy : 76.71232876712328\n", + "BB:27 RSI:17; percent accuracy : 76.4423076923077\n", + "BB:27 RSI:18; percent accuracy : 75.42857142857143\n", + "BB:27 RSI:19; percent accuracy : 73.00613496932516\n", + "BB:27 RSI:20; percent accuracy : 72.22222222222221\n", + "BB:28 RSI: 8; percent accuracy : 74.4336569579288\n", + "BB:28 RSI: 9; percent accuracy : 74.74747474747475\n", + "BB:28 RSI:10; percent accuracy : 72.91666666666666\n", + "BB:28 RSI:11; percent accuracy : 74.11347517730496\n", + "BB:28 RSI:12; percent accuracy : 75.37878787878788\n", + "BB:28 RSI:13; percent accuracy : 72.98387096774194\n", + "BB:28 RSI:14; percent accuracy : 73.87755102040816\n", + "BB:28 RSI:15; percent accuracy : 76.06837606837607\n", + "BB:28 RSI:16; percent accuracy : 75.79908675799086\n", + "BB:28 RSI:17; percent accuracy : 75.48076923076923\n", + "BB:28 RSI:18; percent accuracy : 74.28571428571429\n", + "BB:28 RSI:19; percent accuracy : 71.95121951219512\n", + "BB:28 RSI:20; percent accuracy : 72.22222222222221\n", + "BB:29 RSI: 8; percent accuracy : 73.17880794701986\n", + "BB:29 RSI: 9; percent accuracy : 74.32432432432432\n", + "BB:29 RSI:10; percent accuracy : 71.77700348432056\n", + "BB:29 RSI:11; percent accuracy : 73.11827956989248\n", + "BB:29 RSI:12; percent accuracy : 74.42748091603053\n", + "BB:29 RSI:13; percent accuracy : 71.900826446281\n", + "BB:29 RSI:14; percent accuracy : 72.31404958677686\n", + "BB:29 RSI:15; percent accuracy : 74.78632478632478\n", + "BB:29 RSI:16; percent accuracy : 75.46296296296296\n", + "BB:29 RSI:17; percent accuracy : 75.0\n", + "BB:29 RSI:18; percent accuracy : 73.5632183908046\n", + "BB:29 RSI:19; percent accuracy : 70.73170731707317\n", + "BB:29 RSI:20; percent accuracy : 70.83333333333334\n", + "BB:30 RSI: 8; percent accuracy : 72.16494845360825\n", + "BB:30 RSI: 9; percent accuracy : 73.5191637630662\n", + "BB:30 RSI:10; percent accuracy : 70.9090909090909\n", + "BB:30 RSI:11; percent accuracy : 72.99270072992701\n", + "BB:30 RSI:12; percent accuracy : 74.4186046511628\n", + "BB:30 RSI:13; percent accuracy : 71.78423236514523\n", + "BB:30 RSI:14; percent accuracy : 72.3404255319149\n", + "BB:30 RSI:15; percent accuracy : 74.8898678414097\n", + "BB:30 RSI:16; percent accuracy : 74.88151658767772\n", + "BB:30 RSI:17; percent accuracy : 74.8792270531401\n", + "BB:30 RSI:18; percent accuracy : 73.83720930232558\n", + "BB:30 RSI:19; percent accuracy : 70.80745341614907\n", + "BB:30 RSI:20; percent accuracy : 70.92198581560284\n", + "\n", + "best parameter config is\n", + "BB:11 RSI:17; percent accuracy : 80.53097345132744\n" + ] + } + ] + } + ] +} \ No newline at end of file