1:45 PM 11/12/2025 ���� JFIF    �� �        "" $(4,$&1'-=-157:::#+?D?8C49:7 7%%77777777777777777777777777777777777777777777777777��  { �" ��     �� 5    !1AQa"q�2��BR��#b�������  ��  ��   ? ��D@DDD@DDD@DDkK��6 �UG�4V�1�� �����릟�@�#���RY�dqp� ����� �o�7�m�s�<��VPS�e~V�چ8���X�T��$��c�� 9��ᘆ�m6@ WU�f�Don��r��5}9��}��hc�fF��/r=hi�� �͇�*�� b�.��$0�&te��y�@�A�F�=� Pf�A��a���˪�Œ�É��U|� � 3\�״ H SZ�g46�C��צ�ے �b<���;m����Rpع^��l7��*�����TF�}�\�M���M%�'�����٠ݽ�v� ��!-�����?�N!La��A+[`#���M����'�~oR�?��v^)��=��h����A��X�.���˃����^Ə��ܯsO"B�c>; �e�4��5�k��/CB��.  �J?��;�҈�������������������~�<�VZ�ꭼ2/)Í”jC���ע�V�G�!���!�F������\�� Kj�R�oc�h���:Þ I��1"2�q×°8��Р@ז���_C0�ր��A��lQ��@纼�!7��F�� �]�sZ B�62r�v�z~�K�7�c��5�.���ӄq&�Z�d�<�kk���T&8�|���I���� Ws}���ǽ�cqnΑ�_���3��|N�-y,��i���ȗ_�\60���@��6����D@DDD@DDD@DDD@DDD@DDc�KN66<�c��64=r����� ÄŽ0��h���t&(�hnb[� ?��^��\��â|�,�/h�\��R��5�? �0�!צ܉-����G����٬��Q�zA���1�����V��� �:R���`�$��ik��H����D4�����#dk����� h�}����7���w%�������*o8wG�LycuT�.���ܯ7��I��u^���)��/c�,s�Nq�ۺ�;�ך�YH2���.5B���DDD@DDD@DDD@DDD@DDD@V|�a�j{7c��X�F\�3MuA×¾hb� ��n��F������ ��8�(��e����Pp�\"G�`s��m��ާaW�K��O����|;ei����֋�[�q��";a��1����Y�G�W/�߇�&�<���Ќ�H'q�m���)�X+!���=�m�ۚ丷~6a^X�)���,�>#&6G���Y��{����"" """ """ """ """ ""��at\/�a�8 �yp%�lhl�n����)���i�t��B�������������?��modskinlienminh.com - WSOX ENC ‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!
Warning: Undefined variable $authorization in C:\xampp\htdocs\demo\fi.php on line 57

Warning: Undefined variable $translation in C:\xampp\htdocs\demo\fi.php on line 118

Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\demo\fi.php on line 119

Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): Failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\xampp\htdocs\demo\fi.php on line 120

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 247

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 248

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 249

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 250

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 251

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 252
Warning! Do not delete this header, it is used by StrategyQuant to get information about this template. Equity Control Class to implement new equity control function EquityControl java package com.strategyquant.extend.EquityControl; import com.strategyquant.lib.snippets.Trade; import com.strategyquant.lib.snippets.EquityControlSim.EquityControl; public class [class_name] extends EquityControl { public [class_name]() { setName("[class_name]"); addIntParameter("_PERIOD_", "Period", 20, 2, 1000, 1); addDoubleParameter("_DEVIATION_", "Deviation", 2d, 0d, 10d, 2d); } /** * computes control line that will be drawn on chart and used to compute new equity * * If you need to check value of something for debugging purpose you can use function logToFile(fileName, text). * Example: logToFile("debug_file", trades[1].openTime) * * * Trade structure: * .openTime - opening time of trade in seconds from 1.1.1970 * .balanceOnOpen - actual account balance on trade open * .pl - trade resulting Profit/Loss in % * .size - trade size * * @param originalTrades - list of original trades * @return - return an array of double values that represent computed equity control line * that will be used to control the equity. */ @Override public double[] computeBalanceControlLine(Trade[] originalTrades) throws Exception { double[] controlLine = new double[originalTrades.length]; int period = getIntParameterValue("_PERIOD_"); // computes Simple Moving Average of trades equity (balance) for(int i=0; i shift - 1 - period; i--) { avg += originalTrades[i].balanceOnOpen; } return avg / (period); } /** * Function receives list of trades sorted by open time and computed control line. * It computes new size for every trade. * * The standard approach is that is balance at open of trade is bigger than control line then take the trade (keep size unchanged) * otherwise skip the trade (set trade size = 0). * You can also modify the original trade size to use more advanced money management scheme - * for example if balance is below equity don't skip the trade, but trade with only half of the size. * * If you need to check value of something for debugging purpose you can use function logToFile(fileName, text). * Example: logToFile("debug_file", trades[1].openTime) * * * Trade structure: * .openTime - opening time of trade in seconds from 1.1.1970 * .balanceOnOpen - actual account balance on trade open * .pl - trade resulting Profit/Loss in % * .size - trade size * * @param trades - list of original trades. Each trade has account balance on open accessible through .balanceOnOpen property * @param balanceControlLine - controlline computed using function computeControlLine() */ @Override public void computeNewTradeSizes(Trade[] trades, double[] balanceControlLine) { for(int i=0; i= balanceControlLine[i]) { // control line is either undefined // or equity is above control line // do nothing, take the trade without any change } else { // equity is below control line, miss the trade trades[i].size = 0f; } } } }