Cześć!
Na podstawie zamieszczonego na stronie:
http://www.sitmo.com/doc/Calculating_th ... stribution
kodu funkcji w C++, wyliczającej wartość dystrybuanty rozkładu normalnego standaryzowanego, napisałem analogiczną w MQL-u. Oto kod:
double N(double x) {
double b1 = 0.319381530;
double b2 = -0.356563782;
double b3 = 1.781477937;
double b4 = -1.821255978;
double b5 = 1.330274429;
double p = 0.2316419;
double c = 0.39894228;
double t;
if(x >= 0.0) {
t = 1.0 / ( 1.0 + p * x );
return (1.0 - c * MathExp( -x * x / 2.0 ) * t * ( t *( t * ( t * ( t * b5 + b4 ) + b3 ) + b2 ) + b1 ));
}
else {
t = 1.0 / ( 1.0 - p * x );
return ( c * MathExp( -x * x / 2.0 ) * t * ( t *( t * ( t * ( t * b5 + b4 ) + b3 ) + b2 ) + b1 ));
}
}
Jest to funkcja nieco uproszczona. Różnice między wynikami powyższej funkcji a analogicznej funkcji Excela są następujące:
x mql4 excel
-7,0 0,000000000000 0,000000000001
-6,9 0,000000000000 0,000000000003
-6,8 0,000000000000 0,000000000005
-6,7 0,000000000000 0,000000000010
-6,6 0,000000000000 0,000000000021
-6,5 0,000000000000 0,000000000040
-6,4 0,000000000000 0,000000000078
-6,3 0,000000000000 0,000000000149
-6,2 0,000000000000 0,000000000282
-6,1 0,000000000000 0,000000000530
-6,0 0,000000000000 0,000000000987
-5,9 0,000000000000 0,000000001818
-5,8 0,000000000000 0,000000003316
-5,7 0,000000010000 0,000000005990
-5,6 0,000000010000 0,000000010718
-5,5 0,000000020000 0,000000018990
-5,4 0,000000030000 0,000000033320
-5,3 0,000000060000 0,000000057901
-5,2 0,000000100000 0,000000099644
-5,1 0,000000170000 0,000000169827
-5,0 0,000000290000 0,000000286652
-4,9 0,000000480000 0,000000479183
-4,8 0,000000790000 0,000000793328
-4,7 0,000001300000 0,000001300808
-4,6 0,000002110000 0,000002112455
-4,5 0,000003400000 0,000003397673
-4,4 0,000005420000 0,000005412544
-4,3 0,000008550000 0,000008539905
-4,2 0,000013350000 0,000013345749
-4,1 0,000020670000 0,000020657507
-4,0 0,000031690000 0,000031671242
-3,9 0,000048120000 0,000048096344
-3,8 0,000072370000 0,000072348044
-3,7 0,000107830000 0,000107799733
-3,6 0,000159150000 0,000159108590
-3,5 0,000232670000 0,000232629079
-3,4 0,000336980000 0,000336929266
-3,3 0,000483480000 0,000483424142
-3,2 0,000687200000 0,000687137938
-3,1 0,000967670000 0,000967603213
-3,0 0,001349970000 0,001349898032
-2,9 0,001865880000 0,001865813300
-2,8 0,002555190000 0,002555130330
-2,7 0,003467020000 0,003466973803
-2,6 0,004661220000 0,004661188024
-2,5 0,006209680000 0,006209665326
-2,4 0,008197530000 0,008197535925
-2,3 0,010724080000 0,010724110022
-2,2 0,013903400000 0,013903447513
-2,1 0,017864360000 0,017864420563
-2,0 0,022750060000 0,022750131948
-1,9 0,028716490000 0,028716559816
-1,8 0,035930270000 0,035930319113
-1,7 0,044565430000 0,044565462759
-1,6 0,054799290000 0,054799291700
-1,5 0,066807230000 0,066807201269
-1,4 0,080756710000 0,080756659234
-1,3 0,096800550000 0,096800484586
-1,2 0,115069730000 0,115069670222
-1,1 0,135666100000 0,135666060946
-1,0 0,158655260000 0,158655253931
-0,9 0,184060090000 0,184060125347
-0,8 0,211855330000 0,211855398583
-0,7 0,241963580000 0,241963652223
-0,6 0,274253060000 0,274253117750
-0,5 0,308537530000 0,308537538726
-0,4 0,344578300000 0,344578258390
-0,3 0,382088640000 0,382088577811
-0,2 0,420740310000 0,420740290561
-0,1 0,460172100000 0,460172162723
0,0 0,500000000000 0,500000000000
0,1 0,539827900000 0,539827837277
0,2 0,579259690000 0,579259709439
0,3 0,617911360000 0,617911422189
0,4 0,655421700000 0,655421741610
0,5 0,691462470000 0,691462461274
0,6 0,725746940000 0,725746882250
0,7 0,758036420000 0,758036347777
0,8 0,788144670000 0,788144601417
0,9 0,815939910000 0,815939874653
1,0 0,841344740000 0,841344746069
1,1 0,864333900000 0,864333939054
1,2 0,884930270000 0,884930329778
1,3 0,903199450000 0,903199515414
1,4 0,919243290000 0,919243340766
1,5 0,933192770000 0,933192798731
1,6 0,945200710000 0,945200708300
1,7 0,955434570000 0,955434537241
1,8 0,964069730000 0,964069680887
1,9 0,971283510000 0,971283440184
2,0 0,977249940000 0,977249868052
2,1 0,982135640000 0,982135579437
2,2 0,986096600000 0,986096552487
2,3 0,989275920000 0,989275889978
2,4 0,991802470000 0,991802464075
2,5 0,993790320000 0,993790334674
2,6 0,995338780000 0,995338811976
2,7 0,996532980000 0,996533026197
2,8 0,997444810000 0,997444869670
2,9 0,998134120000 0,998134186700
3,0 0,998650030000 0,998650101968
3,1 0,999032330000 0,999032396787
3,2 0,999312800000 0,999312862062
3,3 0,999516520000 0,999516575858
3,4 0,999663020000 0,999663070734
3,5 0,999767330000 0,999767370921
3,6 0,999840850000 0,999840891410
3,7 0,999892170000 0,999892200267
3,8 0,999927630000 0,999927651956
3,9 0,999951880000 0,999951903656
4,0 0,999968310000 0,999968328758
4,1 0,999979330000 0,999979342493
4,2 0,999986650000 0,999986654251
4,3 0,999991450000 0,999991460095
4,4 0,999994580000 0,999994587456
4,5 0,999996600000 0,999996602327
4,6 0,999997890000 0,999997887545
4,7 0,999998700000 0,999998699192
4,8 0,999999210000 0,999999206672
4,9 0,999999520000 0,999999520817
5,0 0,999999710000 0,999999713348
5,1 0,999999830000 0,999999830173
5,2 0,999999900000 0,999999900356
5,3 0,999999940000 0,999999942099
5,4 0,999999970000 0,999999966680
5,5 0,999999980000 0,999999981010
5,6 0,999999990000 0,999999989282
5,7 0,999999990000 0,999999994010
5,8 1,000000000000 0,999999996684
5,9 1,000000000000 0,999999998182
6,0 1,000000000000 0,999999999013
6,1 1,000000000000 0,999999999470
6,2 1,000000000000 0,999999999718
6,3 1,000000000000 0,999999999851
6,4 1,000000000000 0,999999999922
6,5 1,000000000000 0,999999999960
6,6 1,000000000000 0,999999999979
6,7 1,000000000000 0,999999999990
6,8 1,000000000000 0,999999999995
6,9 1,000000000000 0,999999999997
7,0 1,000000000000 0,999999999999
Czy to wystarczy czy szukać dalej?
j_d
P.S. Chłopaki, jestem naprawdę pod wrażeniem
