@@ -2,10 +2,12 @@ const $ = require('jquery');
22var DS = require ( 'nedb' ) ;
33
44var el = {
5+ psBuilder : { } ,
56 accountSettings : { }
67} ;
78
89var data = {
10+ psBuilder : { } ,
911 accountSettings : {
1012 capital : 0 ,
1113 minRisk : 0 ,
@@ -18,9 +20,17 @@ var data = {
1820var db = { } ;
1921
2022function cacheSelectors ( ) {
23+ cachePSBuilderSelectors ( ) ;
2124 cacheAccountSettingsSelectors ( ) ;
2225}
2326
27+ function cachePSBuilderSelectors ( ) {
28+ el . psBuilder . sl = $ ( '#txt-sl' ) ;
29+ el . psBuilder . tp = $ ( '#txt-tp' ) ;
30+ el . psBuilder . lev = $ ( '#txt-lev' ) ;
31+
32+ }
33+
2434function cacheAccountSettingsSelectors ( ) {
2535 el . accountSettings . editButton = $ ( '#button-edit-account-settings' ) ;
2636 el . accountSettings . form = $ ( '#form-account-settings' ) ;
@@ -30,9 +40,66 @@ function cacheAccountSettingsSelectors() {
3040}
3141
3242function eventBindings ( ) {
43+ eventBindingsForPSBuilder ( ) ;
3344 eventBindingsForAccountSettings ( ) ;
3445}
3546
47+ function eventBindingsForPSBuilder ( ) {
48+ el . psBuilder . sl . on ( "keyup" , calc ) ;
49+ el . psBuilder . tp . on ( "keyup" , calc ) ;
50+ }
51+
52+ function calc ( ) {
53+ data . psBuilder . sl = el . psBuilder . sl . val ( ) ;
54+ data . psBuilder . tp = el . psBuilder . tp . val ( ) ;
55+
56+ var riskLevels = {
57+ l : Math . floor ( data . accountSettings . capital * ( ( data . accountSettings . minRisk - 1 ) / 100 ) ) ,
58+ m : Math . floor ( data . accountSettings . capital * ( data . accountSettings . minRisk / 100 ) ) ,
59+ h : Math . floor ( data . accountSettings . capital * ( ( ( parseFloat ( data . accountSettings . minRisk ) + parseFloat ( data . accountSettings . maxRisk ) ) / 2 ) / 100 ) ) ,
60+ xh : Math . floor ( data . accountSettings . capital * ( data . accountSettings . maxRisk / 100 ) )
61+ }
62+
63+ var suggestions = [ ] ;
64+
65+ var r = 0 ,
66+ m = 0 ,
67+ ps = 0 ,
68+ sl = data . psBuilder . sl || 1 ,
69+ tp = data . psBuilder . tp || 1 ,
70+ g = 0 ,
71+ l = 0 ,
72+ id = '' ;
73+
74+ Object . keys ( riskLevels ) . forEach ( ( key ) => {
75+ id = key ;
76+ r = riskLevels [ key ] ;
77+ m = r + 1 ;
78+ l = Math . floor ( r / ( m * ( sl / 100 ) ) ) ;
79+ ps = Math . floor ( m * l ) ;
80+ g = Math . floor ( ( l * m ) * ( tp / 100 ) ) ;
81+
82+ suggestions . push ( {
83+ id : id ,
84+ r : r ,
85+ m : m ,
86+ l : l ,
87+ g : g ,
88+ ps : ps
89+ } ) ;
90+ } ) ;
91+
92+ var prefix = '' ;
93+ suggestions . forEach ( ( sug ) => {
94+ prefix = '#' + sug . id + '-'
95+ $ ( prefix + "size" ) . html ( sug . ps ) ;
96+ $ ( prefix + "loss" ) . html ( sug . r ) ;
97+ $ ( prefix + "gain" ) . html ( sug . g ) ;
98+ $ ( prefix + "lev" ) . html ( sug . l ) ;
99+ $ ( prefix + "margin" ) . html ( sug . m ) ;
100+ } )
101+ }
102+
36103function eventBindingsForAccountSettings ( ) {
37104 el . accountSettings . editButton . click ( ( ) => { toggleAccountSettingsForm ( true ) } ) ;
38105 el . accountSettings . cancel . click ( ( ) => { toggleAccountSettingsForm ( false ) } ) ;
@@ -65,22 +132,22 @@ function updateAccountSettingsData() {
65132 if ( ! docs ) {
66133 db . accountSettings . insert ( {
67134 exchange : 'default' ,
68- capital : data . accountSettings . capital ,
69- minRisk : data . accountSettings . minRisk ,
70- maxRisk : data . accountSettings . maxRisk ,
71- makerFee : data . accountSettings . makerFee ,
72- takerFee : data . accountSettings . takerFee
135+ capital : parseFloat ( data . accountSettings . capital ) ,
136+ minRisk : parseFloat ( data . accountSettings . minRisk ) ,
137+ maxRisk : parseFloat ( data . accountSettings . maxRisk ) ,
138+ makerFee : parseFloat ( data . accountSettings . makerFee ) ,
139+ takerFee : parseFloat ( data . accountSettings . takerFee )
73140 } )
74141 } else {
75142 db . accountSettings . update ( {
76143 exchange : 'default'
77144 } , {
78145 exchange : 'default' ,
79- capital : data . accountSettings . capital ,
80- minRisk : data . accountSettings . minRisk ,
81- maxRisk : data . accountSettings . maxRisk ,
82- makerFee : data . accountSettings . makerFee ,
83- takerFee : data . accountSettings . takerFee
146+ capital : parseFloat ( data . accountSettings . capital ) ,
147+ minRisk : parseFloat ( data . accountSettings . minRisk ) ,
148+ maxRisk : parseFloat ( data . accountSettings . maxRisk ) ,
149+ makerFee : parseFloat ( data . accountSettings . makerFee ) ,
150+ takerFee : parseFloat ( data . accountSettings . takerFee )
84151 } )
85152 }
86153 } )
@@ -112,12 +179,11 @@ $(window).on('load', () => {
112179
113180 db . accountSettings . findOne ( { exchange : 'default' } , ( err , docs ) => {
114181 if ( docs ) {
115- console . log ( docs ) ;
116- data . accountSettings . capital = docs . capital ;
117- data . accountSettings . minRisk = docs . minRisk ;
118- data . accountSettings . maxRisk = docs . maxRisk ;
119- data . accountSettings . makerFee = docs . makerFee ;
120- data . accountSettings . takerFee = docs . takerFee ;
182+ data . accountSettings . capital = parseFloat ( docs . capital ) ;
183+ data . accountSettings . minRisk = parseFloat ( docs . minRisk ) ;
184+ data . accountSettings . maxRisk = parseFloat ( docs . maxRisk ) ;
185+ data . accountSettings . makerFee = parseFloat ( docs . makerFee ) ;
186+ data . accountSettings . takerFee = parseFloat ( docs . takerFee ) ;
121187 }
122188
123189 renderAccountSettingsData ( ) ;
0 commit comments