Guarda come scaricare robot di trading gratuitamente
Ci trovi su Facebook!
Unisciti alla nostra fan page
Unisciti alla nostra fan page
Ti è piaciuto lo script? Provalo nel Terminale MetaTrader 5
- Visualizzazioni:
- 3892
- Valutazioni:
- Pubblicato:
- 2021.01.13 07:48
-
Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance
//+------------------------------------------------------------------+ //| ShellSort.mq5 | //| 2019-2021, dimitri pecheritsa | //| mql5.com/en/users/dmipec | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| shell sort - array sorting algorithm | //| cases: best: n log n, average: n^(4/3), worst: n^(3/2) | //| memory: 1, stable: no, method: insertion | //| note: small code size | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| shellsort, also known as shell sort or shell's method, is an | //|in-place comparison sort. it can be seen as either a | //|generalization of sorting by exchange (bubble sort) or sorting by | //|insertion (insertion sort). the method starts by sorting pairs of | //|elements far apart from each other, then progressively reducing | //|the gap between elements to be compared. by starting with far | //|apart elements, it can move some out-of-place elements into | //|position faster than a simple nearest neighbor exchange. donald | //|shell published the first version of this sort in 1959. the | //|running time of shellsort is heavily dependent on the gap | //|sequence it uses. for many practical variants, determining their | //|time complexity remains an open problem. | //| known complexities range from o(n^2) to o(n^(4/3)) and θ(n | //|log^2 n). this, combined with the fact that shellsort is | //|in-place, only needs a relatively small amount of code, and does | //|not require use of the call stack, makes it is useful in | //|situations where memory is at a premium, such as in embedded | //|systems and operating system kernels. | //| shellsort is not stable: it may change the relative order of | //|elements with equal values. it is an adaptive sorting algorithm | //|in that it executes faster when the input is partially sorted. | //| shellsort performs more operations and has higher cache miss | //|ratio than quicksort. however, since it can be implemented using | //|little code and does not use the call stack, some implementations | //|of the qsort function in the c standard library targeted at | //|embedded systems use it instead of quicksort. shellsort is, for | //|example, used in the uclibc library. for similar reasons, in the | //|past, shellsort was used in the linux kernel. | //| shellsort can also serve as a sub-algorithm of introspective | //|sort, to sort short subarrays and to prevent a slowdown when the | //|recursion depth exceeds a given limit. this principle is | //|employed, for instance, in the bzip2 compressor. | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| script program start function | //| a shell sort example. sort terminal symbols by the digits value | //+------------------------------------------------------------------+ #include <Mqh\Algorithms\ShellSort\ShellSort.mqh> #include <Mqh\Algorithms\ShellSort\Functions.mqh> void OnStart(void) { //--- load symbols from the terminal. they will be treated as the //items array by the sorter string symbols[]; SymbolsLoad(symbols); //--- create the keys array which contains the digits values for //each symbol from the symbols array, which is the basis for sorting int keys[]; SymbolKeysDigit(symbols,keys); //--- sort symbols by digits in accending order with the shell sort //algorithm ArraySort(keys,symbols,new CShellSort<int,string>); //--- check the result of sorting by printing a table of symbols SymbolsPrint(symbols); } //-------------------------------------------------------------------- // symbol | color | digits //-------------------------------------------------------------------- // .USTECHCash | clrPink | 1 // .DE30Cash | clrPink | 1 // .JP225Cash | clrPink | 1 // .US30Cash | clrPink | 1 // .US500Cash | clrPink | 1 // ATVI | clrPaleGoldenrod | 2 // NVDA | clrPaleGoldenrod | 2 // CSCO | clrPaleGoldenrod | 2 // ORCL | clrPaleGoldenrod | 2 // AMZN | clrPaleGoldenrod | 2 // UPS | clrPaleGoldenrod | 2 // NFLX | clrPaleGoldenrod | 2 // ADBE | clrPaleGoldenrod | 2 // SBUX | clrPaleGoldenrod | 2 // EBAY | clrPaleGoldenrod | 2 // TSLA | clrPaleGoldenrod | 2 // MCD | clrPaleGoldenrod | 2 // DIS | clrPaleGoldenrod | 2 // FOXA | clrPaleGoldenrod | 2 // NEM | clrPaleGoldenrod | 2 // JPM | clrPaleGoldenrod | 2 // BAC | clrPaleGoldenrod | 2 // C | clrPaleGoldenrod | 2 // WFC | clrPaleGoldenrod | 2 // V | clrPaleGoldenrod | 2 // GS | clrPaleGoldenrod | 2 // PYPL | clrPaleGoldenrod | 2 // PRU | clrPaleGoldenrod | 2 // BRK.B | clrPaleGoldenrod | 2 // AAPL | clrPaleGoldenrod | 2 // KO | clrPaleGoldenrod | 2 // PEP | clrPaleGoldenrod | 2 // PG | clrPaleGoldenrod | 2 // PM | clrPaleGoldenrod | 2 // NKE | clrPaleGoldenrod | 2 // GM | clrPaleGoldenrod | 2 // BTCUSD | clrMediumSpringGreen | 2 // ETHUSD | clrMediumSpringGreen | 2 // WMT | clrPaleGoldenrod | 2 // DAL | clrPaleGoldenrod | 2 // XOM | clrPaleGoldenrod | 2 // CVX | clrPaleGoldenrod | 2 // BRENT | clrPink | 2 // WTI | clrPink | 2 // BTCEUR | clrMediumSpringGreen | 2 // DSHUSD | clrMediumSpringGreen | 2 // LTCUSD | clrMediumSpringGreen | 2 // Crypto.Top | clrMediumSpringGreen | 2 // Crypto.ALT | clrMediumSpringGreen | 2 // GOOGL | clrPaleGoldenrod | 2 // FB | clrPaleGoldenrod | 2 // MSFT | clrPaleGoldenrod | 2 // IBM | clrPaleGoldenrod | 2 // VZ | clrPaleGoldenrod | 2 // INTC | clrPaleGoldenrod | 2 // HPE | clrPaleGoldenrod | 2 // EA | clrPaleGoldenrod | 2 // MMM | clrPaleGoldenrod | 2 // XBTUSD | clrMediumSpringGreen | 2 // ETHEUR | clrMediumSpringGreen | 2 // GE | clrPaleGoldenrod | 2 // PFE | clrPaleGoldenrod | 2 // LLY | clrPaleGoldenrod | 2 // CMCSA | clrPaleGoldenrod | 2 // JNJ | clrPaleGoldenrod | 2 // BA | clrPaleGoldenrod | 2 // CAT | clrPaleGoldenrod | 2 // NLMK.L | clrGold | 3 // SGGD.L | clrGold | 3 // FIVE.L | clrGold | 3 // SBER.L | clrGold | 3 // NVTK.L | clrGold | 3 // XAUUSD | clrKhaki | 3 // AUDJPY | clrHoneydew | 3 // CHFJPY | clrHoneydew | 3 // ROSN.L | clrGold | 3 // PLZL.L | clrGold | 3 // EOSUSD | clrMediumSpringGreen | 3 // MGNT.L | clrGold | 3 // EURJPY | clrHoneydew | 3 // LKOD.L | clrGold | 3 // NZDJPY | clrHoneydew | 3 // MNOD.L | clrGold | 3 // ATAD.L | clrGold | 3 // OGZD.L | clrGold | 3 // USDJPY | clrHoneydew | 3 // SVST.L | clrGold | 3 // GBPJPY | clrHoneydew | 3 // CADJPY | clrHoneydew | 3 // USDRUB | clrHoneydew | 4 // XRPUSD | clrMediumSpringGreen | 4 // EURCHF | clrHoneydew | 5 // AUDNZD | clrHoneydew | 5 // XAGUSD | clrKhaki | 5 // AUDUSD | clrHoneydew | 5 // EURGBP | clrHoneydew | 5 // GBPAUD | clrHoneydew | 5 // EURNZD | clrHoneydew | 5 // EURAUD | clrHoneydew | 5 // EURPLN | clrHoneydew | 5 // GBPUSD | clrHoneydew | 5 // GBPCHF | clrHoneydew | 5 // NZDCAD | clrHoneydew | 5 // NZDCHF | clrHoneydew | 5 // EURUSD | clrHoneydew | 5 // NZDUSD | clrHoneydew | 5 // USDCAD | clrHoneydew | 5 // USDCHF | clrHoneydew | 5 // GBPNZD | clrHoneydew | 5 // USDPLN | clrHoneydew | 5 // USDMXN | clrHoneydew | 5 // USDZAR | clrHoneydew | 5 // EURCAD | clrHoneydew | 5 // USDCNH | clrHoneydew | 5 // AUDCAD | clrHoneydew | 5 // AUDCHF | clrHoneydew | 5 // GBXUSD | clrPlum | 5 // LTCBTC | clrMediumSpringGreen | 5 // ETHBTC | clrMediumSpringGreen | 5 // CADCHF | clrHoneydew | 5 // GBPCAD | clrHoneydew | 5 // USDTRY | clrHoneydew | 5 //+------------------------------------------------------------------+
![Candle Pattern EA /test](https://c.mql5.com/i/code/expert.png)
This is a simple EA test code I made for adapting Candlepatterns.mqh
![heap sort - array sorting algorithm](https://c.mql5.com/i/code/library.png)
a much more efficient version of selection sort
![MQLUnit - Tiny Unit Tests Framework For Complex Expert Advisors](https://c.mql5.com/i/code/script.png)
This unit test frameworks eases the development of unit tests for more complex expert advisor programs. The MQL5 developer can test single components. The test framework starts the strategy tester so that there is test data available if required. I am using the framework to do test driven development (TDD) on my MQL5 programs.
![NoiseEliminationTechnology](https://c.mql5.com/i/code/indicator.png)
Published by John Ehlers in "Stocks & Commodities Dec. 2020" (16-18).