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
//+------------------------------------------------------------------+ //| T.mqh | //| Copyright 2000-2026, MetaQuotes Ltd. | //| www.mql5.com | //+------------------------------------------------------------------+ #include "Math.mqh" #include "Gamma.mqh" //+------------------------------------------------------------------+ //| T probability density function (PDF) | //+------------------------------------------------------------------+ //| The function returns the probability density function | //| of the T-distribution with parameter nu. | //| | //| Arguments: | //| x : Random variable | //| nu : Degrees of freedom | //| log_mode : Logarithm mode, if true it calculates Log values | //| error_code : Variable for error code | //| | //| Return value: | //| The probability density evaluated at x. | //+------------------------------------------------------------------+ double MathProbabilityDensityT(const double x,const double nu,const bool log_mode,int &error_code) { //--- check NaN if(!MathIsValidNumber(x) || !MathIsValidNumber(nu)) { error_code=ERR_ARGUMENTS_NAN; return QNaN; } //--- check nu if(nu!=MathRound(nu) || nu<=0.0) { error_code=ERR_ARGUMENTS_INVALID; return QNaN; } error_code=ERR_OK; //--- calculate T density double pdf=MathExp(MathGammaLog((nu+1.0)*0.5)-MathGammaLog(nu*0.5)); pdf=pdf/(MathSqrt(nu*M_PI)*MathPow(1+x*x/nu,(nu+1.0)*0.5)); //--- return density return TailLogValue(pdf,true,log_mode); } //+------------------------------------------------------------------+ //| T probability density function (PDF) | //+------------------------------------------------------------------+ //| The function returns the probability density function | //| of the T-distribution with parameter nu. | //| | //| Arguments: | //| x : Random variable | //| nu : Degrees of freedom | //| error_code : Variable for error code | //| | //| Return value: | //| The probability density evaluated at x. | //+------------------------------------------------------------------+ double MathProbabilityDensityT(const double x,const double nu,int &error_code) { return MathProbabilityDensityT(x,nu,false,error_code); } //+------------------------------------------------------------------+ //| T probability density function (PDF) | //+------------------------------------------------------------------+ //| The function calculates the probability density function of | //| the T distribution with parameter nu for values in x[] array. | //| | //| Arguments: | //| x : Array with random variables | //| nu : Degrees of freedom | //| log_mode : Logarithm mode flag, if true it returns Log values | //| result : Array with calculated values | //| | //| Return value: | //| true if successful, otherwise false. | //+------------------------------------------------------------------+ bool MathProbabilityDensityT(const double &x[],const double nu,const bool log_mode,double &result[]) { //--- check NaN if(!MathIsValidNumber(nu)) return false; //--- check nu if(nu!=MathRound(nu) || nu<=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; i0.0) cdf=1.0-cdf; //--- take into account round-off errors for probability return TailLogValue(MathMin(cdf,1.0),tail,log_mode); } //+------------------------------------------------------------------+ //| T cumulative distribution function (CDF) | //+------------------------------------------------------------------+ //| The function returns the probability that an observation from | //| T-distribution with parameter nu is less than or equal to x. | //| | //| Arguments: | //| x : The desired quantile | //| nu : Degrees of freedom | //| error_code : Variable for error code | //| | //| Return value: | //| The value of T cumulative distribution function with parameter | //| nu, evaluated at x. | //+------------------------------------------------------------------+ double MathCumulativeDistributionT(const double x,const double nu,int &error_code) { return MathCumulativeDistributionT(x,nu,true,false,error_code); } //+------------------------------------------------------------------+ //| T cumulative distribution function (CDF) | //+------------------------------------------------------------------+ //| The function calculates the cumulative distribution function of | //| the T distribution with parameter nu for values in x. | //| | //| Arguments: | //| x : Array with random variables | //| nu : Degrees of freedom | //| tail : Flag to calculate lower tail | //| log_mode : Logarithm mode, if true it calculates Log values | //| result : Array with calculated values | //| | //| Return value: | //| true if successful, otherwise false. | //+------------------------------------------------------------------+ bool MathCumulativeDistributionT(const double &x[],const double nu,const bool tail,const bool log_mode,double &result[]) { //--- check NaN if(!MathIsValidNumber(nu)) return false; //--- check nu (must be positive integer) if(nu!=MathRound(nu) || nu<=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; i0.0) cdf=1.0-cdf; //--- take into account round-off errors for probability result[i]=TailLogValue(MathMin(cdf,1.0),tail,log_mode); } } return true; } //+------------------------------------------------------------------+ //| T cumulative distribution function (CDF) | //+------------------------------------------------------------------+ //| The function calculates the cumulative distribution function of | //| the T distribution with parameter nu for values in x[] array. | //| | //| Arguments: | //| x : Array with random variables | //| nu : Degrees of freedom | //| result : Array with calculated values | //| | //| Return value: | //| true if successful, otherwise false. | //+------------------------------------------------------------------+ bool MathCumulativeDistributionT(const double &x[],const double nu,double &result[]) { return MathCumulativeDistributionT(x,nu,true,false,result); } //+------------------------------------------------------------------+ //| T distribution quantile function (inverse CDF) | //+------------------------------------------------------------------+ //| The function returns the inverse cumulative distribution | //| function of the T distribution with parameter nu for the desired | //| probability. | //| | //| Arguments: | //| probability : The desired probability | //| nu : Degrees of freedom | //| tail : Flag to calculate lower tail | //| log_mode : Logarithm mode, if true it calculates Log values | //| error_code : Variable for error code | //| | //| Return value: | //| The value of the inverse cumulative distribution function | //| of the T-distribution with parameter nu. | //+------------------------------------------------------------------+ double MathQuantileT(const double probability,const double nu,const bool tail,const bool log_mode,int &error_code) { //--- check NaN if(!MathIsValidNumber(probability) || !MathIsValidNumber(nu)) { error_code=ERR_ARGUMENTS_NAN; return QNaN; } //--- check nu if(nu!=MathRound(nu) || nu<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; } //--- check cases when probability==0 or 1 if(prob==0.0 || prob==1.0) { error_code=ERR_RESULT_INFINITE; //--- if(prob==0.0) return(QNEGINF); else return(QPOSINF); } error_code=ERR_OK; //--- special case nu=1 if(nu==1.0) return MathTan(M_PI*(prob-0.5)); //--- special case if(prob==0.5) return 0.0; //--- int max_iterations=50; int iterations=0; //--- initial values double h=1.0; double h_min=10E-20; double x=0.5; int err_code=0; //--- Newton iterations while(iterationsh_min && MathAbs(h)>MathAbs(h_min*x))==false) break; //--- calculate pdf and cdf double pdf=MathProbabilityDensityT(x,nu,err_code); double cdf=MathCumulativeDistributionT(x,nu,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(iterations1.0) return false; //--- special case p=0.5 if(prob==0.5) result[i]=0.0; else if(prob==0.0) result[i]=QNEGINF; else if(prob==1.0) result[i]=QPOSINF; else { //--- special case nu=1 if(nu==1.0) result[i]=MathTan(M_PI*(prob-0.5)); else { int max_iterations=50; int iterations=0; //--- initial values double h=1.0; double h_min=10E-18; double x=0.5; int err_code=0; //--- Newton iterations while(iterationsh_min && MathAbs(h)>MathAbs(h_min*x))==false) break; //--- calculate pdf and cdf double pdf=MathProbabilityDensityT(x,nu,err_code); double cdf=MathCumulativeDistributionT(x,nu,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; if (MathAbs(x_new-x)<10E-15) break; x=x_new; iterations++; } //--- check convergence if(iterations=1.0 || r2==0.0); //--- generate normal and gamma random variables double rnd_normal=x2*MathSqrt(-2.0*MathLog(r2)/r2); double rnd_gamma=MathRandomGamma(nu*0.5,1,error_code); //--- calculate ratio double result=0; if(rnd_gamma!=0) result=MathSqrt(nu*0.5)*rnd_normal/MathSqrt(rnd_gamma); return(result); } //+------------------------------------------------------------------+ //| Random variate from the T distribution | //+------------------------------------------------------------------+ //| Generates random variables from the T distribution with | //| parameter nu. | //| | //| Arguments: | //| nu : Degrees of freedom | //| data_count : Number of values needed | //| result : Output array with random values | //| | //| Return value: | //| true if successful, otherwise false. | //+------------------------------------------------------------------+ bool MathRandomT(const double nu,const int data_count,double &result[]) { //--- check NaN if(!MathIsValidNumber(nu)) return false; //--- check arguments if(nu!=MathRound(nu) || nu<=0.0) return false; int error_code=0; //--- prepare output array and calculate random values ArrayResize(result,data_count); for(int i=0; i=1.0 || r2==0.0); //--- generate normal and gamma random variables double rnd_normal=x2*MathSqrt(-2.0*MathLog(r2)/r2); double rnd_gamma=MathRandomGamma(nu*0.5,1,error_code); //--- calculate ratio double rnd=0; if(rnd_gamma!=0) rnd=MathSqrt(nu*0.5)*rnd_normal/MathSqrt(rnd_gamma); result[i]=rnd; } return true; } //+------------------------------------------------------------------+ //| T distribution moments | //+------------------------------------------------------------------+ //| The function calculates 4 first moments of the T distribution | //| with parameter nu. | //| | //| Arguments: | //| nu : Degrees of freedom | //| 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. | //+------------------------------------------------------------------+ double MathMomentsT(const double nu,double &mean,double &variance,double &skewness,double &kurtosis,int &error_code) { //--- default values mean =QNaN; variance=QNaN; skewness=QNaN; kurtosis=QNaN; //--- check NaN if(!MathIsValidNumber(nu)) { error_code=ERR_ARGUMENTS_NAN; return QNaN; } //--- check nu if(nu!=MathRound(nu) || nu<0.0) { error_code=ERR_ARGUMENTS_INVALID; return QNaN; } error_code=ERR_OK; //--- calculate moments mean=0; if(nu>2) variance=nu/(nu-2); skewness=0; if(nu>4) kurtosis=6/(nu-4); //--- successful return true; } //+------------------------------------------------------------------+