def __init__(self, data, tii, ti): self.data = data self.tii = tii self.ti = ti graphdata = tind.display_indicator(self.data, self.tii.indicator.name, self.tii) self.ma1 = graphdata[0]['y'] self.ma2 = graphdata[1]['y']
def train(self): cols = [] params1 = [] for ii in self.tii.indicator.indicatorinputs.all(): params1.append(get_input_value(self.tii, ii.parameter)) cols.append(ii.parameter) if len(params1) > 0: params1 = prepare_params_for_psar(*params1) cols.extend(['Returns%', 'MaxR']) pret = pd.DataFrame(columns=cols) arglist = [[]] # make all possible parameter combinations for p in params1: newarglist = [] for pp in p: for argset in arglist: newargset = argset.copy() newargset.append(pp) newarglist.append(newargset) arglist = newarglist signalsmap = dict() ipret = 0 for argset in arglist: graphdata = tind.display_indicator(self.data, self.tii.indicator.name, self.tii, True, *argset) for pltdt in graphdata: if pltdt['name'] == 'psar': self.psar = pltdt['y'] if pltdt['name'] == 'psarbull': self.psarbull = pltdt['y'] if pltdt['name'] == 'psarbear': self.psarbear = pltdt['y'] signal_graph, signals, traderet = self.trigger() if traderet['winlossratio'] is None or traderet[ 'winlossratio'] == np.inf: traderet = 0 else: traderet = traderet['winlossratio'] parama = argset.copy() parama.extend([traderet, '']) pret.loc[ipret] = parama signalsmap[ipret] = signals ipret += 1 retcol = pret['Returns%'] imax = np.array(retcol).argmax() pret.at[imax, 'MaxR'] = 'MR' psetb = pret.loc[imax] return psetb, pret, signalsmap[imax]
def __init__(self, data, tii, ti): self.data = data self.tii = tii self.ti = ti graphdata = tind.display_indicator(self.data, self.tii.indicator.name, self.tii) for pltdt in graphdata: if pltdt['name'] == 'fish': self.fish=pltdt['y'] break
def __init__(self, data, tii, ti): self.data = data self.tii = tii self.ti = ti graphdata = tind.display_indicator(self.data, self.tii.indicator.name, self.tii) for pltdt in graphdata: if pltdt['name'] == 'adx_pos': self.adx_pos=pltdt['y'] if pltdt['name'] == 'adx_neg': self.adx_neg=pltdt['y']
def __init__(self, data, tii, ti): self.data = data self.tii = tii self.ti = ti graphdata = tind.display_indicator(self.data, self.tii.indicator.name, self.tii) for pltdt in graphdata: if pltdt['name'] == 'ic_a': self.ic_a = pltdt['y'] if pltdt['name'] == 'ic_b': self.ic_b = pltdt['y']
def __init__(self, data, tii, ti): self.data = data self.tii = tii self.ti = ti graphdata = tind.display_indicator(self.data, self.tii.indicator.name, self.tii) for pltdt in graphdata: if pltdt['name'] == 'aroon_up': self.aroon_up = pltdt['y'] elif pltdt['name'] == 'aroon_down': self.aroon_down = pltdt['y']
def __init__(self, data, tii, ti): self.data = data self.tii = tii self.ti = ti graphdata = tind.display_indicator(self.data, self.tii.indicator.name, self.tii) for pltdt in graphdata: if pltdt['name'] == 'smi': self.smi = pltdt['y'] if pltdt['name'] == 'smi_sig': self.smi_sig = pltdt['y']
def __init__(self, data, tii, ti): self.data = data self.tii = tii self.ti = ti graphdata = tind.display_indicator(self.data, self.tii.indicator.name, self.tii) for pltdt in graphdata: if pltdt['name'] == 'psar': self.psar = pltdt['y'] if pltdt['name'] == 'psarbull': self.psarbull = pltdt['y'] if pltdt['name'] == 'psarbear': self.psarbear = pltdt['y']
def train(self): cols = [] params1 = [] for ii in self.tii.indicator.indicatorinputs.all(): params1.append(get_input_value(self.tii, ii.parameter)) cols.append(ii.parameter) psetb, pret = train_for_kst(self.data, *params1) graphdata = tind.display_indicator(self.data, self.tii.indicator.name, self.tii, True, *psetb) for pltdt in graphdata: if pltdt['name'] == 'KST': self.kst=pltdt['y'] break signal_graph, signals, traderet = self.trigger() return psetb, pret, signals
def train(self): cols = [] params1 = [] for ii in self.tii.indicator.indicatorinputs.all(): params1.append(get_input_value(self.tii, ii.parameter)) cols.append(ii.parameter) if len(params1) > 0: params1 = prepare_params_for_bb_bw(*params1) cols.extend(['ovb', 'ovs', 'Returns%', 'MaxR']) pret = pd.DataFrame(columns=cols) arglist = [[]] # make all possible parameter combinations for p in params1: newarglist = [] for pp in p: for argset in arglist: newargset = argset.copy() newargset.append(pp) newarglist.append(newargset) arglist = newarglist signalsmap = dict() ipret = 0 for argset in arglist: graphdata = tind.display_indicator(self.data, self.tii.indicator.name, self.tii, True, *argset) for pltdt in graphdata: if pltdt['name'] == 'bb_bw': pltdt1 = pltdt['y'] break maxv = max(pltdt1) minv = min(pltdt1) ovba = np.arange((maxv + minv) / 2, maxv, (maxv - minv) / 20, dtype=float) ovsa = np.arange((maxv + minv) / 2, minv, -(maxv - minv) / 20, dtype=float) ovba = np.delete(ovba, 0) ovsa = np.delete(ovsa, 0) for ovb in ovba: for ovs in ovsa: self.bb_bw = pltdt1 signal_graph, signals, traderet = self.trigger(ovb, ovs) if traderet['winlossratio'] is None or traderet[ 'winlossratio'] == np.inf: traderet = 0 else: traderet = traderet['winlossratio'] parama = argset.copy() parama.extend([ovb, ovs, traderet, '']) pret.loc[ipret] = parama signalsmap[ipret] = signals ipret += 1 retcol = pret['Returns%'] imax = np.array(retcol).argmax() pret.at[imax, 'MaxR'] = 'MR' psetb = pret.loc[imax] return psetb, pret, signalsmap[imax]
def train_for_threshold(df, tii, plt, recact=False): """ Train for plot vs plot in. Return: psetb: Parameter set with highest trade returns. pret: Frame with parameters and returns values. """ cols = [] params1 = [] for ii in tii.indicator.indicatorinputs.all(): params1.append(get_input_value(tii, ii.parameter)) cols.append(ii.parameter) if len(params1) > 0: params1 = globals()['prepare_params_for_'+tii.indicator.id_letter](*params1) cols.extend(['ovb', 'ovs', 'Returns%', 'MaxR']) pret = pd.DataFrame(columns=cols) arglist = [[]] # make all possible parameter combinations for p in params1: newarglist = [] for pp in p: for argset in arglist: newargset = argset.copy() newargset.append(pp) newarglist.append(newargset) arglist = newarglist sargs = [trade_with_threshold] bssigmap = dict() stopsigmap = dict() trendsigmap = dict() sigtypemap = dict() ipret = 0 for argset in arglist: graphdata = tind.display_indicator(df, tii.indicator.name, tii, True, *argset) for pltdt in graphdata: if pltdt['name'] == plt: pltdt1=pltdt['y'] break maxv = max(pltdt1) minv = min(pltdt1) ovba = np.arange((maxv+minv)/2, maxv, maxv/10, dtype=int) ovsa = np.arange((maxv+minv)/2, minv, minv/10, dtype=int) for ovb in ovba: for ovs in ovsa: bsrets, sigtype, stopsig, trendsig, bssig = trade_with_threshold(df, pltdt1, ovb, ovs, True) if bsrets.empty: traderet = 0 else: traderet = bsrets['Returns%'].iloc[-1] # Last index for final return parama = argset.copy() parama.extend([ovb, ovs, traderet, '']) pret.loc[ipret] = parama bssigmap[ipret] = bssig stopsigmap[ipret] = stopsig trendsigmap[ipret] = trendsig sigtypemap[ipret] = sigtype ipret+=1 retcol = pret['Returns%'] imax = np.array(retcol).argmax() pret.at[imax, 'MaxR'] = 'MR' psetb = pret.loc[imax] return psetb, pret, sigtypemap[imax], stopsigmap[imax], trendsigmap[imax], bssigmap[imax]
def train_for_cross2(df, tii1, tii2, plt1, plt2, recact=False): """ Train for plot vs plot in. Return: psetb: Parameter set with highest trade returns. pret: Frame with parameters and returns values. """ cols = [] params1 = [] for ii in tii1.indicator.indicatorinputs.all(): params1.append(get_input_value(tii1, ii.parameter)) cols.append(ii.parameter) params2 = [] for ii in tii2.indicator.indicatorinputs.all(): params2.append(get_input_value(tii2, ii.parameter)) cols.append(ii.parameter) if len(params1) > 0: params1 = globals()['prepare_params_for_'+tii1.indicator.id_letter](*params1) if len(params2) > 0: params2 = globals()['prepare_params_for_'+tii2.indicator.id_letter](*params2) cols.extend(['Returns%', 'MaxR']) pret = pd.DataFrame(columns=cols) arglist = [[]] # make all possible parameter combinations for p in params1: newarglist = [] for pp in p: for argset in arglist: newargset = argset.copy() newargset.append(pp) newarglist.append(newargset) arglist = newarglist arglist1 = arglist arglist = [[]] # make all possible parameter combinations for p in params2: newarglist = [] for pp in p: for argset in arglist: newargset = argset.copy() newargset.append(pp) newarglist.append(newargset) arglist = newarglist arglist2 = arglist sargs = [trade_with_cross2] bssigmap = dict() stopsigmap = dict() trendsigmap = dict() sigtypemap = dict() ipret = 0 for argset1 in arglist1: graphdata1 = tind.display_indicator(df, tii1.indicator.name, tii1, True, *argset1) dfnew = df.copy() for pltdt in graphdata1: dfnew[pltdt['name']] = pltdt['y'] if pltdt['name'] == plt1: pltdt1=pltdt['y'] for argset2 in arglist2: graphdata2 = tind.display_indicator(dfnew, tii2.indicator.name, tii2, True, *argset2) for pltdt in graphdata2: if pltdt['name'] == plt2: pltdt2=pltdt['y'] break bsrets, sigtype, stopsig, trendsig, bssig = trade_with_cross2(df, pltdt1, pltdt2, True) if bsrets.empty: traderet = 0 else: traderet = bsrets['Returns%'].iloc[-1] # Last index for final return parama = argset1.copy() parama.extend(argset2) parama.extend([traderet, '']) bssigmap[ipret] = bssig stopsigmap[ipret] = stopsig trendsigmap[ipret] = trendsig sigtypemap[ipret] = sigtype pret.loc[ipret] = parama ipret+=1 retcol = pret['Returns%'] imax = np.array(retcol).argmax() pret.at[imax, 'MaxR'] = 'MR' psetb = pret.loc[imax] return psetb, pret, sigtypemap[imax], stopsigmap[imax], trendsigmap[imax], bssigmap[imax]