Beispiel #1
0
 def create_order(self, seller, text): # action
     id = random.randint(0,1000000)
     buyer = self._transport._myself.get_pubkey()
     new_order = order(id, buyer, seller, 'new', text, self._escrows)
     self._orders[id] = new_order
     # announce the new reputation
     self._transport.send(new_order, seller)
Beispiel #2
0
 def create_order(self, seller, text):  # action
     id = random.randint(0, 1000000)
     buyer = self._transport._myself.get_pubkey()
     new_order = order(id, buyer, seller, 'new', text, self._escrows)
     self._orders[id] = new_order
     # Announce the new order
     self._transport.send(new_order, seller)
def trading(universe):
    # main trading algorithm of the day given data up to the that day
    
    today=universe.now
    record={}
    for sym in universe.symbols:
        # data of the day: close (float), indicator (DataFrame)
        data=universe.data[sym][:today][today:]
        indicator=universe.indicator[sym][:today][today:]
        if len(data)==0: continue
        close=data.Close[0]
        trade_time=today.replace(hour=15,minute=59) # buy at 3:59pm at close price 
        trade_type='NONE'
        amt=0
        
        position=universe.account.positions[sym].amount
        # buy if SMA200 < close < SMA10 and RSI2 < 10
        if  close < indicator.SMA10[0] and \
                close > indicator.SMA200[0] and \
                indicator.RSI2[0] < 10 and \
                universe.account.cash/close > 10:
            trade_type='Buy'
            amt=int(universe.account.portfolio_value/len(universe.symbols)/close-position)

        # sell if lose 30% or RSI2 >99
        avg_price=universe.account.positions[sym].avg_price
        if (indicator.RSI2[0]>99 or (avg_price-close)/avg_price > 0.3 )\
                                and universe.account.positions[sym].amount>0:
            trade_type='Sell'        
            # record data   
            returns=(close-avg_price)*position
            winning=returns>0
            #record={'Date':[today],
            #        'Symbol':[sym],
            #        'Buy_price':[avg_price],
            #        'Sell_price':[close],
            #        'Amount':[position],
            #        'Returns':[returns],
            #        'Winning':[winning]}
            amt=position
        
        order(trade_type=trade_type,symbol=sym,amount=amt,
                  price=close,time=trade_time)
        record={'Date':[today],
                'Portfolio_value':[universe.account.portfolio_value]}
        universe.account.refresh_portfolio(today,{sym:close})
    return record
Beispiel #4
0
 def create_order(self, seller, text): 
     
     id = random.randint(0,1000000)
     buyer = self._transport._myself.get_pubkey()
     new_order = order(id, buyer, seller, 'new', text, self._escrows)        
     
     self._transport.send(new_order, seller)
     
     self._orders.insert(new_order)
Beispiel #5
0
 def create_order(self, seller, text): 
     
     id = random.randint(0,1000000)
     buyer = self._transport._myself.get_pubkey()
     new_order = order(id, buyer, seller, 'new', text, self._escrows)        
     
     self._transport.send(new_order, seller)
     
     self._orders.insert(new_order)
Beispiel #6
0
    def create_order(self, seller, text):
        self._log.info('CREATING ORDER')
        id = random.randint(0, 1000000)
        buyer = self._transport._myself.get_pubkey()
        new_order = order(id, buyer, seller, 'new', text, self._escrows)

        # Add a timestamp
        new_order['created'] = time.time()

        self._transport.send(new_order, seller)

        self._db.orders.insert(new_order)
Beispiel #7
0
    def create_order(self, seller, text):
        self._log.info('CREATING ORDER')
        order_id = random.randint(0, 1000000)
        buyer = self._transport._myself.get_pubkey()
        new_order = order(order_id, buyer, seller, 'new', text, self._escrows)

        # Add a timestamp
        new_order['created'] = time.time()

        self._transport.send(new_order, seller)

        self._db.insertEntry("orders", new_order)
Beispiel #8
0
    def create_order(self, seller, text):
        self._log.info("CREATING ORDER")
        order_id = random.randint(0, 1000000)
        buyer = self._transport._myself.get_pubkey()
        new_order = order(order_id, buyer, seller, "new", text, self._escrows)

        # Add a timestamp
        new_order["created"] = time.time()

        self._transport.send(new_order, seller)

        self._db.insertEntry("orders", new_order)
Beispiel #9
0
 def create_order(self, seller, text): # action
     
     id = random.randint(0,1000000)
     buyer = self._transport._myself.get_pubkey()
     new_order = order(id, buyer, seller, 'new', text, self._escrows)
     
     # Store the order
     self._orders[id] = new_order
     print "Orders: ", self._orders
     
     # Announce the new order
     self._transport.send(new_order, seller)
Beispiel #10
0
            else:
                self._transport.log("Order not for us")
        if msg.get('id'):
            if msg['id'] in self._orders:
                self._orders[msg['id']]['state'] = msg['state']
            else:
                self._orders[msg['id']] = msg


# Test Code if run directly
if __name__ == '__main__':
    seller = ECC(curve='secp256k1')

    class FakeTransport():
        _myself = ECC(curve='secp256k1')

        def add_callback(self, section, cb):
            pass

        def send(self, msg, to=None):
            print 'sending', msg

        def log(self, msg):
            print msg

    transport = FakeTransport()
    rep = Orders(transport)
    rep.on_order(
        order(None, transport._myself.get_pubkey(), seller.get_pubkey(), 'new',
              'One!', ["dsasd", "deadbeef"]))
Beispiel #11
0
                self._transport.log("Order not for us")
        elif state == 'received':
            if myself == seller:
                pass
                # ok
            elif myself == buyer:
                self.receive_order(msg)
            else:
                self._transport.log("Order not for us")
        if msg.get('id'):
            if msg['id'] in self._orders:
                self._orders[msg['id']]['state'] = msg['state']
            else:
                self._orders[msg['id']] = msg

if __name__ == '__main__':
    seller = ECC(curve='secp256k1')
    class FakeTransport():
        _myself = ECC(curve='secp256k1')
        def add_callback(self, section, cb):
            pass
        def send(self, msg, to=None):
            print 'sending', msg
        def log(self, msg):
            print msg
    transport = FakeTransport()
    rep = Orders(transport)
    rep.on_order(order(None, transport._myself.get_pubkey(), seller.get_pubkey(), 'new', 'One!', ["dsasd", "deadbeef"]))