Skip to content

Commit 8442986

Browse files
committed
Added feature for Oanda to use MARGIN based percentages as well as balance based
percentages. using a unit percentage of %% or %m will calculate the percentage on the margin available. Bug fixes in multiple areas... Typos. Version Updated. 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 modified: Base/OANDA-PlaceOrder modified: Extras/AnalyzeAsset
1 parent e702b57 commit 8442986

8 files changed

Lines changed: 43 additions & 12 deletions

File tree

Base/JackrabbitLocker

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import json
2828

2929
import JRRsupport
3030

31-
Version="0.0.0.1.1075"
31+
Version="0.0.0.1.1080"
3232
BaseDirectory='/home/JackrabbitRelay2/Base'
3333
ConfigDirectory='/home/JackrabbitRelay2/Config'
3434
LogDirectory="/home/JackrabbitRelay2/Logs"

Base/JackrabbitOliverTwist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ import subprocess
6767
import JRRsupport
6868
import JackrabbitRelay as JRR
6969

70-
Version="0.0.0.1.1075"
70+
Version="0.0.0.1.1080"
7171
BaseDirectory='/home/JackrabbitRelay2/Base'
7272
DataDirectory='/home/JackrabbitRelay2/Data'
7373
ConfigDirectory='/home/JackrabbitRelay2/Config'

Base/JackrabbitRelay

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import json
1616

1717
import JRRsupport
1818

19-
Version="0.0.0.1.1075"
19+
Version="0.0.0.1.1080"
2020
BaseDirectory='/home/JackrabbitRelay2/Base'
2121
ConfigDirectory='/home/JackrabbitRelay2/Config'
2222
LogDirectory="/home/JackrabbitRelay2/Logs"

Base/Library/JRRmimic.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class mimic:
4848
# released at exit.
4949

5050
def __init__(self,Exchange,Config,Active,DataDirectory=None):
51-
self.Version="0.0.0.1.1075"
51+
self.Version="0.0.0.1.1080"
5252

5353
self.StableCoinUSD=['USDT','USDC','BUSD','UST','DAI','FRAX','TUSD', \
5454
'USDP','LUSD','USDN','HUSD','FEI','TRIBE','RSR','OUSD','XSGD', \

Base/Library/JackrabbitProxy.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
class JackrabbitProxy:
5151
def __init__(self,framework=None,payload=None,exchange=None,account=None,asset=None,Usage=None):
5252
# All the default locations
53-
self.Version="0.0.0.1.1075"
53+
self.Version="0.0.0.1.1080"
5454
self.BaseDirectory='/home/JackrabbitRelay2/Base'
5555
self.ConfigDirectory='/home/JackrabbitRelay2/Config'
5656
self.DataDirectory="/home/JackrabbitRelay2/Data"

Base/Library/JackrabbitRelay.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ def Success(self,f,s):
110110
class JackrabbitRelay:
111111
def __init__(self,framework=None,payload=None,exchange=None,account=None,asset=None,secondary=None,NoIdentityVerification=False,Usage=None,RaiseError=False):
112112
# All the default locations
113-
self.Version="0.0.0.1.1075"
113+
self.Version="0.0.0.1.1080"
114114
self.NOhtml='<html><title>NO!</title><body style="background-color:#ffff00;display:flex;weight:100vw;height:100vh;align-items:center;justify-content:center"><h1 style="color:#ff0000;font-weight:1000;font-size:10rem">NO!</h1></body></html>'
115115
self.Directories={}
116116
self.Directories['Base']='/home/JackrabbitRelay2/Base'

Base/OANDA-PlaceOrder

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,19 @@ def GetPCTvalue(pct,close,bal,mr):
3535
amount=round((volume/close)/mr,8)
3636
return amount,volume
3737

38-
def GetPCTamount(relay,close):
38+
def GetPCTamount(relay,close,margin=False):
3939
fn=relay.Directories['Data']+'/'+relay.Exchange+'.'+relay.Account+'.PCTtable'
4040
PCTtable=JRRsupport.TimedList("PCTtable",fn,Log=relay.JRLog)
41-
if relay.Order['Action'].lower()=='close' or relay.Order['Action'].lower()=='flip':
41+
if relay.Order['Action'].lower()=='close':
4242
expire=0
4343
else:
4444
expire=(3650*86400)
4545

46-
bal=relay.GetBalance()
46+
# If margin base sizing not set, use balance
47+
if not margin:
48+
bal=relay.GetBalance()
49+
else: # get percentage based on margin available
50+
bal=float(relay.Broker.Summary['account']['marginAvailable'])
4751
mr=float(relay.Markets[relay.Asset]['marginRate'])
4852

4953
# OverridePCTtable should probably be the default state for OliverTwist, since each trade is
@@ -274,9 +278,12 @@ def main():
274278
relay.JRLog.Write(f'|- Minimum Amount: {minimum:.8f}')
275279
relay.JRLog.Write(f'|- Minimum Cost: {mincost:.8f}')
276280
else:
277-
if '%' in relay.Order['Units']:
281+
if '%' in relay.Order['Units'] or '%b' in relay.Order['Units']:
278282
price=(ticker['Ask']+ticker['Bid'])/2
279283
amount=int(GetPCTamount(relay,price))
284+
elif '%%' in relay.Order['Units'] or '%m' in relay.Order['Units']:
285+
price=(ticker['Ask']+ticker['Bid'])/2
286+
amount=int(GetPCTamount(relay,price,margin=True))
280287
else:
281288
amount=int(relay.Order['Units'].split('.')[0])
282289

Extras/AnalyzeAsset

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ else:
4040

4141
# Figure out worst case price based upon 5000 candles on the monthly time frame.
4242

43+
mh=float('-inf')
44+
ml=float('inf')
4345
wcp=0
44-
mh=0
45-
ml=9999999
4646
mms=0
4747
maxMonth=[]
4848
spList=[]
@@ -181,4 +181,28 @@ lsp=len(spList)
181181
print(f"Total {relay.Timeframes[tf]}s analyzed: {lsp}")
182182
print(f"{relay.Timeframes[tf]}s above average: {maa} ({(maa/lsp)*100:.2f}%)")
183183

184+
#
185+
# Find average spread of candles
186+
#
187+
188+
tfl=len(relay.Timeframes)
189+
avg=[]
190+
for tf in range(0,tfl):
191+
mh=float('-inf')
192+
ml=float('inf')
193+
spList=[]
194+
ohlcv=relay.GetOHLCV(symbol=asset,timeframe=relay.Timeframes[tf],limit=5000)
195+
196+
for slice in ohlcv:
197+
cs=0
198+
for i in range(1,5):
199+
mh=max(slice[i],mh)
200+
ml=min(slice[i],ml)
201+
spList.append(mh-ml)
202+
203+
avgsp=sum(spList)/len(spList)
204+
avg.append(avgsp)
205+
# print(f"{relay.Timeframes[tf]:3} {avgsp:.4f}")
184206

207+
avgsp=sum(avg)/len(avg)
208+
print(f"\nAverage pip spread/all TF: {avgsp:.4f}")

0 commit comments

Comments
 (0)