Пример #1
0
    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.write('Reading Logframe...')

        # Create the log frame object.
        lf = LogicalFramework("Strengthening Afghanistan's Budget II", 5.03)
        ctrler = Controller(lf)

        # Set the high-level statements for the logframe.
        ctrler.set_impact("The GIRoA can effectively manage resources in support of economic growth and to improve the lives of the Afghan people.")
        ctrler.set_outcome("Transparent and well functioning GIRoA budget process.")

        # Create and add high-level indicators for the logframe.
        imp_ind = Indicator(1, "GDP Growth", 0, 5)
        ctrler.add_impact_indicator(imp_ind)
        oc_ind = Indicator(2, "Transparency Index", 21, 27)
        ctrler.add_outcome_indicator(oc_ind)

        # Add assumptions for the logframe.
        impact_assumption1 = Assumption(assumption_level.IMPACT, 1, "Assuming the Government wishes to make public financial management reforms")
        outcome_assumption1 = Assumption(assumption_level.OUTCOME, 1, "Assuming the Government assigns qualified staff to the team")
        ctrler.add_impact_assumption(impact_assumption1)
        ctrler.add_outcome_assumption(outcome_assumption1)

        ctrler.display()
def give_result_special(data, mt=None, get_json=True):
    if mt is None:
        mt = Indicator(name=data['symbol_id'])
    valid = int(data['valid'])
    special = {'function_name': data['indicators']['special']['name']}
    special = add_apply_to(special, 'special', data)
    if 'params' in data['indicators']['special']:
        params = data['indicators']['special']['params']
        for param in params:
            special[param] = float(params[param])

    indicator_special_org = bt.shifter(mt.indicator_calculator(**special),
                                       int(data['indicators']['special']['settings']['shift']))
    # indicator_ascending = indicator_ascending_org[data['indicators']['ascending']['output']['name']]
    # indicator_ascending = pd.DataFrame(indicator_ascending)

    outputs = data['indicators']['special']['outputs']
    indicators = {'special': {}}
    for output in outputs:
        indicators['special'][output] = indicator.add_time(pd.DataFrame(indicator_special_org[output])).to_json(
            orient='values')

    result = bt.special(indicator_special_org, data['indicators']['special']['name'])
    result = bt.set_valid_time(result, valid)

    indicators['result'] = result.to_json(orient='values')
    indicators['type'] = 'first'
    # add_to_db(data['id'],result)
    if not get_json:
        return indicators
    return json.dumps(indicators)
def give_result_ascending(data, mt=None, get_json=True):
    if mt is None:
        mt = Indicator(name=data['symbol_id'])
    days = int(data['days'])
    valid = int(data['valid'])
    ascending = {'function_name': data['indicators']['ascending']['name']}
    ascending = add_apply_to(ascending, 'ascending', data)
    if 'params' in data['indicators']['ascending']:
        params = data['indicators']['ascending']['params']
        for param in params:
            ascending[param] = float(params[param])

    indicator_ascending_org = bt.shifter(mt.indicator_calculator(**ascending),
                                         int(data['indicators']['ascending']['settings']['shift']))
    indicator_ascending = indicator_ascending_org[data['indicators']['ascending']['output']['name']]
    indicator_ascending = pd.DataFrame(indicator_ascending)

    outputs = data['indicators']['ascending']['outputs']
    indicators = {'ascending': {}}
    for output in outputs:
        indicators['ascending'][output] = indicator.add_time(pd.DataFrame(indicator_ascending_org[output])).to_json(
            orient='values')
    # print('monoto called!')
    result = bt.monotono(indicator_ascending, days)
    result = bt.set_valid_time(result, valid)
    indicators['type'] = 'first'
    indicators['result'] = result.to_json(orient='values')
    if not get_json:
        return indicators
    return json.dumps(indicators)
def give_result_draw(data, mt=None, get_json=True):
    if mt is None:
        mt = Indicator(name=data['symbol_id'])
    draw = {'function_name': data['indicators']['draw']['name']}
    draw = add_apply_to(draw, 'draw', data)
    if 'params' in data['indicators']['draw']:
        params = data['indicators']['draw']['params']
        for param in params:
            draw[param] = float(params[param])

    indicator_draw_org = bt.shifter(mt.indicator_calculator(**draw),
                                    int(data['indicators']['draw']['settings']['shift']))
    # print(data['stock_name'])
    # print(draw)
    # print(calc_filter.delay(data['stock_name'],draw).get())
    # print(type(calc_filter.delay(data['stock_name'],draw).get()))
    # indicator_draw_org = bt.shifter(calc_filter.delay(data['stock_name'],draw).get(),
    #                                 int(data['indicators']['draw']['settings']['shift']))
    #
    outputs = data['indicators']['draw']['outputs']
    indicators = {'draw': {}}
    for output in outputs:
        indicators['draw'][output] = indicator.add_time(pd.DataFrame(indicator_draw_org[output])).to_json(
            orient='values')

    indicators['type'] = 'default'
    # return indicators
    if not get_json:
        return indicators
    return json.dumps(indicators)
Пример #5
0
    def _create_inh_control(self, name, parent, layout, col):
        # Create a label for the inhibit switch
        label = QLabel(name, parent)
        label.setAlignment(Qt.AlignCenter)
        font = label.font()
        font.setPointSize(7)
        font.setBold(True)
        label.setFont(font)
        layout.addWidget(label, 0, col)

        # Add an indicator to show inhibit state
        ind = Indicator(parent, QColor(255, 120, 0))
        ind.setFixedSize(20, 20)
        layout.addWidget(ind, 1, col)
        layout.setAlignment(ind, Qt.AlignCenter)

        # Add a switch to control the inhibit state
        check = QCheckBox(parent)
        check.setFixedSize(20, 20)
        check.setStyleSheet(
            'QCheckBox::indicator{subcontrol-position:center;}')
        layout.addWidget(check, 2, col)
        layout.setAlignment(check, Qt.AlignCenter)
        layout.setColumnMinimumWidth(col, 25)

        self._inh_switches.append(check)
        self._inh_inds.append(ind)
Пример #6
0
    def _create_stop_cond(self, label_text, name, layout, col):
        # Create an indicator to show stop status
        ind = Indicator(self, QColor(255, 0, 0))
        ind.setFixedSize(25, 20)
        layout.addWidget(ind, 0, col)
        layout.setAlignment(ind, Qt.AlignCenter)
        self._stop_inds[name] = ind

        # Add a switch to control the stop control state
        check = QCheckBox(self)
        check.setFixedSize(20, 20)
        check.setStyleSheet(
            'QCheckBox::indicator{subcontrol-position:center;}')
        layout.addWidget(check, 1, col)
        layout.setAlignment(check, Qt.AlignCenter)
        check.stateChanged.connect(self._set_stop_conds)
        self._stop_switches[name] = check

        # Create a label for the inhibit switch
        label = QLabel(label_text, self)
        label.setAlignment(Qt.AlignCenter)
        font = label.font()
        font.setPointSize(7)
        font.setBold(True)
        label.setFont(font)
        label_height = 2 if '\n' in label_text else 1
        layout.addWidget(label, 2, col, label_height, 1)
        layout.setAlignment(label, Qt.AlignCenter | Qt.AlignTop)
Пример #7
0
 def _add_indicator(self, settings):
     exchange = settings.get('exchange')
     refresh = settings.get('refresh')
     asset_pair = settings.get('asset_pair')
     default_label = settings.get('default_label')
     indicator = Indicator(self, exchange, asset_pair, refresh,
                           default_label)
     self.instances.append(indicator)
     indicator.start()
def give_result_backtest(name, res, config):
    # print(config)
    mt = Indicator(name=name)
    price = {'function_name': 'close'}
    price = mt.indicator_calculator(**price)
    for setting in ['stop loss', 'take profit']:
        config[setting]['apply'] = mt.indicator_calculator(**{'function_name': config[setting]['apply']})
    res = pd.DataFrame(data=res)
    # result = bt.BackTest(price, res, config).back_test()
    result = bt.testresult(price, res, config)
    return json.dumps(result)
Пример #9
0
    def _create_alarm(self, name, color, layout, col):
        # Create an indicator to show alarm status
        ind = Indicator(self, color)
        ind.setFixedSize(25, 20)
        layout.addWidget(ind, 1, col)
        layout.setAlignment(ind, Qt.AlignCenter)
        self._alarm_inds[name.lower()] = ind

        # Create a label for the indicator
        label = self._create_label(name, self)
        layout.addWidget(label, 0, col, 1, 1)
        layout.setAlignment(label, Qt.AlignCenter | Qt.AlignTop)
Пример #10
0
    def __init__(self, ib: IB):
        self.ib = ib
        self.root = tk.Tk()
        self.loop = asyncio.get_event_loop()

        self.root.title("ModelTrader Indicators")
        self.root.protocol('WM_DELETE_WINDOW', self._onDeleteWindow)
        self.root.minsize(width=250, height=50)

        self.qtrhour = Indicator(self.root, "Time of Check","")
        self.connected = Indicator(self.root, "Connected", "True")
        self.contract = Indicator(self.root, "Contract", "")
        #self.root.sub1("current period")
        self.cci15 = Indicator(self.root, "CCI (15m)", "")        
        self.cci15_av = Indicator(self.root, "CCI Avg (15m)", "")
        self.atr15 = Indicator(self.root, "ATR (15m)", "")
        self.bband15_width = Indicator(self.root, "BBAND Width (15m)", "")
        self.bband15_b = Indicator(self.root, "BBAND %B (15m)", "")
        self.cci15p = Indicator(self.root, "CCI (15p)", "")
        self.cci15p_av = Indicator(self.root, "CCIP Avg (15m)", "")

        self.ib.connectedEvent += self.connectEvent
        self.ib.disconnectedEvent += self.disconnectEvent
def give_result_more(data, mt=None, get_json=True):
    if mt is None:
        mt = Indicator(name=data['symbol_id'])
    valid = int(data['valid'])
    indicators = {'main': {}, 'minor': {}}

    main = {'function_name': data['indicators']['main']['name']}
    main = add_apply_to(main, 'main', data)
    if 'params' in data['indicators']['main']:
        params = data['indicators']['main']['params']
        for param in params:
            main[param] = float(params[param])

    indicator_main_org = bt.shifter(mt.indicator_calculator(**main),
                                    int(data['indicators']['main']['settings']['shift']))
    indicator_main = indicator_main_org[data['indicators']['main']['output']['name']]
    indicator_main = pd.DataFrame(indicator_main)

    outputs = data['indicators']['main']['outputs']
    for output in outputs:
        indicators['main'][output] = indicator.add_time(pd.DataFrame(indicator_main_org[output])).to_json(
            orient='values')

    minor = {'function_name': data['indicators']['minor']['name']}
    minor = add_apply_to(minor, 'minor', data)
    if 'params' in data['indicators']['minor']:
        params = data['indicators']['minor']['params']
        for param in params:
            minor[param] = float(params[param])

    indicator_minor_org = bt.shifter(mt.indicator_calculator(**minor),
                                     int(data['indicators']['minor']['settings']['shift']))
    indicator_minor = indicator_minor_org[data['indicators']['minor']['output']['name']]
    indicator_minor = pd.DataFrame(indicator_minor)

    outputs = data['indicators']['minor']['outputs']
    for output in outputs:
        indicators['minor'][output] = indicator.add_time(pd.DataFrame(indicator_minor_org[output])).to_json(
            orient='values')

    more = bt.more_than(indicator_main, indicator_minor)
    more = bt.set_valid_time(bt.change_df(more), valid)

    indicators['type'] = 'second'
    indicators['result'] = more.to_json(orient='values')
    # add_to_db(data['id'],more)
    # print(more.head(10))
    if not get_json:
        return indicators
    return json.dumps(indicators)
def give_result_cross(data, mt=None, get_json=True):
    if mt is None:
        mt = Indicator(name=data['symbol_id'])
    valid = int(data['valid'])
    indicators = {'shorter': {}, 'longer': {}}

    shorter = {'function_name': data['indicators']['shorter']['name']}
    shorter = add_apply_to(shorter, 'shorter', data)
    if 'params' in data['indicators']['shorter']:
        params = data['indicators']['shorter']['params']
        for param in params:
            shorter[param] = float(params[param])

    indicator_shorter_org = bt.shifter(mt.indicator_calculator(**shorter),
                                       int(data['indicators']['shorter']['settings']['shift']))
    # print(indicator_shorter_org)
    indicator_shorter = indicator_shorter_org[data['indicators']['shorter']['output']['name']]
    indicator_shorter = pd.DataFrame(indicator_shorter)

    outputs = data['indicators']['shorter']['outputs']
    for output in outputs:
        indicators['shorter'][output] = indicator.add_time(pd.DataFrame(indicator_shorter_org[output])).to_json(
            orient='values')

    longer = {'function_name': data['indicators']['longer']['name']}
    longer = add_apply_to(longer, 'longer', data)
    if 'params' in data['indicators']['longer']:
        params = data['indicators']['longer']['params']
        for param in params:
            longer[param] = float(params[param])

    indicator_longer_org = bt.shifter(mt.indicator_calculator(**longer),
                                      int(data['indicators']['longer']['settings']['shift']))
    indicator_longer = indicator_longer_org[data['indicators']['longer']['output']['name']]
    indicator_longer = pd.DataFrame(indicator_longer)
    outputs = data['indicators']['longer']['outputs']
    for output in outputs:
        indicators['longer'][output] = indicator.add_time(pd.DataFrame(indicator_longer_org[output])).to_json(
            orient='values')

    cross = bt.cross(indicator_shorter, indicator_longer)
    cross = bt.set_valid_time(cross, valid)

    indicators['type'] = 'first'
    indicators['result'] = cross.to_json(orient='values')
    # add_to_db(data['id'],cross)
    if not get_json:
        return indicators
    return json.dumps(indicators)
Пример #13
0
    def get_performance_list(self, average_position_signal_array_norm):
        # average_position_signal_array_norm = self.get_average_position_signal_array(self.position_signal_array_list)
        indi_obj = Indicator(self, average_position_signal_array_norm)
        ret = indi_obj.get_total_return()
        mean_tvr = indi_obj.get_mean_turnover()
        dd, dd_start, dd_end = indi_obj.get_max_drawdown()
        sharp = indi_obj.get_sharp()
        ret2dd = indi_obj.get_return_divide_dd()
        mg_bp = indi_obj.get_margin_bp()

        indi_list = [
            'average', self.window_period, self.std_num, self.start_time[:-4],
            self.end_time[:-4], ret, mean_tvr, sharp, ret2dd, dd, dd_start,
            dd_end, mg_bp
        ]
        return indi_list
Пример #14
0
    def _create_status_light(self, name, parent, layout, col):
        label = QLabel(name, parent)
        label.setAlignment(Qt.AlignCenter)
        font = label.font()
        font.setPointSize(7)
        font.setBold(True)
        label.setFont(font)
        layout.addWidget(label, 1, col)

        # Add an indicator to show inhibit state
        ind = Indicator(parent, QColor(255, 0, 0))
        ind.setFixedSize(20, 20)
        layout.addWidget(ind, 2, col)
        layout.setAlignment(ind, Qt.AlignCenter)

        return ind
def give_result_candlestick(data, mt=None, get_json=True):
    if mt is None:
        mt = Indicator(name=data['symbol_id'])
    valid = int(data['valid'])
    candlestick = {'function_name': data['indicators']['candlestick']['name']}
    # ascending['price'] = data['apply_to']
    if 'params' in data['indicators']['candlestick']:
        params = data['indicators']['candlestick']['params']
        for param in params:
            candlestick[param] = float(params[param])

    indicator_candlestick_org = bt.shifter(mt.indicator_calculator(**candlestick),
                                           int(data['indicators']['candlestick']['settings']['shift']))
    indicator_candlestick = indicator_candlestick_org[data['indicators']['candlestick']['output']['name']]
    indicator_candlestick = pd.DataFrame(indicator_candlestick)

    # for i in indicator_candlestick.index:
    #     if indicator_candlestick['integer'][i] not in [0,200,-200]:
    #         print('f**k: ',indicator_candlestick['integer'][i])

    # indicator_candlestick_display = []
    # high = mt.indicator_calculator(**{'function_name':'high'})
    # low = mt.indicator_calculator(**{'function_name':'low'})
    # for i in indicator_candlestick.index:
    #     if indicator_candlestick['integer'][i] != 0:
    #         indicator_candlestick_display +=[[i,1.05*high['real'][i],0.95*low['real'][i]]]
    # df = pd.DataFrame(indicator_candlestick_display)
    # indicators['test'] = df.to_json(orient='values')

    indicators = {'candlestick': {}}
    outputs = data['indicators']['candlestick']['outputs']
    for output in outputs:
        indicators['candlestick'][output] = indicator.add_time(pd.DataFrame(indicator_candlestick_org[output])).to_json(
            orient='values')

    indicator_candlestick = indicator_candlestick.replace([100, -100], [1, -1])
    result = indicator_candlestick

    result = bt.set_valid_time(result, valid)

    indicators['type'] = 'first'
    indicators['result'] = result.to_json(orient='values')
    if not get_json:
        return indicators
    return json.dumps(indicators)
Пример #16
0
def load_all():

    url = 'http://api.worldbank.org/indicators?format=json&per_page=' + \
        str(per_page)

    response = urllib.request.urlopen(url)
    data = response.read().decode('utf-8')
    data = json.loads(data)

    for item in data[1]:

        i = Indicator()
        i.name = item['id']
        i.description = item['name']
        i.sourcenote = item['sourceNote']
        i.datasource = item['sourceOrganization']
        i.source = "worldbank"

        Indicators.add(i)
def give_update_indicators(data):
    price = data['price']
    data = data['params']
    draw = {'function_name': data['name']}
    draw = add_apply_to(draw, 'draw', data)
    length = 5
    if 'params' in data:
        params = data['params']
        for param in params:
            draw[param] = float(params[param])
            length = np.max([length, np.abs(float(params[param]))])
    length = 10 * (int(length) + 2)
    tail = {'price': price, 'length': length}
    mt = Indicator(name=data['symbol_id'], tail=tail)
    # mt = Indicator(name=data['symbol_id'])
    indicator_draw_org = mt.indicator_calculator(**draw)
    outputs = data['outputs']
    indicators = {}
    for output in outputs:
        indicators[outputs[output]['id']] = indicator.add_time(
            pd.DataFrame(indicator_draw_org[output].tail(1))).to_json(
            orient='values')
    print(indicators)
    return json.dumps(indicators)
Пример #18
0
    def roll_test(self, ):

        self.set_directory(self.start_time, self.end_time, self.strategy_name)
        [
            self.price_focused_list, self.volume_focused,
            self.instrument_focused, self.datetime_focused
        ] = self.get_focused_info()
        results_single_return_bp = np.zeros(
            (len(self.window_period_list), len(self.std_num_list)))
        results_return2dd = np.zeros(
            (len(self.window_period_list), len(self.std_num_list)))
        results_turnover = np.zeros(
            (len(self.window_period_list), len(self.std_num_list)))

        for i in range(len(self.window_period_list)):
            for j in range(len(self.std_num_list)):
                self.window_period = self.window_period_list[i]
                self.std_num = self.std_num_list[j]

                position_signal_focused = self.generate_position_signal()
                if hasattr(self, 'loss_threshold'):
                    position_signal_focused = self.stop_loss_win(
                        position_signal_focused)
                self.position_signal_array = self.map_signal_focused_to_array(
                    position_signal_focused)
                self.position_signal_array_list.append(
                    self.position_signal_array)

                indi_obj = Indicator(self, self.position_signal_array)
                self.buysell_signal_array = indi_obj.get_buysell_signal()
                # self.compound_return_array = indi_obj.get_compound_return()
                self.single_return_array = indi_obj.get_single_return()

                self.buysell_info = self.get_buysell_info()
                seq = [
                    self.coinType1 + '-' + self.coinType2,
                    self.two_contract[0], self.two_contract[1],
                    self.strategy_name,
                    str(self.window_period),
                    str(self.std_num)
                ]
                self.write_buysell_info_to_file(self.buysell_dir, seq,
                                                self.buysell_info)
                seq.append('day-return')
                ret_unitTime_list, endtime_list = indi_obj.get_return_for_unitTime(
                )
                ret_unit_df = pd.DataFrame({
                    'endtime': endtime_list,
                    'return': ret_unitTime_list
                })
                self.write_buysell_info_to_file(self.buysell_dir, seq,
                                                ret_unit_df)
                del seq[-1]

                ret = indi_obj.get_total_return()
                mean_tvr = indi_obj.get_mean_turnover()
                dd, dd_start, dd_end = indi_obj.get_max_drawdown()
                sharp = indi_obj.get_sharp()
                ret2dd = indi_obj.get_return_divide_dd()
                mg_bp = indi_obj.get_margin_bp()

                results_return2dd[i][j] = ret2dd
                results_turnover[i][j] = mean_tvr
                results_single_return_bp[i][j] = mg_bp
                indi_list = [
                    self.coinType1 + '-' + self.coinType2, self.window_period,
                    self.std_num, self.start_time[:-4], self.end_time[:-4],
                    ret, mean_tvr, sharp, ret2dd, dd, dd_start, dd_end, mg_bp
                ]
                self.indi_list_list.append(indi_list)

        seq = [
            self.coinType1 + '-' + self.coinType2, self.two_contract[0],
            self.two_contract[1], self.strategy_name
        ]
        results_list = [
            results_single_return_bp, results_return2dd, results_turnover
        ]
        self.results_tag_list = ['mg-bp', 'ret2dd', 'turnover']
        self.get_average_result_list(self.results_tag_list)
        for i in range(len(results_list)):
            # record the data results for each coin type, it's used for calculating the average results
            self.average_result_list[i].append(results_list[i])
            seq.append(self.results_tag_list[i])
            self.write_result_to_file(self.result_dir, seq, results_list[i],
                                      self.window_period_list,
                                      self.std_num_list)
            del seq[-1]
Пример #19
0
    def __init__(self, ib: IB):
        self.ib = ib
        self.root = tk.Tk()
        self.loop = asyncio.get_event_loop()

        self.root.title("ModelTrader Indicators")
        self.root.protocol('WM_DELETE_WINDOW', self._onDeleteWindow)
        self.root.minsize(width=250, height=50)

        self.qtrhour = Indicator(self.root, "Time of Check", "", 1)
        self.connected = Indicator(self.root, "Connected", "True", 1)
        self.contract = Indicator(self.root, "Contract", "", 1)
        self.shares = Indicator(self.root, "Shares", "", 1)
        self.label3 = Indicator(self.root, "15 Minutes ", "", 1)
        self.crossover = Indicator(self.root, "Crossover", "False", 1)
        self.spread = Indicator(self.root, "Spread", "", 1)

        self.cci15 = Indicator(self.root, "CCI      ", "", 1)
        self.cci15_av = Indicator(self.root, "CCI Avg ", "", 1)
        self.atr15 = Indicator(self.root, "ATR ", "", 1)
        #self.bband15_width = Indicator(self.root, "BBAND Width", "",1)
        #self.bband15_b = Indicator(self.root, "BBAND %B ", "",1)
        self.label1 = Indicator(self.root, " ", "", 1)
        self.cci15p = Indicator(self.root, "CCI ", "", 1)
        self.cci15p_av = Indicator(self.root, "CCIP Avg", "", 1)

        self.label2 = Indicator(self.root, "1 Hour ", "", 1)
        self.cci1h = Indicator(self.root, "CCI ", "", 2)
        self.cci1h_av = Indicator(self.root, "CCI Avg ", "", 2)
        self.atr1h = Indicator(self.root, "ATR ", "", 2)
        #self.bband1h_width = Indicator(self.root, "BBand Width ","",2)
        #self.bband1h_b = Indicator(self.root, "BBand %p ","",2)

        self.label1 = Indicator(self.root, "1 Day ", "", 1)
        self.cci1d = Indicator(self.root, "CCI ", "", 3)
        self.cci1d_av = Indicator(self.root, "CCI Avg ", "", 3)
        self.atr1d = Indicator(self.root, "ATR ", "", 3)
        #self.bband1d_width = Indicator(self.root, "BBand Width ","",3)
        #self.bband1d_b = Indicator(self.root, "BBand %p ","",3)
        self.status1 = Indicator(self.root, "Status1 ", "", 0)

        self.ib.disconnectedEvent += self.disconnectEvent
        self.ib.connectedEvent += self.connectEvent
        self.ib.orderStatusEvent += self.orderStatusEvent
        self.ib.newOrderEvent += self.newOrderEvent
        self.ib.execDetailsEvent += self.execDetailsEvent
        self.ib.errorEvent += self.onError
        self.ib.newOrderEvent += self.newOrderEvent
Пример #20
0
def main():
    xf_indicator = Indicator()
    Gtk.main()
Пример #21
0
import pygame
from globals import *
from cell import Cell
from indicator import Indicator

# SETUP
pygame.init()
pygame.display.set_caption(WINDOW_LABEL)
screen = pygame.display.set_mode(WINDOW_DIMENSIONS)
running = True
indicator = Indicator(screen)

# GENERATE ALL CELLS
cells = []
for i in range((WINDOW_DIMENSIONS[1]-CELL_SIZE)//CELL_SIZE):
    row = []
    for j in range(WINDOW_DIMENSIONS[0]//CELL_SIZE):
        row.append(Cell(screen, j*CELL_SIZE, i*CELL_SIZE+INDICATOR_WIDTH))
    cells.append(row)

# DEFAULT PLAYER (True = red, False = yellow)
red = True

# INPUT LOGIC
def quitGame():
    return event.type == pygame.QUIT or event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE

def mouseMotion():
    return event.type == pygame.MOUSEMOTION

def mouseClick():
Пример #22
0
    def _create_reg(self, ind_list, name, width, color):
        # Create a widget to hold the register's bits
        reg_widget = QWidget(self)
        reg_layout = QVBoxLayout(reg_widget)
        reg_widget.setLayout(reg_layout)
        reg_layout.setSpacing(0)
        reg_layout.setMargin(0)

        # Create a widget to hold the register's label and value textbox
        label_value = QWidget(reg_widget)
        lv_layout = QHBoxLayout(label_value)
        label_value.setLayout(lv_layout)
        lv_layout.setSpacing(1)
        lv_layout.setMargin(0)
        reg_layout.addWidget(label_value)

        # Create a label to show the register's name
        reg_label = QLabel(name, label_value)
        reg_label.setAlignment(Qt.AlignCenter)
        font = reg_label.font()
        font.setPointSize(8)
        reg_label.setFont(font)
        lv_layout.addWidget(reg_label)

        # Create a textbox to show the register's value in octal
        n_digits = int((width + 2) / 3)
        if n_digits == 1:
            value_width = 25
        elif n_digits == 2:
            value_width = 30
        else:
            value_width = 45

        reg_value = QLineEdit(label_value)
        reg_value.setReadOnly(True)
        reg_value.setMaximumSize(value_width, 32)
        reg_value.setText(n_digits * '0')
        font = QFont('Monospace')
        font.setStyleHint(QFont.TypeWriter)
        font.setPointSize(10)
        reg_value.setFont(font)
        reg_value.setAlignment(Qt.AlignCenter)
        lv_layout.addWidget(reg_value)

        # Create a frame to hold the register's bits
        bit_frame = QFrame(reg_widget)
        bit_layout = QHBoxLayout(bit_frame)
        bit_layout.setSpacing(1)
        bit_layout.setMargin(0)
        bit_frame.setLayout(bit_layout)
        bit_frame.setFrameStyle(QFrame.StyledPanel | QFrame.Raised)

        # Add indicators for each bit in the register, from MSB to LSB
        for i in range(width, 0, -1):
            ind = Indicator(bit_frame, color)
            ind.setFixedSize(20, 32)
            bit_layout.addWidget(ind)
            ind_list.insert(0, ind)

            # Add separators between each group of 3 bits
            if (i > 1) and ((i % 3) == 1):
                sep = QFrame(bit_frame)
                sep.setFrameStyle(QFrame.VLine | QFrame.Raised)
                bit_layout.addWidget(sep)

        reg_layout.addWidget(bit_frame)

        return reg_widget, reg_value
Пример #23
0
    def _setup_ui(self, name, color):
        # Set up the overall horizontal layout
        layout = QHBoxLayout(self)
        self.setLayout(layout)
        layout.setSpacing(3)
        layout.setMargin(1)

        # Construct a frame to hold the 16 indicators
        bit_frame = QFrame(self)
        bit_layout = QHBoxLayout(bit_frame)
        bit_layout.setSpacing(1)
        bit_layout.setMargin(0)
        bit_frame.setLayout(bit_layout)
        bit_frame.setFrameStyle(QFrame.StyledPanel | QFrame.Raised)

        layout.addWidget(bit_frame)

        # Add the 16 bit indicators to the frame, from 16 to 1.
        for i in range(16, 0, -1):
            ind = Indicator(bit_frame, color)
            ind.setFixedSize(20, 32)
            bit_layout.addWidget(ind)
            self._indicators.insert(0, ind)

            # Add separators between every group of 3 bits (except between
            # bits 15 and 16).
            if (i < 16) and (i > 1) and ((i % 3) == 1):
                sep = QFrame(bit_frame)
                sep.setFrameStyle(QFrame.VLine | QFrame.Raised)
                bit_layout.addWidget(sep)

        # Add sensed and generated parity bits, if this register has them
        if self._has_parity:
            sep = QFrame(bit_frame)
            sep.setFrameStyle(QFrame.VLine | QFrame.Raised)
            bit_layout.addWidget(sep)

            for i in range(2, 0, -1):
                ind = Indicator(bit_frame, QColor(220, 240, 0))
                ind.setFixedSize(20, 32)
                bit_layout.addWidget(ind)
                self._parity_inds.insert(0, ind)

        # Add a box to display the octal decoded value in
        self._value_box = QLineEdit()
        self._value_box.setMaximumSize(52, 32)
        self._value_box.setReadOnly(True)
        self._value_box.setAlignment(Qt.AlignCenter)
        self._value_box.setText('00000')

        font = QFont('Monospace')
        font.setStyleHint(QFont.TypeWriter)
        font.setPointSize(10)
        self._value_box.setFont(font)

        layout.addWidget(self._value_box)

        # Add a label showing the name of the register
        label = QLabel(name, self)
        font = label.font()
        font.setPointSize(14)
        font.setBold(True)
        label.setFont(font)
        label.setMinimumWidth(20)

        layout.addWidget(label)

        # If parity was not included, fill up the equivalent space
        if not self._has_parity:
            layout.addSpacing(62)
        else:
            layout.addSpacing(17)
Пример #24
0
 def add_indicator(self, settings=None):
     indicator = Indicator(self, len(self.instances), self.config, settings)
     self.instances.append(indicator)
     nt = threading.Thread(target=indicator.start())
     nt.start()
     self.gui_ready.set()
Пример #25
0
from exchange.kraken import Kraken
from exchange.bitstamp import Bitstamp
from exchange.btce import BtcE

PROJECT_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))

if __name__ == "__main__":
    signal.signal(signal.SIGINT, signal.SIG_DFL)  # ctr+c exit

    config = yaml.load(open(PROJECT_ROOT + '/config.yaml', 'r'))
    config['project_root'] = PROJECT_ROOT

    print("Starting Coin Price indicator v" + config['app']['version'])

    # indicator applet
    indicator = Indicator(config)

    # exchanges
    exchanges = [{
        'code': 'kraken',
        'name': 'Kraken',
        'instance': Kraken(config, indicator)
    }, {
        'code': 'bitstamp',
        'name': 'Bitstamp',
        'instance': Bitstamp(config, indicator)
    }, {
        'code': 'btce',
        'name': 'BTC-E',
        'instance': BtcE(config, indicator)
    }]
Пример #26
0
 def add_indicator(self, settings=None):
     indicator = Indicator(self, len(self.instances), self.config, settings)
     self.instances.append(indicator)
     indicator.start()
     self.gui_ready.set()
Пример #27
0
    def __init__(self, ib: IB):
        self.ib = ib
        self.root = tk.Tk()
        #new code
        #ibc = IBC(twsVersion=972, gateway=True, tradingMode='paper')
        #ib.connectedEvent += onConnected
        #watchdog = Watchdog(ibc, ib, port=4002)
        #watchdog.start()
        #end new code
        #self.loop = asyncio.get_event_loop()

        self.root.title("ModelTrader Indicators")
        self.root.protocol('WM_DELETE_WINDOW', self._onDeleteWindow)
        self.root.minsize(width=250, height=100)
        self.label4 = Indicator(self.root, "Positions","",1)
        self.shares = Indicator(self.root, "Shares", "",1)
        self.qtrhour = Indicator(self.root, "Time of Check","",1)
        self.connected = Indicator(self.root, "Connected", "True",1)
        self.contract = Indicator(self.root, "Contract", "",1)
        self.label3 = Indicator(self.root, "15 Minutes ","",1)
        self.crossover = Indicator(self.root, "Crossover", "False",1)
        self.spread = Indicator(self.root, "CCI/CCIA Spread","",1)

        self.cci15 = Indicator(self.root, "CCI      ", "",1)        
        self.cci15_av = Indicator(self.root, "CCI Avg ", "",1)
        self.atr15 = Indicator(self.root, "ATR ", "",1)
        self.bband15_width = Indicator(self.root, "BBAND Width", "",1)
        self.bband15_b = Indicator(self.root, "BBAND %B ", "",1)
        self.label1 = Indicator(self.root, " ","",1)
        self.cci15p = Indicator(self.root, "CCI ", "",1)
        self.cci15p_av = Indicator(self.root, "CCIP Avg", "",1)
        
        self.label2 = Indicator(self.root, "1 Hour ","",1)
        self.cci1h = Indicator(self.root, "CCI ", "",2)
        self.cci1h_av = Indicator(self.root, "CCI Avg ","",2)
        self.atr1h = Indicator(self.root, "ATR ","",2)
        self.bband1h_width = Indicator(self.root, "BBand Width ","",2)
        self.bband1h_b = Indicator(self.root, "BBand %p ","",2)

        self.label1 = Indicator(self.root, "1 Day ","",1)
        self.cci1d = Indicator(self.root, "CCI ", "",3)
        self.cci1d_av = Indicator(self.root, "CCI Avg ","",3)
        self.atr1d = Indicator(self.root, "ATR ","",3)
        self.bband1d_width = Indicator(self.root, "BBand Width ","",3)
        self.bband1d_b = Indicator(self.root, "BBand %p ","",3)
        self.status1 = Indicator(self.root, "Status1 ","",0)
        
        self.ib.disconnectedEvent += self.disconnectEvent
        self.ib.connectedEvent += self.connectEvent
        self.ib.orderStatusEvent += self.orderStatusEvent
        self.ib.newOrderEvent += self.newOrderEvent
        self.ib.execDetailsEvent += self.execDetailsEvent
        self.ib.errorEvent += self.onError
Пример #28
0
 def _add_indicator(self, settings=None):
     indicator = Indicator(self, settings)
     self.instances.append(indicator)
     indicator.start()
Пример #29
0
    FILE_PATH = 'input/{}'.format(name)
    temp = name.split('-')
    temp_str = temp[0] + temp[1]
    model_name = temp_str.lower().split('.')[0]
    BASELINE_MODEL_PATH = 'model/model-baseline-new/model-{}'.format(
        model_name)
    PSO_MODEL_PATH = 'model/model-pso-new/model-pso-{}'.format(model_name)

    data = pd.read_csv(FILE_PATH)
    ann = keras.models.load_model(BASELINE_MODEL_PATH)
    pso = keras.models.load_model(PSO_MODEL_PATH)

    # iteration
    print('starting for {}'.format(name.split('.')[0]))
    # create indicator
    indicator = Indicator(data)
    indicator_data = indicator.RSI()
    indicator_data = indicator.EMA()
    indicator_data = indicator.MACD()
    indicator_data.dropna(inplace=True)
    indicator_data['change_of_ema'] = (
        (indicator_data['Close'] - indicator_data['ema_5_day']) /
        indicator_data['ema_5_day']) * 100
    data_set = indicator_data[[
        'Close', 'rsi', 'Histogram', 'change_of_ema', 'change'
    ]]

    simulator = Simulator(simulate_day=N_DAY,
                          simulate_data=data_set,
                          baseline_model=ann,
                          pso_model=pso)
Пример #30
0
from game import Game
from hero import Hero
from indicator import Indicator

# Графика
screen_height: int = 700  # Высота экрана в пикселях
screen_width: int = 1200  # Ширина экрана в пикселях
screen = pygame.display.set_mode((screen_width, screen_height), pygame.FULLSCREEN)  # Объект экрана pygame

# Объекты
game = Game(screen)  # Объект игры
hero = Hero(game, screen)  # Объект героя

forest = Forest(hero, screen)  # Объект леса
forest.setup()

satiety_percent: float = 100 * hero.satiety / hero.satiety_max  # Сытость героя в [%]

indicator_satiety = Indicator('Сытость', screen, satiety_percent, 0, 0)  # Объект индикатора сытости

while game.status != 'finished':  # Пока игра не завершена
    game.update_logic()
    game.update_graphics()
    forest.process()
    hero.process()

    satiety_percent: float = 100 * hero.satiety / hero.satiety_max  # Сытость героя в [%]
    indicator_satiety.value = satiety_percent  # Значение индикатора сытости в [%]

    indicator_satiety.process()