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
//+------------------------------------------------------------------+ //| Beta.mqh | //| Copyright 2000-2026, MetaQuotes Ltd. | //| www.mql5.com | //+------------------------------------------------------------------+ #include "Math.mqh" //+------------------------------------------------------------------+ //| Beta density function (PDF) | //+------------------------------------------------------------------+ //| The function returns the probability density function of | //| the Beta distribution with shape parameters a and b. | //| | //| f(x,a,b)= (1/Beta(a,b))*x^(a-1)*(1-x)^(b-1) | //| Arguments: | //| x : Random variable | //| a : First shape parameter (a>0) | //| b : Second shape parameter (b>0) | //| log_mode : Logarithm mode flag, if true it returns Log values | //| error_code : Variable for error code | //| | //| Return value: | //| The probability density evaluated at x. | //+------------------------------------------------------------------+ double MathProbabilityDensityBeta(const double x,const double a,const double b,const bool log_mode,int &error_code) { //--- check NaN if(!MathIsValidNumber(x) || !MathIsValidNumber(a) || !MathIsValidNumber(b)) { error_code=ERR_ARGUMENTS_NAN; return QNaN; } //--- a and b must be positive if(a<=0.0 || b<=0.0) { error_code=ERR_ARGUMENTS_INVALID; return QNaN; } error_code=ERR_OK; //--- check x range if(x<=0.0 || x>=1.0) return TailLog0(true,log_mode); double log_result=(a-1.0)*MathLog(x)+(b-1.0)*MathLog(1.0-x)-MathBetaLog(a,b); //--- return log beta density if(log_mode==true) return log_result; //--- return beta density return MathExp(log_result); } //+------------------------------------------------------------------+ //| Beta density function (PDF) | //+------------------------------------------------------------------+ //| The function returns the probability density function of | //| the Beta distribution with shape parameters a and b. | //| | //| f(x,a,b)= (1/Beta(a,b))*x^(a-1)*(1-x)^(b-1) | //| Arguments: | //| x : Random variable | //| a : First shape parameter (a>0) | //| b : Second shape parameter (b>0) | //| error_code : Variable for error code | //| | //| Return value: | //| The probability density evaluated at x. | //+------------------------------------------------------------------+ double MathProbabilityDensityBeta(const double x,const double a,const double b,int &error_code) { return MathProbabilityDensityBeta(x,a,b,false,error_code); } //+------------------------------------------------------------------+ //| Beta density function (PDF) | //+------------------------------------------------------------------+ //| The function calculates the probability density function of the | //| Beta distribution with shape parameters a and b for values in | //| x[] array. | //| | //| Arguments: | //| x : Array with random variables | //| a : First shape parameter (a>0) | //| b : Second shape parameter (b>0) | //| log_mode : Logarithm mode flag,if true it calculates Log values| //| result : Array with calculated values | //| | //| Return value: | //| true if successful, otherwise false. | //+------------------------------------------------------------------+ bool MathProbabilityDensityBeta(const double &x[],const double a,const double b,const bool log_mode,double &result[]) { //--- check NaN if(!MathIsValidNumber(a) || !MathIsValidNumber(b)) return false; //--- a and b must be positive if(a<=0.0 || b<=0.0) return false; int data_count=ArraySize(x); if(data_count==0) return false; int error_code=0; ArrayResize(result,data_count); for(int i=0; i=1.0) result[i]=TailLog0(true,log_mode); else { double log_result=(a-1.0)*MathLog(x_arg)+(b-1.0)*MathLog(1.0-x_arg)-MathBetaLog(a,b); if(log_mode==true) result[i]=log_result; else result[i]=MathExp(log_result); } } return true; } //+------------------------------------------------------------------+ //| Beta density function (PDF) | //+------------------------------------------------------------------+ //| The function calculates the probability density function of the | //| Beta distribution with shape parameters a and b for values in | //| x[] array. | //| | //| Arguments: | //| x : Array with random variables | //| a : First shape parameter (a>0) | //| b : Second shape parameter (b>0) | //| result : Array with calculated values | //| | //| Return value: | //| true if successful, otherwise false. | //+------------------------------------------------------------------+ bool MathProbabilityDensityBeta(const double &x[],const double a,const double b,double &result[]) { return MathProbabilityDensityBeta(x,a,b,false,result); } //+------------------------------------------------------------------+ //| Beta cumulative distribution function (CDF) | //+------------------------------------------------------------------+ //| The function returns the cumulative distribution function of | //| the Beta distribution with shape parameters a and b, evaluated | //| at x. | //| | //| Arguments: | //| x : The desired quantile | //| a : First shape parameter (a>0) | //| b : Second shape parameter (b>0) | //| tail : Flag to calculate lower tail | //| log_mode : Logarithm mode flag,if true it calculates Log values| //| error_code : Variable for error code | //| | //| Return value: | //| The value of the Beta cumulative distribution function with | //| shape parameters a and b, evaluated at x. | //+------------------------------------------------------------------+ double MathCumulativeDistributionBeta(const double x,const double a,const double b,const bool tail,const bool log_mode,int &error_code) { //--- check NaN if(!MathIsValidNumber(x) || !MathIsValidNumber(a) || !MathIsValidNumber(b)) { error_code=ERR_ARGUMENTS_NAN; return QNaN; } //--- a and b must be positive if(a<=0.0 || b<=0.0) { error_code=ERR_ARGUMENTS_INVALID; return QNaN; } error_code=ERR_OK; //--- check x range if(x<=0.0) return TailLog0(tail,log_mode); if(x>=1.0) return TailLog1(tail,log_mode); //--- calculate probability and take into account round-off errors double cdf=MathMin(MathBetaIncomplete(x,a,b),1.0); //--- return result depending on arguments return TailLogValue(cdf,tail,log_mode); } //+------------------------------------------------------------------+ //| Beta cumulative distribution function (CDF) | //+------------------------------------------------------------------+ //| The function returns the cumulative distribution function of | //| the Beta distribution with shape parameters a and b, evaluated | //| at x. | //| | //| Arguments: | //| x : The desired quantile | //| a : First shape parameter (a>0) | //| b : Second shape parameter (b>0) | //| error_code : Variable for error code | //| | //| Return value: | //| The value of the Beta cumulative distribution function with | //| shape parameters a and b, evaluated at x. | //+------------------------------------------------------------------+ double MathCumulativeDistributionBeta(const double x,const double a,const double b,int &error_code) { return MathCumulativeDistributionBeta(x,a,b,true,false,error_code); } //+------------------------------------------------------------------+ //| The Beta cumulative distribution function (CDF) | //+------------------------------------------------------------------+ //| The function returns the cumulative distribution function of | //| the Beta distribution with shape parameters a and b for values | //| in x[] array | //| | //| Arguments: | //| x : Array with random variables | //| a : First shape parameter (a>0) | //| b : Second shape parameter (b>0) | //| tail : Flag to calculate lower tail | //| log_mode : Logarithm mode flag,if true it calculates Log values| //| error_code : Variable for error code | //| | //| Return value: | //| true if successful, otherwise false. | //+------------------------------------------------------------------+ bool MathCumulativeDistributionBeta(const double &x[],const double a,const double b,const bool tail,const bool log_mode,double &result[]) { //--- check NaN if(!MathIsValidNumber(a) || !MathIsValidNumber(b)) return false; //--- a and b must be positive if(a<=0.0 || b<=0.0) return false; int data_count=ArraySize(x); if(data_count==0) return false; int error_code=0; ArrayResize(result,data_count); for(int i=0; i=1.0) result[i]=TailLog1(tail,log_mode); else { //--- calculate probability and take into account round-off errors double cdf=MathMin(MathBetaIncomplete(x_arg,a,b),1.0); //--- return result depending on arguments result[i]=TailLogValue(cdf,tail,log_mode); } } else return false; } return(true); } //+------------------------------------------------------------------+ //| Beta cumulative distribution function (CDF) | //+------------------------------------------------------------------+ //| The function calculates the cumulative distribution function of | //| the Beta distribution with shape parameters a and b for values | //| in x[] array. | //| | //| Arguments: | //| x : Array with random variables | //| a : First shape parameter (a>0) | //| b : Second shape parameter (b>0) | //| error_code : Variable for error code | //| | //| Return value: | //| true if successful, otherwise false. | //+------------------------------------------------------------------+ bool MathCumulativeDistributionBeta(const double &x[],const double a,const double b,double &result[]) { return MathCumulativeDistributionBeta(x,a,b,true,false,result); } //+------------------------------------------------------------------+ //| Beta distribution quantile function (inverse CDF) | //+------------------------------------------------------------------+ //| The function returns the inverse cumulative distribution | //| function of the Beta distribution with shape parameters a and b | //| for the desired probability. | //| | //| Arguments: | //| probability : The desired probability | //| a : First shape parameter (a>0) | //| b : Second shape parameter (b>0) | //| tail : Flag to calculate lower tail | //| log_mode : Logarithm mode flag,if true calculates Log values | //| error_code : Variable for error code | //| | //| Return value: | //| The value of the inverse cumulative distribution function of | //| the Beta distribution with shape parameters a and b. | //+------------------------------------------------------------------+ double MathQuantileBeta(const double probability,const double a,const double b,const bool tail,const bool log_mode,int &error_code) { //--- check parameters if(!MathIsValidNumber(probability) || !MathIsValidNumber(a) || !MathIsValidNumber(b)) { error_code=ERR_ARGUMENTS_NAN; return QNaN; } //--- a and b must be positive if(a<=0.0 || b<=0.0) { error_code=ERR_ARGUMENTS_INVALID; return QNaN; } //--- calculate real probability double prob=TailLogProbability(probability,tail,log_mode); //--- check probability range if(prob<0.0 || prob>1.0) { error_code=ERR_ARGUMENTS_INVALID; return QNaN; } error_code=ERR_OK; //--- check probabilty if(prob==0.0) return 0.0; if(prob==1.0) return 1.0; const double eps=10e-16; //--- set h and h_min double h=1.0; double h_min=MathSqrt(eps); //--- initial x value double x=a/(a+b); if(x==0.0) x=h_min; else if(x==1.0) x=1.0-h_min; int err_code=0; const int max_iterations=100; int iterations=0; //--- Newton iterations while(iterationsh_min*MathAbs(x)) && (MathAbs(h)>h_min))==false) break; //--- calculate pdf and cdf double pdf=MathProbabilityDensityBeta(x,a,b,false,err_code); double cdf=MathCumulativeDistributionBeta(x,a,b,true,false,err_code); //--- calculate ratio h=(cdf-prob)/pdf; double x_new=x-h; //--- check x if(x_new<0.0) x_new=x*0.1; else if(x_new>1.0) x_new=1.0-(1.0-x)*0.1; x=x_new; iterations++; } //--- check convergence if(iterations0) | //| b : Second shape parameter (b>0) | //| error_code : Variable for error code | //| | //| Return value: | //| The value of the inverse cumulative distribution function | //| of the Beta distribution with shape parameters a and b. | //+------------------------------------------------------------------+ double MathQuantileBeta(const double probability,const double a,const double b,int &error_code) { return MathQuantileBeta(probability,a,b,true,false,error_code); } //+------------------------------------------------------------------+ //| Beta distribution quantile function (inverse CDF) | //+------------------------------------------------------------------+ //| The function calculates the the inverse cumulative distribution | //| function of the Beta distribution with shape parameters a and b | //| for the probability values from probability[] array. | //| | //| Arguments: | //| probability : Array with probability values | //| a : First shape parameter (a>0) | //| b : Second shape parameter (b>0) | //| tail : Lower tail flag (lower tail of probability used) | //| log_mode : Logarithm mode flag (log probability used) | //| result : Output array with quantile values | //| | //| Return value: | //| true if successful, otherwise false. | //+------------------------------------------------------------------+ bool MathQuantileBeta(const double &probability[],const double a,const double b,const bool tail,const bool log_mode,double &result[]) { //--- check parameters if(!MathIsValidNumber(a) || !MathIsValidNumber(b)) return false; //--- a and b must be positive if(a<=0.0 || b<=0.0) return false; int data_count=ArraySize(probability); if(data_count==0) return false; int error_code=0; ArrayResize(result,data_count); const double eps=10e-16; double h_min=MathSqrt(eps); int err_code=0; const int max_iterations=1000; for(int i=0; i1.0) return false; //--- check probabilty if(prob==0.0) result[i]=0.0; else if(prob==1.0) result[i]=1.0; else { //--- initial x value double x=a/(a+b); if(x==0.0) x=h_min; else if(x==1.0) x=1.0-h_min; double h=1.0; int iterations=0; //--- Newton iterations while(iterationsh_min*MathAbs(x)) && (MathAbs(h)>h_min))==false) break; //--- calculate pdf and cdf double pdf=MathProbabilityDensityBeta(x,a,b,false,err_code); double cdf=MathCumulativeDistributionBeta(x,a,b,true,false,err_code); //--- calculate ratio h=(cdf-prob)/pdf; double x_new=x-h; //--- check x if(x_new<0.0) x_new=x*0.1; else if(x_new>1.0) x_new=1.0-(1.0-x)*0.1; x=x_new; iterations++; } //--- check convergence if(iterations0) | //| b : Second shape parameter (b>0) | //| result : Output array with quantile values | //| | //| Return value: | //| true if successful, otherwise false. | //+------------------------------------------------------------------+ bool MathQuantileBeta(const double &probability[],const double a,const double b,double &result[]) { return MathQuantileBeta(probability,a,b,true,false,result); } //+------------------------------------------------------------------+ //| Random variate from the Beta distribution | //+------------------------------------------------------------------+ //| The function returns a single random deviate from the Beta | //| distribution with parameters a and b. | //| | //| Arguments: | //| a : First shape parameter (a>0) | //| b : Second shape parameter (b>0) | //| | //| Return value: | //| The random value with Beta distribution. | //| | //| Reference: | //| Russell Cheng, | //| "Generating Beta Variates with Nonintegral Shape Parameters", | //| Communications of the ACM, | //| Volume 21, Number 4, April 1978, pages 317-322. | //| | //| Original FORTRAN77 version by Barry Brown, James Lovato. | //| C version by John Burkardt. | //+------------------------------------------------------------------+ double MathRandomBeta(const double a,const double b) { const double log4 = MathLog(4); const double log5 = MathLog(5); double a1,b1,alpha,beta,gamma,delta,r,s,u1,u2,v,y,z; double w=0.0; double value=0; //--- if(1.00) | //| b : Second shape parameter (b>0) | //| error_code : Variable for error code | //| | //| Return value: | //| The random value with Beta distribution. | //+------------------------------------------------------------------+ double MathRandomBeta(const double a,const double b,int &error_code) { //--- check parameters if(!MathIsValidNumber(a) || !MathIsValidNumber(b)) { error_code=ERR_ARGUMENTS_NAN; return QNaN; } //--- a and b must be positive if(a<=0.0 || b<=0.0) { error_code=ERR_ARGUMENTS_INVALID; return QNaN; } error_code=ERR_OK; //--- return beta random value return MathRandomBeta(a,b); } //+------------------------------------------------------------------+ //| Random variate from Beta distribution | //+------------------------------------------------------------------+ //| The function generates random variables from Beta distribution | //| with parameters a and b. | //| | //| Arguments: | //| a : First shape parameter (a>0) | //| b : Second shape parameter (b>0) | //| data_count : Number of values needed | //| result : Output array with random values | //| | //| Return value: | //| true if successful, otherwise false. | //+------------------------------------------------------------------+ bool MathRandomBeta(const double a,const double b,const int data_count,double &result[]) { if(data_count<=0) return false; //--- check parameters if(!MathIsValidNumber(a) || !MathIsValidNumber(b)) return false; //--- a and b must be positive if(a<=0.0 || b<=0.0) return false; //--- prepare output array and calculate random values ArrayResize(result,data_count); for(int i=0; i0) | //| b : Second shape parameter (b>0) | //| mean : Variable for mean value (1st moment) | //| variance : Variable for variance value (2nd moment) | //| skewness : Variable for skewness value (3rd moment) | //| kurtosis : Variable for kurtosis value (4th moment) | //| error_code : Variable for error code | //| | //| Return value: | //| true if moments calculated successfully, otherwise false. | //+------------------------------------------------------------------+ bool MathMomentsBeta(const double a,const double b,double &mean,double &variance,double &skewness,double &kurtosis,int &error_code) { //--- initial values mean =QNaN; variance=QNaN; skewness=QNaN; kurtosis=QNaN; //--- check NaN if(!MathIsValidNumber(a) || !MathIsValidNumber(b)) { error_code=ERR_ARGUMENTS_NAN; return false; } //--- a and b must be positive if(a<=0.0 || b<=0.0) { error_code=ERR_ARGUMENTS_INVALID; return false; } error_code=ERR_OK; //--- calculate moments mean =a/(a+b); variance=(a*b)/((a+b)*(a+b)*(a+b+1)); skewness=2*(b-a)*MathSqrt(a+b+1)/(MathSqrt(a*b)*(a+b+2)); kurtosis=6*(a*a*a+a*a*(1-2*b)+b*b*(1+b)-2*a*b*(2+b))/(a*b*(a+b+2)*(a+b+3)); //--- successful return true; } //+------------------------------------------------------------------+