From f9eccc18dfc2dbd11b5de68546edd565bdbbca18 Mon Sep 17 00:00:00 2001 From: Rose Heart Date: Tue, 2 Apr 2024 14:43:45 +0000 Subject: [PATCH] Mimic wallet bug fixes. Version update. Changes to be committed: modified: Base/JackrabbitLocker modified: Base/JackrabbitOliverTwist modified: Base/JackrabbitRelay modified: Base/Library/JRRmimic.py modified: Base/Library/JackrabbitProxy.py modified: Base/Library/JackrabbitRelay.py --- Base/JackrabbitLocker | 2 +- Base/JackrabbitOliverTwist | 2 +- Base/JackrabbitRelay | 2 +- Base/Library/JRRmimic.py | 42 ++++++++++++++++++++------------- Base/Library/JackrabbitProxy.py | 2 +- Base/Library/JackrabbitRelay.py | 2 +- Extras/CodeProofs/x1 | 36 ---------------------------- 7 files changed, 30 insertions(+), 58 deletions(-) delete mode 100755 Extras/CodeProofs/x1 diff --git a/Base/JackrabbitLocker b/Base/JackrabbitLocker index 6378e32..cf3bd4f 100755 --- a/Base/JackrabbitLocker +++ b/Base/JackrabbitLocker @@ -28,7 +28,7 @@ import json import JRRsupport -Version="0.0.0.1.787" +Version="0.0.0.1.790" BaseDirectory='/home/JackrabbitRelay2/Base' ConfigDirectory='/home/JackrabbitRelay2/Config' LogDirectory="/home/JackrabbitRelay2/Logs" diff --git a/Base/JackrabbitOliverTwist b/Base/JackrabbitOliverTwist index aebf66b..41d1c5b 100755 --- a/Base/JackrabbitOliverTwist +++ b/Base/JackrabbitOliverTwist @@ -40,7 +40,7 @@ import subprocess import JRRsupport import JackrabbitRelay as JRR -Version="0.0.0.1.787" +Version="0.0.0.1.790" BaseDirectory='/home/JackrabbitRelay2/Base' DataDirectory='/home/JackrabbitRelay2/Data' ConfigDirectory='/home/JackrabbitRelay2/Config' diff --git a/Base/JackrabbitRelay b/Base/JackrabbitRelay index 9d69e86..176d215 100755 --- a/Base/JackrabbitRelay +++ b/Base/JackrabbitRelay @@ -16,7 +16,7 @@ import json import JRRsupport -Version="0.0.0.1.787" +Version="0.0.0.1.790" BaseDirectory='/home/JackrabbitRelay2/Base' ConfigDirectory='/home/JackrabbitRelay2/Config' LogDirectory="/home/JackrabbitRelay2/Logs" diff --git a/Base/Library/JRRmimic.py b/Base/Library/JRRmimic.py index 4651b2a..c08516c 100644 --- a/Base/Library/JRRmimic.py +++ b/Base/Library/JRRmimic.py @@ -45,7 +45,7 @@ class mimic: # placed in init and released at exit. def __init__(self,Exchange,Config,Active,DataDirectory=None): - self.Version="0.0.0.1.787" + self.Version="0.0.0.1.790" self.StableCoinUSD=['USDT','USDC','BUSD','UST','DAI','FRAX','TUSD', \ 'USDP','LUSD','USDN','HUSD','FEI','TRIBE','RSR','OUSD','XSGD', \ @@ -322,6 +322,17 @@ def UpdateWallet(self,action,asset,amount,price,fee_rate=0): else: actualPrice=max(ticker['Bid'],ticker['Ask'])+ticker['Spread'] # Long + minimum,mincost=self.Broker.GetMinimum(symbol=asset) + # Make sure order is above minimum requirements + if abs(actualAmount)0 and self.Wallet['Wallet'][base]<0) \ + or (actualAmount<0 and self.Wallet['Wallet'][base]>0)): + action='sell' + if action=='buy': # Calculate the total cost for buying the asset including fees total_cost=abs(actualAmount) * actualPrice * (1 + fee_rate) @@ -352,7 +363,7 @@ def UpdateWallet(self,action,asset,amount,price,fee_rate=0): order['Amount']=round(actualAmount,8) order['Price']=round(actualPrice,8) order['Fee']=round(fee,8) - # Remove from allet + # Remove from Wallet if self.Wallet['Wallet'][base]==0.0: self.Wallet['Wallet'].pop(base,None) JRRsupport.AppendFile(self.history,json.dumps(order)+'\n') @@ -362,26 +373,19 @@ def UpdateWallet(self,action,asset,amount,price,fee_rate=0): self.Wallet['Enabled']='N' return 'Account Liquidated!' elif action=='sell': + if base in self.Wallet['Wallet'] and self.Wallet['Wallet'][base]==0: + return 'Nothing to sell' # Check if the base currency is present in the base currency wallet and the amount to sell is available - if base in self.Wallet['Wallet'] and abs(self.Wallet['Wallet'][base])>=abs(actualAmount): + if quote in self.Wallet['Wallet'] and self.Wallet['Wallet'][quote]>=0: # Calculate the total proceeds from selling the asset after deducting fees total_proceeds=abs(actualAmount) * actualPrice * (1 - fee_rate) # Add the total proceeds minus fees to the quote currency balance - if quote in self.Wallet['Wallet']: - self.Wallet['Wallet'][quote]+=total_proceeds - else: - self.Wallet['Wallet'][quote]=total_proceeds # Initialize quote currency balance if not present - # Subtract the appropriate amount of the base currency from the base currency wallet - if actualAmount<0: # handle shorting - if self.Wallet['Wallet'][base]<0: - self.Wallet['Wallet'][base]-=actualAmount - else: - self.Wallet['Wallet'][base]+=actualAmount + # quote MUST be >=0. + self.Wallet['Wallet'][quote]+=total_proceeds + if base in self.Wallet['Wallet']: + self.Wallet['Wallet'][base]+=actualAmount else: - if self.Wallet['Wallet'][base]<0: - self.Wallet['Wallet'][base]+=actualAmount - else: - self.Wallet['Wallet'][base]-=actualAmount + self.Wallet['Wallet'][base]=actualAmount # Initialize the base currency wallet if not present # Update fee balance fee = round(abs(actualAmount) * actualPrice * fee_rate,8) if 'Fees' in self.Wallet['Wallet']: @@ -479,6 +483,7 @@ def PlaceOrder(self,**kwargs): # Handle long/short flipping result=None + """ if amount>0 and self.Wallet['Wallet'][base]>=0 \ or amount<0 and self.Wallet['Wallet'][base]<=0: result=self.UpdateWallet(action,pair,amount,price,Fee) @@ -488,6 +493,9 @@ def PlaceOrder(self,**kwargs): elif amount>0 and self.Wallet['Wallet'][base]<0: result=self.LiquidateWallet(pair,Fee) result=self.UpdateWallet('buy',pair,amount,price,Fee) + """ + + result=self.UpdateWallet(action,pair,amount,price,Fee) self.PutWallet() if 'ID' in result and result['ID']!=None: diff --git a/Base/Library/JackrabbitProxy.py b/Base/Library/JackrabbitProxy.py index eeae659..68e7f45 100755 --- a/Base/Library/JackrabbitProxy.py +++ b/Base/Library/JackrabbitProxy.py @@ -50,7 +50,7 @@ class JackrabbitProxy: def __init__(self,framework=None,payload=None,exchange=None,account=None,asset=None,Usage=None): # All the default locations - self.Version="0.0.0.1.787" + self.Version="0.0.0.1.790" self.BaseDirectory='/home/JackrabbitRelay2/Base' self.ConfigDirectory='/home/JackrabbitRelay2/Config' self.DataDirectory="/home/JackrabbitRelay2/Data" diff --git a/Base/Library/JackrabbitRelay.py b/Base/Library/JackrabbitRelay.py index 400f86c..b8516a2 100755 --- a/Base/Library/JackrabbitRelay.py +++ b/Base/Library/JackrabbitRelay.py @@ -106,7 +106,7 @@ def Success(self,f,s): class JackrabbitRelay: def __init__(self,framework=None,payload=None,exchange=None,account=None,asset=None,secondary=None,NoIdentityVerification=False,Usage=None): # All the default locations - self.Version="0.0.0.1.787" + self.Version="0.0.0.1.790" self.NOhtml='NO!

NO!

' self.BaseDirectory='/home/JackrabbitRelay2/Base' self.ConfigDirectory='/home/JackrabbitRelay2/Config' diff --git a/Extras/CodeProofs/x1 b/Extras/CodeProofs/x1 deleted file mode 100755 index 227430a..0000000 --- a/Extras/CodeProofs/x1 +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -# -# Jackrabbit -# 2021 Copyright © Robert APM Darin -# All rights reserved unconditionally. - -import sys -sys.path.append('/home/GitHub/JackrabbitRelay/Base/Library') -import os -import json - -import JackrabbitRelay as JRR - -relay=JRR.JackrabbitRelay() -if relay.GetArgsLen() > 3: - exchangeName=relay.GetExchange() - account=relay.GetAccount() - pair=relay.GetAsset() - oid=relay.GetArgs(4) -else: - print("An exchange, (sub)account, an asset, and an order ID must be provided.") - sys.exit(1) - -markets=relay.Markets - -if relay.Framework=='oanda': - oo=relay.GetOrderDetails(OrderID=oid) - if oo!=None: - for o in oo: - print(f'{o}\n') - else: - print("Order is still pending or is incomplete") -else: - oo=relay.GetOrderDetails(id=oid,symbol=pair) - print(json.dumps(oo,indent=2))