コード例 #1
0
ファイル: subs.py プロジェクト: okulov/trade_bot
async def main(broker_account_id=None):
    balance = 10000
    amount = 20

    journal = Journal(mode='debug')
    traider = Traider(balance, journal, amount)
    analysis = Analysis(journal)
    stock = Stock(traider, journal)
    client = ti.AsyncClient(TOKEN, use_sandbox=True)
    data = await get_data(client, figi)
    print('Amount of data:', len(data))
    df = pd.DataFrame(data)
    df.set_index('date', inplace=True)
    traider.trade(df,
                  strategy=StrategyMACD_Day(loss_level=loss,
                                            profit_level=profit,
                                            macd_level=macd_level,
                                            target_stability=target_stability))
    stock.interval_trade(df[-1:])
    analysis.score()
    no_update = True
    async with ti.Streaming(TOKEN,
                            receive_timeout=20,
                            reconnect_timeout=10,
                            heartbeat=20) as streaming:
        await streaming.candle.subscribe(figi, ti.CandleResolution.min5)
        async for event in streaming:

            if event.event == 'candle':
                pass
                # print(event.payload.figi, event.payload.c, event.payload.interval, event.payload.h, event.payload.time)

            if not (event.payload.time.strftime('%e-%m-%Y %H:%M')
                    == data[-1]['date']) and no_update:
                no_update = False
                data = await get_data(client, figi)
                df = pd.DataFrame(data)
                df.set_index('date', inplace=True)
                traider.trade(df,
                              strategy=StrategyMACD_Day(
                                  loss_level=loss,
                                  profit_level=profit,
                                  macd_level=macd_level,
                                  target_stability=target_stability))
                stock.interval_trade(df[-1:])
                analysis.score()
            elif event.payload.time.strftime(
                    '%e-%m-%Y %H:%M') == data[-1]['date']:
                no_update = True
コード例 #2
0
        data_ = df[:i + 1]
        # print(data_[-1:])
        # print(talib.MACD(data_['Close']))
        traider.trade(data_,
                      strategy=StrategyMACD_Day(
                          loss_level=loss,
                          profit_level=profit,
                          macd_level=macd_level,
                          target_stability=target_stability))
        # traider.trade(data_, strategy=StartegyBase())
        stock.interval_trade(data_[i:i + 1])

    # print(journal.get_orders())
    # print(journal.get_limits())
    # journal.save_to_csv()
    analysis.score('data/results.csv')

    journal = None
    traider = None
    stock = None
    analysis = None


def search_limits():
    for profit in np.linspace(0.01, 0.05, num=5):
        res = []
        for loss in np.linspace(0.001, 0.01, num=10):
            for macd_level in np.linspace(0.05, 0.5, num=10):
                for target_stability in np.linspace(0, 6, num=6):
                    for i in range(data_limit_MACD, len(df)):
                        data_ = df[:i + 1]