예제 #1
0
    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']
예제 #2
0
    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]
예제 #3
0
    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
예제 #4
0
    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']
예제 #5
0
파일: ic.py 프로젝트: macharry89/episectrad
    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']
예제 #6
0
    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']
예제 #7
0
    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']
예제 #8
0
    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']
예제 #9
0
    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
        
예제 #10
0
    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]
예제 #11
0
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]
예제 #12
0
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]