Wszelkie wskazówki dotyczące szybszego wykonywania EA?
Strona 1 z 2 12 OstatniOstatni
Pokaż wyniki od 1 do 10 z 12

Wątek: Wszelkie wskazówki dotyczące szybszego wykonywania EA?

  1. #1
    Cześć,

    Zastanawiam się, czy ktoś mógłby udzielić wskazówek lub porad, jak przyspieszyć wykonywanie kodu. Nie próbuję budować HFT, więc wykonanie w czasie rzeczywistym jest wtórne (ale oczywiście zawsze jest to bonus). Zamiast tego próbuję zmniejszyć czas testowania egii między kolejnymi przejściami.
    Będzie to miało oczywiste zalety dla wykorzystania czasu podczas uruchamiania dużej optymalizacji (tak jak ja).

    Pracuję w środowisku MetaTrader, ale przyjmuję z zadowoleniem rozmowę z dowolnym językiem, z którego się korzysta.
    Mam następujące pomysły, które już wdrażamy:

    MetaTrader 5 (64-bitowy i używa wszystkich rdzeni)
    Mocniejszy procesor (w ramach jednego budżetu)
    Zastosowanie liczb całkowitych
    Programowanie obiektowe (nie jestem w 100% na tym, ale wydaje się logiczne, że wiele mniejszych plików .mqh o długości mniejszej będzie szybsze niż jeden gigantyczny plik .mq5 - myśli?)

    Jakieś inne sugestie?

    Dziękuję bardzo!

  2. #2

    Cytat Zamieszczone przez ;
    Programowanie obiektowe (nie jestem w 100% na tym, ale wydaje się logiczne, że wiele mniejszych plików .mqh o długości mniejszej będzie szybsze niż jeden gigantyczny plik .mq5 - myśli?)
    Prawdopodobnie nie. Nie tak działają komputery ... Kod i tak zostanie skompilowany.

  3. #3
    Dziękuję za wyjaśnienie.
    Nie mam żadnego wykształcenia w komputerach, ale od jakiegoś czasu uczę się programowania, więc brakuje dużych rozdziałów wiedzy o komputerach. Przepraszam, jeśli to był oczywisty błąd. Szuka dobrych nawyków do nauki, chętnych do nauki.

  4. #4
    Cytat Zamieszczone przez ;
    Dziękuję za wyjaśnienie.
    Nie mam żadnego wykształcenia w komputerach, ale od jakiegoś czasu uczę się programowania, więc brakuje dużych rozdziałów wiedzy o komputerach. Przepraszam, jeśli to był oczywisty błąd. Szuka dobrych nawyków do nauki, chętnych do nauki.
    Zwiększenie mocy obliczeniowej jest ostatnim środkiem, który powinieneś podjąć. Prawdziwy spadek obliczeń polega na optymalizacji algorytmów. Efekt optymalizacji algorytmu można zobaczyć naprawdę ładnie, jeśli spróbujesz obliczyć liczbę iteratywną Fibonacciego a rekursywną. Jedna z nich zajmuje minuty drugiej tylko milisekundy. </P> Edytor mql45 ma wbudowane narzędzie do profilowania, które powinno dać ci podstawową wiedzę o tym, która część algorytmu zajmuje dużo czasu. Jak często wykonuje się Twój kod? Czy naprawdę ważne jest, aby każdy tik był symulowany, czy wystarczy sprawdzić tylko otwarcie baru? Zapewni to xxx% krotny spadek czasu analizy historycznej. Czy są duże fragmenty kodu, których nie trzeba wykonywać wielokrotnie? Czy możesz napisać po prostu, jeśli sprawdzić i lekceważyć wiele obliczeń w każdym cyklu? Mikro-optymalizacja (jeśli naprawdę chcesz, aby ostatni bit mógł działać), jak odwzorowywanie często używanych wartości zamiast ich wielokrotnego obliczania. Zmienne warunkowe pętli buforowej. Myślę, że zmienne lokalne są nieco szybsze, a także zasięg globalny. Więc możesz zaoszczędzić ułamek sekundy tam. Korzystanie z przesunięcia bitowego zamiast dzielenia. Staraj się unikać modulo itp. .... Ale to jest dla ciebie rodzaj przesady.

  5. #5
    Cześć, Z tego, co wiem: wielordzeniowy MT5 może być OK, ale musisz odpowiednio zaprogramować. Oznacza to oddzielenie kodu w kilku wątkach, które mogą być wykonywane jednocześnie. Bardziej wydajny procesor, tak, który przyspieszy twój czas wykonania, ale wtedy, jeśli twój czas transmisji (internet) jest wolny, co nie ma sensu. Używanie liczb całkowitych? Nie rozumiem tego, chcesz przekonwertować podwójne na liczby całkowite i na odwrót? Czas konwersji spowoduje utratę korzyści z ich używania, chyba że wykonasz naprawdę ciężkie obliczenia. OOP, nie, który pozwala tylko na reorganizację kodu, wynikowy plik binarny nie jest szybszy niż kod proceduralny. A długość plików nagłówkowych lub posiadanie wielu plików nagłówkowych zamiast jednego dużego nie ma nic wspólnego z szybkością wykonania. BT

  6. #6
    Cytat Zamieszczone przez ;
    Dziękuję za wyjaśnienie.
    Nie mam żadnego wykształcenia w komputerach, ale od jakiegoś czasu uczę się programowania, więc brakuje dużych rozdziałów wiedzy o komputerach. Przepraszam, jeśli to był oczywisty błąd. Szuka dobrych nawyków do nauki, chętnych do nauki.
    Nie wiem zbyt wiele o MQL, właśnie dostałem się do tego w weekend. Mam jednak dużo wiedzy na temat innych języków. Chodzi o to, że języki programowania nie są tworzone dla komputerów, są stworzone dla ludzi. Komputer odczytuje przetłumaczoną wersję - generowaną przez kompilator. Wyniki kompilatorów nie przypominają zbytnio tego, co widać w edytorze. Kompilator będzie się często zmieniał (optymalizował), włączając w to wstawianie kodu, co z kolei spowoduje, że kod będzie jeszcze większy, a nie mniejszy. Ogólna wskazówka: Nie idź na mikrooptymalizację, dopóki twój kod naprawdę nie zadziała. To a czasu. Rozwiązuj ogólną strukturę programu, logikę i być może Twoje obliczenia (jeśli w dużej mierze polegasz na tych). Wystarczy spojrzeć na strukturę EA, na przykład, jest całkiem jasne, że zbyt wiele (niepotrzebnych) obliczeń w OnTick () jest złym pomysłem, ponieważ ta rutyna jest nazywana bardzo często.

  7. #7

    Cytat Zamieszczone przez ;
    {quote} Zwiększenie mocy obliczeniowej to ostatni środek, który powinieneś podjąć. Prawdziwy spadek obliczeń polega na optymalizacji algorytmów. Efekt optymalizacji algorytmu można zobaczyć naprawdę ładnie, jeśli spróbujesz obliczyć liczbę iteratywną Fibonacciego a rekursywną. Jeden z nich zajmuje minutę drugiego tylko w milisekundach. Edytor mql45 ma wbudowane narzędzie do profilowania, które powinno dać ci podstawową wiedzę na temat tego, która część algorytmu zajmuje dużo czasu. Jak często wykonuje się Twój kod? Czy to naprawdę ważne, aby każdy tykot ...
    Cześć Kilian, dzięki za odpowiedź. Iteracyjny a rekursywny Fibonacci: Nigdy o tym nie słyszałem i jest to coś, o czym będę dalej czytał. Znalazłem trochę rzeczy na stackoverflow. Narzędzie do profilowania edytora mql5: Nie jest to coś, czego użyłem wcześniej, znalazłem kilka artykułów na ten temat i przeczytałem o nim teraz. Oczywiste rozwiązanie, dziękuję! OnTick: Byłem tego świadomy i starałem się zachować większość zadań OnBar, ale tak, jednym z rodzajów handlu jest OnTick, który będzie jadł w czasie przetwarzania. To wygląda jak nisko wiszący owoc. Fragmenty kodu, które są wykonywane w kółko ?: Nie jest to obszar, który uważałem za bardzo i powinienem się przyjrzeć. Myślę, że masz rację, powinna tu być jakaś dobra skuteczność. Mikro optymalizacja: Uwielbiam sugestie i jeśli zajdę tak daleko, na pewno spróbuję czegoś (niezależnie od tego, co jest dobre dla mojej nauki). Bardzo doceniane.

  8. #8

    Cytat Zamieszczone przez ;
    Cześć, Z tego, co wiem: wielordzeniowy MT5 może być OK, ale musisz odpowiednio zaprogramować. Oznacza to oddzielenie kodu w kilku wątkach, które mogą być wykonywane jednocześnie. Bardziej wydajny procesor, tak, który przyspieszy twój czas wykonania, ale wtedy, jeśli twój czas transmisji (internet) jest wolny, co nie ma sensu. Używanie liczb całkowitych? Nie rozumiem tego, chcesz przekonwertować podwójne na liczby całkowite i na odwrót? Czas konwersji spowoduje utratę korzyści z ich używania, chyba że wykonasz naprawdę ciężkie obliczenia. OOP, nie, to pozwala tylko na reorganizację ...
    Hej Broketrader, wielordzeniowy MT5: Nigdy nie zdawałem sobie sprawy, że możesz oddzielić swój kod na różne takie wątki. To może zrobić ogromną różnicę. Obecnie korzystasz tylko z funkcji wielordzeniowej przy uruchomieniu optymalizatora. (co jest epicką różnicą w stosunku do mt4). Procesor: szukam obecnie możliwości nabycia nowej maszyny. Nowe układy Haswell wyglądają całkiem zgrabnie. Szybkość połączenia internetowego nie jest problemem. Po prostu skupiam się na wykonywaniu kodu. Liczby całkowite: Mogę być całkowicie błędny, ale z moim ograniczonym zrozumieniem Liczby całkowite są łatwiejsze do obliczenia przez maszynę niż wymówienie Podwójności. na przykład działają tylko w pipsach lub _ punktach podczas obliczania rzeczy takich jak przystanki i cele. Nie interesuje się konwersją liczb całkowitych i podwójnych tam iz powrotem. int StopLoss = 300;/StopLoss w _Points Nie można zrobić wszędzie, tylko tam, gdzie pojawia się szansa. Dziękuję za wszystkie uwagi, które są bardzo mile widziane.

  9. #9

    Cytat Zamieszczone przez ;
    {quote} Nie wiem zbyt wiele o MQL, właśnie dostałem się do tego w weekend. Mam jednak dużo wiedzy na temat innych języków. Chodzi o to, że języki programowania nie są tworzone dla komputerów, są stworzone dla ludzi. Komputer odczytuje przetłumaczoną wersję - generowaną przez kompilator. Wyniki kompilatorów nie przypominają zbytnio tego, co widać w edytorze. Kompilator będzie się często zmieniał (optymalizował), włączając w to wstawianie kodu, co z kolei spowoduje, że kod będzie jeszcze większy, a nie mniejszy. Ogólna wskazówka: Nie idź na mikrooptymalizację ...
    Dzięki za ogólne porady. Po prostu to zrobię. Zmierz się z większym problemem (struktura, logika i obliczenia), a następnie idź w dół do poziomu mikro. OnTick () wygląda na świetne miejsce do rozpoczęcia łatwego zdobywania zysków. Nowy w mql? Powodzenia w handlu! Jeśli znasz ogólnie programowanie, powinieneś dość szybko przerzucić się przez mql. Mql4 jest z pewnością najlepszym wyborem, ale jeśli znasz swoje rzeczy, przejdź od razu do mql5. Korzyści z testowania dają jakąkolwiek korzyść, którą może zaoferować mql4. Jest zmęczonym starym koniem i wszyscy go chłostają.

  10. #10
    Oglądam menedżera zadań systemu Windows, widziałem, że mt4 może maksymalnie wykorzystać 25 CPU, a następnie zablokował mt4. Jak zwiększyć% wykorzystania procesora dla mt4, aby mt4 działało szybko, nie zostało zablokowane?

Uprawnienia umieszczania postów

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Używamy cookies
Używamy cookies, aby jak najlepiej dostosować witrynę do Twoich potrzeb. Kontynuowanie przeglądania tej strony, oznacza zgodę na używanie plików cookies. Aby uzyskać więcej informacji zapoznaj się z naszą Polityką Prywatności.