Advertisement
Guest User

Untitled

a guest
Jan 9th, 2019
315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.49 KB | None | 0 0
  1. <?php
  2. /**
  3. *
  4. * @ This file is created by http://DeZender.Net
  5. * @ deZender (PHP7 Decoder for ionCube Encoder)
  6. *
  7. * @ Version : 4.0.8.2
  8. * @ Author : DeZender
  9. * @ Release on : 02.01.2019
  10. * @ Official site : http://DeZender.Net
  11. *
  12. */
  13.  
  14. namespace Src;
  15.  
  16. class Trader
  17. {
  18. private $id;
  19. private $columns;
  20. private $selected_platform_id;
  21. private $column_titles;
  22. private $column_help;
  23. private $tradepair;
  24. private $pairinstance;
  25. private $platform;
  26. private $completedOrderIds = [];
  27. private $openOrders = [];
  28. private $feePercentage;
  29. private $condition_is_met = false;
  30. private $runTimeStampSql;
  31. public $platforminstance;
  32. protected $_data;
  33. private $_changed = false;
  34. private $is_backtesting;
  35.  
  36. public function __construct($id = 0)
  37. {
  38. $this->selected_platform_id = -1;
  39. $this->columns = ['id' => 'i', 'trader_allowed_trading_value_start' => 'd', 'setting_sell_offset' => 'd', 'setting_buy_offset' => 'd', 'label' => 's', 'setting_offset_type' => 's', 'offset_reference_point' => 'd', 'trader_cur_balance_pair_base' => 'd', 'trader_cur_balance_pair_quote' => 'd', 'profit_loss_trader_total' => 'd', 'trader_crypto_pair' => 'i', 'fee_percentage' => 'd', 'platform_id' => 'i', 'trader_start_with' => 's', 'max_trade_base_per_order' => 'd', 'spread_per_order' => 'd', 'spread_orders' => 'i', 'run_interval_seconds' => 'i', 'next_algo_run' => 's', 'created_date' => 's', 'algorithm' => 's', 'nextprofitupdate' => 's', 'rate_quote_btc_onstart' => 'd', 'rate_btc_usd_onstart' => 'd', 'rate_base_quote_onstart' => 'd', 'rate_quote_btc_onend' => 'd', 'rate_btc_usd_onend' => 'd', 'rate_base_quote_onend' => 'd', 'status' => 's', 'previousstatus' => 's', 'min_order_amount' => 'd', 'trader_order' => 'i', 'stoploss_notice' => 's', 'last_started_date' => 's', 'last_binance_tradeid_processed' => 's', 'fix_order_amounts' => 'i', 'last_order_completed_date' => 's', 'last_order_placed_date' => 's', 'last_completed_buy' => 's', 'last_completed_sell' => 's', 'last_midpoint_update' => 's', 'last_paused_date' => 's', 'last_low_date' => 's', 'last_high_date' => 's', 'last_completed_buy_rate' => 'd', 'last_completed_sell_rate' => 'd', 'last_completed_order_rate' => 'd', 'last_midpoint_price' => 'd', 'last_high_price' => 'd', 'last_low_price' => 'd', 'ispaused' => 'i'];
  40. $this->column_titles = ['trader_allowed_trading_value_start' => 'How much <span class="pair_start"></span> can trader initially use?', 'setting_sell_offset' => 'Sell offset', 'setting_buy_offset' => 'Buy offset', 'label' => 'Trader label', 'setting_offset_type' => 'Offset type', 'offset_reference_point' => 'Trading midpoint (<span class="pair_quote"></span> price per <span class="pair_base"></span>)', 'trader_cur_balance_pair_base' => 'Current balance <span class="pair_base"></span>', 'trader_cur_balance_pair_quote' => 'Current balance <span class="pair_quote"></span>', 'profit_loss_trader_total' => 'Profit / loss by trader', 'trader_crypto_pair' => 'Trading pair', 'fee_percentage' => 'Fee percentage % (for simulation)', 'platform_id' => 'Exchange', 'trader_start_with' => 'Start trading with', 'max_trade_base_per_order' => 'How much <span class="pair_base"></span> can be sold/bought per order?', 'spread_per_order' => 'Spread per order', 'spread_orders' => 'Do you want to spread the order placement?', 'rate_base_quote_onstart' => 'Cost of 1 <span class="pair_base"></span> on trader creation', 'run_interval_seconds' => 'Run the bot every ', 'next_algo_run' => 'The bot next run will be on', 'created_date' => 'Bot created date', 'algorithm' => 'Choose the trading algorithm', 'fix_order_amounts' => 'Fix order amounts', 'min_order_amount' => 'Minimum order amount'];
  41. $this->column_help = ['label' => 'The name of your trader for your own reference', 'trader_allowed_trading_value_start' => 'How much of your startcurrency can this trader initially use to trade? <strong>Please note:</strong> you must have the amount available on the exchange balance in order for the trader to function properly.', 'setting_sell_offset' => 'Defines the offset from the initial midpoint at which the trader must <strong>sell</strong> (initially). For example, to sell when the price increases 1% choose as offset type \'PERCENTAGE\' and as sell offset 1.', 'setting_buy_offset' => 'Defines the offset from the initial midpoint at which the trader must <strong>buy</strong> (initially). For example, to buy when the price drops 0.5% choose as offset type \'PERCENTAGE\' and as buy offset 0.5. ', 'setting_offset_type' => 'Use PERCENTAGE if you want to buy or sell when the price is [X]% above or below the initital midpoint. Use VALUE for a fixed buy/sell offset.', 'trader_crypto_pair' => 'Choose the cryptocurrency pair you want this automated trader to trade with. ', 'fee_percentage' => 'For more realistic simulation and backtesting it is recommended to add a fee %. This is only used in simulation and backtesting. Example (average) percentage is 0.15.', 'platform_id' => 'On which exchange do you want to trade? You can add exchanges by navigating to the \'Exchanges\' menu item.', 'trader_start_with' => 'Choose the currency you want to start trading with. For example if you have selected the pair BTC/USD and you currently have a balance of 1 BTC and no USD on the echange, you want to start trading with BTC.', 'spread_per_order' => 'The spread per order is a percentage which defines how far the orders will be placed spread out from each other. For example, if you buy with 1% spread, every buy order will be placed 1% below the previous buy order. ', 'spread_orders' => 'By enabling spread you can split the amount into smaller fractions and create mutliple, smaller orders on various pricepoints. This is often a good practice, especially with the Uptrend / Downtrend algorithm.', 'run_interval_seconds' => 'How often do you want to run this bot? For trading on rapid changing markets, a higher interval like 30 seconds or 60 seconds might work best. But for traders that trade in the longer term, a larger interval could be better and will also have less load on your server.', 'algorithm' => 'Choose the algorithm to trade with. You can choose from our core algorithms, or you can write your own algorithm if you are familiar with PHP coding. ', 'max_trade_base_per_order' => 'It is a good practice to spread your orders into smaller amounts. This will result in less partially filled orders (smaller amounts are filled quicker) and it will spread your orders into multiple orders on various price points, which will result in more trades being made. A good starting point is to set the amount here to something that results in something like 5 - 10 orders on the \'initial order book\' below. ', 'fix_order_amounts' => 'If you set this setting to \'Yes\', then the trader will stack the profits in your balance and not use the profits for further trading. The default behaviour (\'No\') is that a buy order that results in a profit will result in a larger sell order.', 'min_order_amount' => 'If you are having troubles with small orders being created that fail to send on the Kraken or Poloniex exchange, you can fill in a minimum amount here. For Binance and Bittrex exchanges we automatically fetch the minimum amount but you can overwrite it with a custom value if you want. '];
  42. $this->status = Enums\TraderStatus::CONCEPT;
  43. if (\obf_DSMfDAwPiweHgItIiIBR0dOQk9ARE($id) && (0 < $id)) {
  44. $this->populateData($id);
  45. }
  46. }
  47.  
  48. public function getId()
  49. {
  50. return (int) $this->id;
  51. }
  52.  
  53. public function getColumnTitle($column)
  54. {
  55. return isset($this->column_titles[$obf_DRoNDj8CCwcjNRQyJScYMSkjOBQBMTI]) ? $this->column_titles[$obf_DRoNDj8CCwcjNRQyJScYMSkjOBQBMTI] : NULL;
  56. }
  57.  
  58. public function getColumnDataType($column)
  59. {
  60. return isset($this->columns[$obf_DRoNDj8CCwcjNRQyJScYMSkjOBQBMTI]) ? $this->columns[$obf_DRoNDj8CCwcjNRQyJScYMSkjOBQBMTI] : NULL;
  61. }
  62.  
  63. public function addData($data)
  64. {
  65. foreach ($obf_DTYGhspXBM7DRU3OyoNBD8eJAUjFBE as $obf_DSwyNiEuNAoxBiYcJhspChc9HwkKJDI => $obf_DTYyPyMPKBoeGVwaMyIUNgsQFQwDNQE) {
  66. $this->{$obf_DSwyNiEuNAoxBiYcJhspChc9HwkKJDI} = $obf_DTYyPyMPKBoeGVwaMyIUNgsQFQwDNQE;
  67. }
  68. }
  69.  
  70. public function isPaused()
  71. {
  72. if (!isset($this->id)) {
  73. return false;
  74. }
  75. return ($this->ispaused === true) || ($this->ispaused === 1) ? true : false;
  76. }
  77.  
  78. public function pauseTrader($runTimestamp = NULL, $owntransaction = false)
  79. {
  80. if (!isset($this->id)) {
  81. return false;
  82. }
  83.  
  84. if ($obf_DT0JLzQvLVwYMzwyCEAiMAMYKykOPCI === NULL) {
  85. $obf_DT0JLzQvLVwYMzwyCEAiMAMYKykOPCI = \obf_DRUvBCELKBcDIws0Bj4BDSEsIScNDCI();
  86. }
  87.  
  88. $obf_DSUcDhgNGyEXBDEoCw0XNDkDPRUKASI = \obf_DSwaXCI4LzAIKAk1NQkYMB82CRohEQE($obf_DT0JLzQvLVwYMzwyCEAiMAMYKykOPCI);
  89. $this->ispaused = true;
  90. $this->last_paused_date = $obf_DSUcDhgNGyEXBDEoCw0XNDkDPRUKASI;
  91. $this->saveData($obf_DSQ3Bi4TEz1bNDstD0A7KzITKz0PNAE);
  92. $obf_DRQ4DigDR0aPUAjKBMyNTEHJR4oFBE = new Traderlog();
  93. $obf_DRQ4DigDR0aPUAjKBMyNTEHJR4oFBE->logtype = Enums\LogType::STATUSCHANGE;
  94. $obf_DRQ4DigDR0aPUAjKBMyNTEHJR4oFBE->logdescription = 'Trader has been paused. Algorithms and triggers will not run anymore untill the trader has been restarted.';
  95. $obf_DRQ4DigDR0aPUAjKBMyNTEHJR4oFBE->log_date = $obf_DSUcDhgNGyEXBDEoCw0XNDkDPRUKASI;
  96. $obf_DRQ4DigDR0aPUAjKBMyNTEHJR4oFBE->trader_id = $this->getId();
  97. $obf_DRQ4DigDR0aPUAjKBMyNTEHJR4oFBE->saveData();
  98. }
  99.  
  100. public function restartTrader($runTimestamp = NULL, $owntransaction = false)
  101. {
  102. if (!isset($this->id)) {
  103. return false;
  104. }
  105.  
  106. if ($obf_DT0JLzQvLVwYMzwyCEAiMAMYKykOPCI === NULL) {
  107. $obf_DT0JLzQvLVwYMzwyCEAiMAMYKykOPCI = \obf_DRUvBCELKBcDIws0Bj4BDSEsIScNDCI();
  108. }
  109.  
  110. $obf_DSUcDhgNGyEXBDEoCw0XNDkDPRUKASI = \obf_DSwaXCI4LzAIKAk1NQkYMB82CRohEQE($obf_DT0JLzQvLVwYMzwyCEAiMAMYKykOPCI);
  111. $this->ispaused = false;
  112. $this->last_started_date = $obf_DSUcDhgNGyEXBDEoCw0XNDkDPRUKASI;
  113. $this->saveData($obf_DSQ3Bi4TEz1bNDstD0A7KzITKz0PNAE);
  114. $obf_DRQ4DigDR0aPUAjKBMyNTEHJR4oFBE = new Traderlog();
  115. $obf_DRQ4DigDR0aPUAjKBMyNTEHJR4oFBE->logtype = Enums\LogType::STATUSCHANGE;
  116. $obf_DRQ4DigDR0aPUAjKBMyNTEHJR4oFBE->logdescription = 'Trader has been restarted.';
  117. $obf_DRQ4DigDR0aPUAjKBMyNTEHJR4oFBE->log_date = $obf_DSUcDhgNGyEXBDEoCw0XNDkDPRUKASI;
  118. $obf_DRQ4DigDR0aPUAjKBMyNTEHJR4oFBE->trader_id = $this->getId();
  119. $obf_DRQ4DigDR0aPUAjKBMyNTEHJR4oFBE->saveData();
  120. }
  121.  
  122. public function updateOpenOrdersInformation()
  123. {
  124. $obf_DS9bISkKMiM0NRkWIQELGhwwPjQbPzI = $this->getOpenOrders();
  125. $obf_DRUeBQEOMAw2Oy07Kjc5HxwSGxsfDRE = $this->getPlatformInstance();
  126. $obf_DVw4LgQlLxRbGiQ2HgEONQ0MIhpAHiI = $this->getPairInstance();
  127. $obf_DQ0cLCcKJScxAzwMNT4SJQMKKxULLzI = $this->getTraderStatus();
  128. if (($obf_DQ0cLCcKJScxAzwMNT4SJQMKKxULLzI == Enums\TraderStatus::LIVE) && ($obf_DRUeBQEOMAw2Oy07Kjc5HxwSGxsfDRE->platform == 'Binance')) {
  129. \obf_DR0eBTQaKikBEVs3MiY8FyEIIiEaFBE('Bulk updating trades information from binance myTrades API - Open orders');
  130. $obf_DRUeBQEOMAw2Oy07Kjc5HxwSGxsfDRE->BINANCE_fetchTradesInformation($obf_DS9bISkKMiM0NRkWIQELGhwwPjQbPzI, $obf_DVw4LgQlLxRbGiQ2HgEONQ0MIhpAHiI, NULL);
  131. \obf_DQJAFBoQHiwMWzQzEiM7CwwSLDQMGgE(1000000);
  132. }
  133.  
  134. foreach ($obf_DS9bISkKMiM0NRkWIQELGhwwPjQbPzI as $obf_DRwJwEKQAUpNwMdDDMZGSwoOBcvHBE) {
  135. $obf_DT4JEAc1CzIuGx0XGwUeFyslJTkfNgE = new Trade($obf_DRwJwEKQAUpNwMdDDMZGSwoOBcvHBE['id']);
  136. $obf_DT4JEAc1CzIuGx0XGwUeFyslJTkfNgE->updateOrderInformation();
  137. }
  138.  
  139. $this->recalculateTraderBalanceAndFeesFromOrders();
  140. return true;
  141. }
  142.  
  143. public function updateCompletedOrdersInformation()
  144. {
  145. $obf_DRUeBQEOMAw2Oy07Kjc5HxwSGxsfDRE = $this->getPlatformInstance();
  146. $obf_DQ0cLCcKJScxAzwMNT4SJQMKKxULLzI = $this->getTraderStatus();
  147. $obf_DTwINw83JTQzDhouFhVcJDIUJS0xFhE = $this->getCompletedOrders();
  148. if ((($obf_DQ0cLCcKJScxAzwMNT4SJQMKKxULLzI == Enums\TraderStatus::LIVE) || ($obf_DQ0cLCcKJScxAzwMNT4SJQMKKxULLzI == Enums\TraderStatus::INACTIVE)) && (\obf_DTMFQDIrFAg1PD8LCz4eBCwSEh87HxE($obf_DRUeBQEOMAw2Oy07Kjc5HxwSGxsfDRE->platform) == 'binance')) {
  149. $obf_DVw4LgQlLxRbGiQ2HgEONQ0MIhpAHiI = $this->getPairInstance();
  150. \obf_DR0eBTQaKikBEVs3MiY8FyEIIiEaFBE('Bulk updating trades information from binance myTrades API - completed orders');
  151. $obf_DRUeBQEOMAw2Oy07Kjc5HxwSGxsfDRE->BINANCE_fetchTradesInformation($obf_DTwINw83JTQzDhouFhVcJDIUJS0xFhE, $obf_DVw4LgQlLxRbGiQ2HgEONQ0MIhpAHiI, NULL);
  152. \obf_DQJAFBoQHiwMWzQzEiM7CwwSLDQMGgE(1000000);
  153. }
  154.  
  155. if (\obf_DTMFQDIrFAg1PD8LCz4eBCwSEh87HxE($obf_DRUeBQEOMAw2Oy07Kjc5HxwSGxsfDRE->platform) != 'binance') {
  156. foreach ($obf_DTwINw83JTQzDhouFhVcJDIUJS0xFhE as $obf_DRwJwEKQAUpNwMdDDMZGSwoOBcvHBE) {
  157. $obf_DT4JEAc1CzIuGx0XGwUeFyslJTkfNgE = new Trade($obf_DRwJwEKQAUpNwMdDDMZGSwoOBcvHBE['id']);
  158. $obf_DT4JEAc1CzIuGx0XGwUeFyslJTkfNgE->updateOrderInformation(NULL, true);
  159. \obf_DQJAFBoQHiwMWzQzEiM7CwwSLDQMGgE(1000000);
  160. }
  161. }
  162.  
  163. $this->recalculateTraderBalanceAndFeesFromOrders();
  164. return true;
  165. }
  166.  
  167. public function api_recalcTraderBalance()
  168. {
  169. return $this->recalculateTraderBalanceAndFeesFromOrders();
  170. }
  171.  
  172. public function recalculateTraderBalanceAndFeesFromOrders()
  173. {
  174. \obf_DR0eBTQaKikBEVs3MiY8FyEIIiEaFBE('Recalculate trader balances and fees', $this->label);
  175. global $obf_DQ8NLC4CIw4vJBcLEAcPyYKLAYKAgE;
  176. $obf_DQwUOBMXHjk1AiITOC4LBy8QBC9bCBE = 0;
  177. $obf_DTUvNy8vJTQLKCQGFwmHQYUBQMKNBE = 0;
  178.  
  179. if ($this->getPairStartsWithCurrency() == $this->getPairBase()) {
  180. $obf_DQwUOBMXHjk1AiITOC4LBy8QBC9bCBE = $this->trader_allowed_trading_value_start;
  181. }
  182. else {
  183. $obf_DTUvNy8vJTQLKCQGFwmHQYUBQMKNBE = $this->trader_allowed_trading_value_start;
  184. }
  185.  
  186. $obf_DRM4HQgrFQUJN1wqIlwNLxFAPhUZFRE = new Db\DBSelect();
  187. $obf_DTc0HgkGJiEmDwUTQAk4JyYxCAkxAxE = new Db\DBWheres();
  188. $obf_DRM4HQgrFQUJN1wqIlwNLxFAPhUZFRE->setSelect(['sum(amount_exec) as base_plus', 'sum(costreceive_quote_exec_net) as quote_minus']);
  189. $obf_DTc0HgkGJiEmDwUTQAk4JyYxCAkxAxE->addWhere('trader_id', 'i', $this->getId(), false, false, false, '=');
  190. $obf_DTc0HgkGJiEmDwUTQAk4JyYxCAkxAxE->addWhere('trade_buysell', 's', Enums\BuySellType::BUY, false, false, false, '=');
  191. $obf_DVsCFR0uETEZCAEyJREoGykwPQw3JyI = $obf_DQ8NLC4CIw4vJBcLEAcPyYKLAYKAgE->select_list_assoc($obf_DRM4HQgrFQUJN1wqIlwNLxFAPhUZFRE, TABLE_TRADE, $obf_DTc0HgkGJiEmDwUTQAk4JyYxCAkxAxE);
  192. $obf_DSwLMw0HBCcnNhwUEikSCxIIEDkuESI = (isset($obf_DVsCFR0uETEZCAEyJREoGykwPQw3JyI[0]['base_plus']) ? $obf_DVsCFR0uETEZCAEyJREoGykwPQw3JyI[0]['base_plus'] : 0);
  193. $obf_DREkAlwOHTYiGwI8QDM2DydcEQUyBAE = (isset($obf_DVsCFR0uETEZCAEyJREoGykwPQw3JyI[0]['quote_minus']) ? $obf_DVsCFR0uETEZCAEyJREoGykwPQw3JyI[0]['quote_minus'] : 0);
  194.  
  195. if ($obf_DSwLMw0HBCcnNhwUEikSCxIIEDkuESI != NULL) {
  196. $obf_DQwUOBMXHjk1AiITOC4LBy8QBC9bCBE = $obf_DQwUOBMXHjk1AiITOC4LBy8QBC9bCBE + $obf_DSwLMw0HBCcnNhwUEikSCxIIEDkuESI;
  197. }
  198.  
  199. if ($obf_DREkAlwOHTYiGwI8QDM2DydcEQUyBAE != NULL) {
  200. $obf_DTUvNy8vJTQLKCQGFwmHQYUBQMKNBE = $obf_DTUvNy8vJTQLKCQGFwmHQYUBQMKNBE - $obf_DREkAlwOHTYiGwI8QDM2DydcEQUyBAE;
  201. }
  202.  
  203. $obf_DRM4HQgrFQUJN1wqIlwNLxFAPhUZFRE = new Db\DBSelect();
  204. $obf_DTc0HgkGJiEmDwUTQAk4JyYxCAkxAxE = new Db\DBWheres();
  205. $obf_DRM4HQgrFQUJN1wqIlwNLxFAPhUZFRE->setSelect(['sum(amount_exec) as base_minus', 'sum(costreceive_quote_exec_net) as quote_plus']);
  206. $obf_DTc0HgkGJiEmDwUTQAk4JyYxCAkxAxE->addWhere('trader_id', 'i', $this->getId(), false, false, false, '=');
  207. $obf_DTc0HgkGJiEmDwUTQAk4JyYxCAkxAxE->addWhere('trade_buysell', 's', Enums\BuySellType::SELL, false, false, false, '=');
  208. $obf_DVsCFR0uETEZCAEyJREoGykwPQw3JyI = $obf_DQ8NLC4CIw4vJBcLEAcPyYKLAYKAgE->select_list_assoc($obf_DRM4HQgrFQUJN1wqIlwNLxFAPhUZFRE, TABLE_TRADE, $obf_DTc0HgkGJiEmDwUTQAk4JyYxCAkxAxE);
  209. $obf_DTYFOAIYJB8SDwkHKCoyNRZAFQ4hOSI = (isset($obf_DVsCFR0uETEZCAEyJREoGykwPQw3JyI[0]['base_minus']) ? $obf_DVsCFR0uETEZCAEyJREoGykwPQw3JyI[0]['base_minus'] : 0);
  210. $obf_DTwrBQY4IRRcNR0YLg8CSE3NRUFXAE = (isset($obf_DVsCFR0uETEZCAEyJREoGykwPQw3JyI[0]['quote_plus']) ? $obf_DVsCFR0uETEZCAEyJREoGykwPQw3JyI[0]['quote_plus'] : 0);
  211.  
  212. if ($obf_DTYFOAIYJB8SDwkHKCoyNRZAFQ4hOSI != NULL) {
  213. $obf_DQwUOBMXHjk1AiITOC4LBy8QBC9bCBE = $obf_DQwUOBMXHjk1AiITOC4LBy8QBC9bCBE - $obf_DTYFOAIYJB8SDwkHKCoyNRZAFQ4hOSI;
  214. }
  215.  
  216. if ($obf_DTwrBQY4IRRcNR0YLg8CSE3NRUFXAE != NULL) {
  217. $obf_DTUvNy8vJTQLKCQGFwmHQYUBQMKNBE = $obf_DTUvNy8vJTQLKCQGFwmHQYUBQMKNBE + $obf_DTwrBQY4IRRcNR0YLg8CSE3NRUFXAE;
  218. }
  219.  
  220. $this->trader_cur_balance_pair_base = $obf_DQwUOBMXHjk1AiITOC4LBy8QBC9bCBE;
  221. $this->trader_cur_balance_pair_quote = $obf_DTUvNy8vJTQLKCQGFwmHQYUBQMKNBE;
  222. $this->saveData();
  223. return true;
  224. }
  225.  
  226. public function api_calculateCounterOrder(Trade $completedorder, $bid, $fee)
  227. {
  228. return $this->calculateCounterOrder($completedorder, $bid, $fee);
  229. }
  230.  
  231. public function calculateCounterOrder(Trade $completedorder, $bid, $fee)
  232. {
  233. $obf_DRUeBQEOMAw2Oy07Kjc5HxwSGxsfDRE = $this->getPlatformInstance();
  234. $obf_DVw4LgQlLxRbGiQ2HgEONQ0MIhpAHiI = $this->getPairInstance();
  235.  
  236. if ($obf_DQE4LBstWy4OERc5IwkBARwxORINIzI->getBuySellType() == Enums\BuySellType::BUY) {
  237. $obf_DRoyLj4EEzAXOD80DDkrLw0YQCkpECI = $obf_DQE4LBstWy4OERc5IwkBARwxORINIzI->amount_exec;
  238. $obf_DVwPAg0UKjwuBC0lEigpEAQKAhNABAE = (($this->fix_order_amounts != NULL) && ($this->fix_order_amounts != '') ? (int) $this->fix_order_amounts === 1 : false);
  239. $obf_DRgjCysbJxcYETtAESIvLD8FzAEEhE = (($this->spread_orders != NULL) && ($this->spread_orders != '') ? (int) $this->spread_orders === 1 : false);
  240.  
  241. if ($obf_DVwPAg0UKjwuBC0lEigpEAQKAhNABAE) {
  242. $obf_DQ45LlwtNCMhHCo2HyFADi47LCMBKiI = $this->trader_allowed_trading_value_start;
  243.  
  244. if ($obf_DRgjCysbJxcYETtAESIvLD8FzAEEhE) {
  245. $obf_DQ45LlwtNCMhHCo2HyFADi47LCMBKiI = $this->max_trade_base_per_order;
  246. ...........................................................................
  247. ............................................
  248. ....................
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement