def save_trade(signal_type, signal_id, order, trade_type): order_date = datetime.utcfromtimestamp(order['transactTime'] / 1000).strftime('%Y-%m-%d') order_time = datetime.utcfromtimestamp(order['transactTime'] / 1000).strftime('%H:%M:%S') for fill in order['fills']: trade = Trade( order_date=order_date, order_time=order_time, signal_type=signal_type, signal_id=signal_id, symbol=order['symbol'], side=order['side'], price=float(fill['price']), quantity=float(fill['qty']), quantity_asset=split_symbol(order['symbol'])['base'], fee=float(fill['commission']), fee_asset=fill['commissionAsset'], order_id=order['orderId'], status=order['status'], type=trade_type, rsi_5m=get_rsi_value(order['symbol'], '5M'), rsi_1h=get_rsi_value(order['symbol'], '1H'), price_change_percent_difference=get_price_change_percent_difference( order['symbol']), order_timestamp=order['transactTime'], date_create=int(time.time())) trade.save()
def save_trades(element_list, stock_code, insider_code): for element in element_list: trade = Trade() trade.stock = stock_code trade.insider = insider_code trade.relation = element[2] trade_last_date = datetime.date( datetime.strptime(element[3], '%m/%d/%Y')) trade.last_date = trade_last_date trade.transaction_type = element[4] trade.owner_type = element[5] shares_traded = element[6].replace(',', '') if shares_traded == '': shares_traded = 0 trade.shares_traded = shares_traded last_price = element[7] if last_price == '': last_price = 0.0 trade.last_price = last_price shares_held = element[8].replace(',', '') if shares_held == '': shares_held = 0 trade.shares_held = shares_held try: trade.save() logger.info( f'Trade object of {stock_code} on last date {element[2]} saved in db' ) except Exception as exception: logger.error(f'{stock_code} is allready exist: {exception}') db.rollback()
def trade_add(request): goods_top = Trade.objects.values('goods__id','goods__title').annotate(goods_count=Count('goods')).order_by('-goods_count')[:10] price1 = 0 results = [] if request.method == 'POST': # If the form has been submitted... form = TradeForm(request.POST) # A form bound to the POST data if form.is_valid(): # All validation rules pass # Process the data in form.cleaned_data # ... #return HttpResponseRedirect('/thanks/') # Redirect after POST #results = GClass.objects.filter(title__icontains=form.cleaned_data['goodstitle']) isOldTrade = False if int(form.cleaned_data["trade_pk"]) > 0: isOldTrade = True shop1 = None if int(form.cleaned_data["shop_pk"]) > 0: shop1 = Shop.objects.get(pk=form.cleaned_data["shop_pk"]) else: shop1 = Shop(title=form.cleaned_data["shop"], type='mag') shop1.save() #gclass1 = None #if int(form.cleaned_data["gclass_pk"]) > 0: # gclass1 = GClass.objects.get(pk=form.cleaned_data["gclass_pk"]) #else: # gclass1 = GClass(title=form.cleaned_data["gclass"], section=GSection.objects.get(pk=1)) #TODO GSection # gclass1.save() goods1 = None if int(form.cleaned_data["gtitle_pk"]) > 0: goods1 = Goods.objects.get(pk=form.cleaned_data["gtitle_pk"]) goods1.title = form.cleaned_data["gtitle"] goods1.ed = form.cleaned_data["ed"] #goods1.gclass = gclass1 goods1.save() else: goods1 = Goods(title=form.cleaned_data["gtitle"], ed=form.cleaned_data["ed"]) goods1.save() price1 = "%.2f" % ( float(form.cleaned_data['cost']) / float(form.cleaned_data['amount']) ) if isOldTrade: trade1 = Trade.objects.get(pk=form.cleaned_data["trade_pk"]) else: trade1 = Trade() trade1.user = request.user trade1.shop = shop1 trade1.goods = goods1 trade1.time = form.cleaned_data["time"] trade1.amount = form.cleaned_data["amount"] trade1.price = price1 trade1.cost = form.cleaned_data["cost"] trade1.currency = form.cleaned_data["currency"] trade1.spytrade = form.cleaned_data["spytrade"] trade1.save() return HttpResponseRedirect("/") else: data = {'time': datetime.datetime.now, 'trade_pk': '0', 'shop_pk': '0', 'gclass_pk': '0', 'gtitle_pk': '0' } form = TradeForm(initial=data) # An unbound form return render_to_response('trade_add.html', {'price': price1, 'results': results, 'form': form, 'goods_top': goods_top}, context_instance=RequestContext(request))