Kompilacja wiersza poleceń w MQL4 generuje nieprawidłowy EX4 (rozwiązany)
Strona 1 z 2 12 OstatniOstatni
Pokaż wyniki od 1 do 10 z 11

Wątek: Kompilacja wiersza poleceń w MQL4 generuje nieprawidłowy EX4 (rozwiązany)

  1. #1
    Hej,

    Używam MT4 Build 1090 i MetaEditor V5 Build 1601. Muszę automatycznie rekompilować niektóre wskaźniki MT4 co jakiś czas. Aby to zrobić, napisałem mały skrypt, który jest wywoływany okresowo za pomocą Windows Task Planner:
    Wstawiono kod @ wyloguj C: \ Program Files (x86) \ SomeBrokerName \ metaeditor.execompile:...\MetaQuotes\Terminal\...\ MQL4\Indiors\MyIndior.mq4log To działa dobrze do tej pory. Wyjście pliku dziennika mówi, że zostało skompilowane pomyślnie, 0 ostrzeżeń, 0 błędów. Jednak kiedy próbuję umieścić wskaźnik na wykresie, zdarza się tak często, że nie działa. Zamiast tego karta Eksperci pokazuje błąd:
    Wstawiony kod Nie można załadować C: \ ... \ AppData \ Roaming \ MetaQuotes \ Terminal \ ... \ MQL4 \ Indiors \ MyIndior.ex4 Więc muszę ponownie skompilować wskaźnik, a następnie zadziała. Czasami nie, i muszę przekompilować raz za razem, aż to zadziała.

    Próbowałem już na innym komputerze, innym systemie operacyjnym (Windows 7, Windows 10, ...). Ten sam wynik. Czasami działa, czasami nie.

    Czy masz pojęcie, co jest nie tak i dlaczego wydaje się, że tak często tworzy nieprawidłowy plik EX4? Czy jest coś, co mogę zrobić, aby uniknąć tego problemu?

    Z góry dziękuję.

  2. #2
    Czy używasz plików włączających? Jest też nowa wersja dla MT4 (terminal: build 1126, metaeditor: build 1861). Możesz go pobrać tutaj lub utworzyć konto demo na serwerze demonstracyjnym metaquotes i powinno ono zostać automatycznie zaktualizowane.

  3. #3
    Tak, używam plików włączających. Czy to powoduje problemy? Spróbuję nowej wersji. Dzięki za podpowiedź!

  4. #4
    Cytat Zamieszczone przez ;
    Tak, używam plików włączających. Czy to powoduje problemy? Spróbuję nowej wersji. Dzięki za podpowiedź!
    Tak. Musisz podać ścieżkę do plików dołączania. Wstawiony kod C: \ Program Files \ PlatformPlatform \ metaeditor64.exekompilacja: C: \ Program Files \ PlatformPlatform \ MQL5 \ Skryptyinclude: C: \ Program Files \ TradingPlatform 2 \ MQL5

  5. #5
    Hmm, mogę to wypróbować. Ale czy nie spowodowałoby to błędu kompilacji, jeśli nie może zlokalizować plików dołączanych?

  6. #6

    Cytat Zamieszczone przez ;
    Hmm, mogę to wypróbować. Ale czy nie spowodowałoby to błędu kompilacji, jeśli nie może zlokalizować plików dołączanych?
    Tak, powinien generować błędy, jeśli nie może znaleźć pliku mqh ...

  7. #7
    Obawiam się, że błędnie napisałeś początkową zmienną statyczną (w niektórych przypadkach). więc musisz go skompilować za każdym razem, gdy potrzebujesz go uruchomić.

  8. #8
    Cytat Zamieszczone przez ;
    {quote} Tak, powinien wygenerować błędy, jeśli nie może znaleźć pliku mqh ...
    Ok, ale tak nie jest. W pliku dziennika znajduje się 0 ostrzeżeń i 0 błędów i tworzy plik MyIndior.ex4. Ale problem polega na tym, że gdy chcę przypisać wskaźnik do wykresu, mówi ”Nie mogę załadować ... \ MyIndior.ex4” i ponownie rozpoczynam proces ponownej kompilacji, aż w końcu zadziała w pewnym momencie. Czasami muszę przekompilować go 2-3 razy, aż zadziała. Czasami działa po raz pierwszy. To mnie oszałamia. Wydaje się, że z jakiegoś powodu tworzy niepoprawny plik EX4. Jest to plik dziennika: wstawiony kod C: \ Projects \ 2018 \ 08 \ ... \ Compiler \ Data \ MyIndior_123456_20180930.mq4: information: Kompilowanie 'MyIndior_123456_20180930.mq4' C: \ Projects \ 2018 \ 08 \ ... \ Compiler \ Data \ Include \ MyIndior.mqh: information: W tym ”MyIndior.mqh” Wynik: 0 błędów, 0 ostrzeżeń, czas kompilacji: 207 ms. Ale kiedy umieściłem to na wykresie: Wstawiony kod 2018.08.29 23: 22: 58.074 nie można załadować ”C: \ Users \ ... \ AppData \ Roaming \ MetaQuotes \ Terminal \ ... \ MQL4 \ indiors \ MyIndior_123456_20180930.ex4” Wypróbowałem go również z najnowszymi kompilacjami MT4 i MetaEditor, sam wynik. Błąd nadal istnieje.

  9. #9

    Cytat Zamieszczone przez ;
    błędnie napisałeś początkową zmienną statyczną (w niektórych przypadkach).
    Co to znaczy? Używam niektórych zmiennych statycznych, tak. Ale są one następujące: Wstawiony kod void OnCalculate (...) {statyczny datetime _lastCheck = 0; datetime barTime = Czas # 91; 0 # 93 ;; if (barTime gt; _lastCheck) {_lastCheck = barTime; ...}} Jak już powiedziałem: często nawet nie ładuje się na wykres. Muszę przekompilować go kilka razy, a następnie działa za każdym razem. Również problem nie występuje, gdy ręcznie skompiluję go w MetaEditor. Wydaje się, że dzieje się tak tylko wtedy, gdy skompiluję go za pomocą wiersza poleceń.

  10. #10
    Cytat Zamieszczone przez ;
    Ok, znalazłem problem ...
    Proces jest nieco bardziej złożony. Kompilacja odbywa się na innym komputerze (Build Server). A po kompilacji przesyłam plik na serwer FTP i ściągam go tutaj na moim laptopie. I wydaje się, że podczas transferu FTP czasami coś idzie nie tak. Nie wiem, czy jest to tryb transferu (ASCII vs Binary), trzeba to sprawdzić. Porównałem skróty pliku EX4, który pobrałem tutaj, oraz pliki EX4 na serwerze budowania i są różne. Kiedy kopiuję plik EX4 bezpośrednio przez RDP ...
    O wiele łatwiej jest uruchomić MT w trybie przenośnym poza folderem synchronizacji w chmurze. Sprawdź mój wątek Vanilla MT4, ponieważ jest skrypt dołączony do automatycznego konfigurowania trybu przenośnego i terminali klonowaniadowiązania symbolicznego.

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.