Pomoc w zrozumieniu kodów błędów w MT4
Pokaż wyniki od 1 do 9 z 9

Wątek: Pomoc w zrozumieniu kodów błędów w MT4

  1. #1
    W testerze dostaję błąd wewnętrzny z kodem błędu 0 tylko w zamówieniach bocznych KUPUJ i nie sprzedawaj zamówień pobocznych.

    2 pytania:

    1. Co to jest błąd wewnętrzny związany z kodem błędu 0, który uważałem za błąd?

    2. Dlaczego otrzymuję ten błąd tylko przy zamówieniach z zakupami?

    Konkretny wydrukowany wynik to: Błąd podczas modyfikacji stopu i TP zamówienia zakupu !!! Kod błędu: 0 błąd wewnętrzny
    co odpowiada pierwszej modyfikacji. O ile mogę powiedzieć, kod strony kupna jest poprawny.
    Oto kod użyty dla poniższej funkcji ... kod może wydawać się zredukowany, jednak ma na celu upewnienie się, że twarde przystanki i twarde tps są wysyłane i wysyłane po tym, jak zamówienie zostało wypełnione dla brokerów typu ecnSTP.


    Wstawiony kod void set_stop_tp () {int totalorders = OrdersTotal (); for (int i = totalorders-1; igt; = 0; i--) {if (! OrderSelect (i, SELECT_BY_POS)) {Print (TimeToStr (TimeCurrent (), TIME_SECONDS), CHECK Funkcja gt;, __FUNCTION__, !! !!!, Error code =, GetLastError ()); } int result; int sprawdzić; {//Modyfikuj Stop i TP na serwerze, jeśli nie podczas Wprowadzania Zamówienia, jeśli (((OrderStopLoss () == 0) || (OrderTakeProfit () == 0)) (OrdersTotal () gt; 0) (UseHardStop == true) ) {RefreshRates ();/Zmodyfikuj zarówno SL, jak i TP, jeśli nie zostały jeszcze ustawione, jeśli ((OrderType () == OP_BUY) (OrdersTotal () gt; 0) (OrderSymbol () == Trade) ((OrderStopLoss () == 0) (OrderTakeProfit ( ) == 0))) result = OrderModify (OrderTicket (), OrderOpenPrice (), OrderOpenPrice () - HardStop, OrderOpenPrice () HardTP, 0,0); check = GetLastError (); if (check! = 0) {Print (Błąd podczas modyfikacji stopu i TP zamówienia zakupu !!! Kod błędu:, GetLastError (),, ErrorDescription (check)); } if ((OrderType () == OP_SELL) (OrdersTotal () gt; 0) (OrderSymbol () == Trade) ((OrderStopLoss () == 0) (OrderTakeProfit () == 0))) result = OrderModify ( OrderTicket (), OrderOpenPrice (), OrderOpenPrice () HardStop, OrderOpenPrice () - HardTP, 0,0); check = GetLastError (); if (check! = 0) {Print (Błąd podczas modyfikacji stopu i TP zamówienia sprzedaży !!! Kod błędu:, GetLastError (),, ErrorDescription (check)); }/Modyfikuj TP tylko jeśli nie jest ustawione, jeśli ((OrderType () == OP_BUY) (OrdersTotal () gt; 0) (OrderSymbol () == Trade) ((OrderStopLoss ()! = 0) (OrderTakeProfit () = = 0))) result = OrderModify (OrderTicket (), OrderOpenPrice (), OrderStopLoss (), OrderOpenPrice () HardTP, 0,0); check = GetLastError (); if (check! = 0) {Print (Błąd podczas modyfikacji TP zamówienia zakupu !!! Kod błędu:, GetLastError (),, ErrorDescription (check)); } if ((OrderType () == OP_SELL) (OrdersTotal () gt; 0) (OrderSymbol () == Trade) ((OrderStopLoss ()! = 0) (OrderTakeProfit () == 0))) result = OrderModify ( OrderTicket (), OrderOpenPrice (), OrderStopLoss (), OrderOpenPrice () - HardTP, 0,0); check = GetLastError (); if (check! = 0) {Print (Błąd podczas modyfikacji TP zamówienia sprzedaży !!! Kod błędu:, GetLastError (),, ErrorDescription (check)); }/Modyfikuj SL tylko jeśli nie jest ustawione, jeśli ((OrderType () == OP_BUY) (OrdersTotal () gt; 0) (OrderSymbol () == Trade) ((OrderStopLoss () == 0) (OrderTakeProfit ()! = 0))) result = OrderModify (OrderTicket (), OrderOpenPrice (), OrderOpenPrice () - HardStop, OrderTakeProfit (), 0,0); check = GetLastError (); if (check! = 0) {Print (Błąd podczas modyfikacji Stop of Buy Order !!! Kod błędu:, GetLastError (),, ErrorDescription (check)); } if ((OrderType () == OP_SELL) (OrdersTotal () gt; 0) (OrderSymbol () == Trade) ((OrderStopLoss () == 0) (OrderTakeProfit ()! = 0))) result = OrderModify ( OrderTicket (), OrderOpenPrice (), OrderOpenPrice () HardStop, OrderTakeProfit (), 0,0); check = GetLastError (); if (check! = 0) {Print (Błąd podczas modyfikacji Stop of Sell Order !!! Kod błędu:, GetLastError (),, ErrorDescription (check)); }}

    Kod przesyłany poza polem kodu FF:
    *****************************

    void set_stop_tp ()
    {
    int totalorders = OrdersTotal ();
    for (int i = totalorders-1; igt; = 0; i--)
    {
    if (! OrderSelect (i, SELECT_BY_POS)) {
    Drukuj (TimeToStr (TimeCurrent (), TIME_SECONDS), CHECK Funkcja gt;, __FUNCTION__, !!!!!, Error code =, GetLastError ()); }
    int wynik;
    int sprawdzić;
    {

    //Zmodyfikuj Stop i TP na serwerze, jeśli nie podczas wprowadzania Zamówienia
    if (((OrderStopLoss () == 0) || (OrderTakeProfit () == 0)) (OrdersTotal () gt; 0) (UseHardStop == true)) {RefreshRates ();
    //Zmodyfikuj zarówno SL, jak i TP, jeśli obie nie zostały jeszcze ustawione
    if ((OrderType () == OP_BUY) (OrdersTotal () gt; 0) (OrderSymbol () == Trade) ((OrderStopLoss () == 0) (OrderTakeProfit () == 0)))
    result = OrderModify (OrderTicket (), OrderOpenPrice (), OrderOpenPrice () - HardStop, OrderOpenPrice () HardTP, 0,0);
    check = GetLastError ();
    if (check! = 0) {Print (Błąd podczas modyfikacji stopu i TP zamówienia zakupu !!! Kod błędu:, GetLastError (),, ErrorDescription (check)); }

    if ((OrderType () == OP_SELL) (OrdersTotal () gt; 0) (OrderSymbol () == Trade) ((OrderStopLoss () == 0) (OrderTakeProfit () == 0)))
    result = OrderModify (OrderTicket (), OrderOpenPrice (), OrderOpenPrice () HardStop, OrderOpenPrice () - HardTP, 0,0);
    check = GetLastError ();
    if (check! = 0) {Print (Błąd podczas modyfikacji stopu i TP zamówienia sprzedaży !!! Kod błędu:, GetLastError (),, ErrorDescription (check)); }

    //Modyfikuj TP tylko, jeśli jeszcze nie zostało ustawione
    if ((OrderType () == OP_BUY) (OrdersTotal () gt; 0) (OrderSymbol () == Trade) ((OrderStopLoss ()! = 0) (OrderTakeProfit () == 0)))
    result = OrderModify (OrderTicket (), OrderOpenPrice (), OrderStopLoss (), OrderOpenPrice () HardTP, 0,0);
    check = GetLastError ();
    if (check! = 0) {Print (Błąd podczas modyfikacji TP zamówienia zakupu !!! Kod błędu:, GetLastError (),, ErrorDescription (check)); }

    if ((OrderType () == OP_SELL) (OrdersTotal () gt; 0) (OrderSymbol () == Trade) ((OrderStopLoss ()! = 0) (OrderTakeProfit () == 0)))
    result = OrderModify (OrderTicket (), OrderOpenPrice (), OrderStopLoss (), OrderOpenPrice () - HardTP, 0,0);
    check = GetLastError ();
    if (check! = 0) {Print (Błąd podczas modyfikacji TP zamówienia sprzedaży !!! Kod błędu:, GetLastError (),, ErrorDescription (check)); }

    //Modyfikuj SL tylko, jeśli nie jest jeszcze ustawione
    if ((OrderType () == OP_BUY) (OrdersTotal () gt; 0) (OrderSymbol () == Trade) ((OrderStopLoss () == 0) (OrderTakeProfit ()! = 0)))
    result = OrderModify (OrderTicket (), OrderOpenPrice (), OrderOpenPrice () - HardStop, OrderTakeProfit (), 0,0);
    check = GetLastError ();
    if (check! = 0) {Print (Błąd podczas modyfikacji Stop of Buy Order !!! Kod błędu:, GetLastError (),, ErrorDescription (check)); }

    if ((OrderType () == OP_SELL) (OrdersTotal () gt; 0) (OrderSymbol () == Trade) ((OrderStopLoss () == 0) (OrderTakeProfit ()! = 0)))
    result = OrderModify (OrderTicket (), OrderOpenPrice (), OrderOpenPrice () HardStop, OrderTakeProfit (), 0,0);
    check = GetLastError ();
    if (check! = 0) {Print (Błąd podczas modyfikacji Stop of Sell Order !!! Kod błędu:, GetLastError (),, ErrorDescription (check)); }
    }

  2. #2
    Nie mogę mówić za wszystkich, może dlatego, że mam mały ekran komputera. Ale dla mnie próba odczytania twojego kodu wymaga dużego przewijania od lewej do prawej iz powrotem. Z przewijaniem nie mogę wykonać kodu. Czy ktoś jeszcze ma ten problem?

  3. #3

    Cytat Zamieszczone przez ;
    Nie mogę mówić za wszystkich, może dlatego, że mam mały ekran komputera. Ale dla mnie próba odczytania twojego kodu wymaga dużego przewijania od lewej do prawej iz powrotem. Z przewijaniem nie mogę wykonać kodu. Czy ktoś jeszcze ma ten problem?
    Myślę, że to problem z polem kodu FF. Mam ten sam problem. Publikuje ponownie powyżej.

  4. #4
    czasem logika kodu jest dziwna ... MT4 jest czasami naprawdę dziwna ... Zmieniłem jedną linię kodu i wyeliminowałem zbędne linie, i generowałem błąd więcej razy ... Zmieniłem ten sam wiersz kodu i KEPT nadmiarowe linie i Kup błąd strony zniknął. void set_stop_tp () {int totalorders = OrdersTotal (); for (int i = totalorders-1; igt; = 0; i--) {if (! OrderSelect (i, SELECT_BY_POS)) {Print (TimeToStr (TimeCurrent (), TIME_ SECONDS), CHECK Funkcja gt;, __FUNCTION__,! !!!!, kod błędu =, GetLastError ()); } int result; int check = GetLastError (); ------ gt; gt; gt; gt; zmieniono i dodano = do GetLastError () {//Modyfikuj Stop i TP na Serwerze, jeśli nie podczas Wprowadzania Zamówienia, jeśli (((OrderStopLoss () == 0) || (OrderTakeProfit () == 0)) (OrdersTotal () gt ; 0) (UseHardStop == true)) {RefreshRates ();/Zmodyfikuj zarówno SL, jak i TP, jeśli nie zostały jeszcze ustawione, jeśli ((OrderType () == OP_BUY) (OrdersTotal () gt; 0) (OrderSymbol () == Trade) ((OrderStopLoss () == 0) (OrderTakeProfit ( ) == 0))) result = OrderModify (OrderTicket (), OrderOpen Price (), OrderOpenPrice () - HardStop, OrderOpenPrice () HardTP, 0, 0); check = GetLastError (); ------- gt; gt; gt; gt; Zatrzymano redundant = do GetLastErrors () we wszystkich modyfikacjach, jeśli (check! = 0) {Print (błąd podczas modyfikowania Stop i TP Order Order !!! Kod błędu:, GetLastError (),, ErrorDescription (check)); } kod błędu na stronie tylko zniknął, nie wiem, dlaczego reduny jest wymagany, ale działa teraz czysto.

  5. #5

    Cytat Zamieszczone przez ;
    czasem logika kodu jest dziwna ... MT4 jest czasami naprawdę dziwna ... Zmieniłem jedną linię kodu i wyeliminowałem zbędne linie, i generowałem błąd więcej razy ... Zmieniłem ten sam wiersz kodu i KEPT nadmiarowe linie i Kup błąd strony zniknął. void set_stop_tp () {int totalorders = OrdersTotal (); for (int i = totalorders-1; igt; = 0; i--) {if (! OrderSelect (i, SELECT_BY_POS)) {Print (TimeToStr (TimeCurrent (), TIME_ SECONDS), CHECK Funkcja gt;, __FUNCTION__,! !!!!, kod błędu =, GetLastError ()); } int result; int check = GetLastError (); ...
    Pipologist - Niestety nie opublikowałeś całej funkcji, więc nie jestem do końca pewien, dlaczego masz ten otwarty nawias klamrowy: if (! OrderSelect (i, SELECT_BY_POS)) {Print (TimeToStr (TimeCurrent (), TIME_SECONDS), funkcja CHECK gt ;, __FUNCTION__, !!!!!, kod błędu =, GetLastError ()); } int result; int sprawdzić; {oprócz niektórych reduny przy wielokrotnym użyciu tego bloku: OrdersTotal () gt; 0) (OrderSymbol () == Trade) nie określiłeś, czy przystanki są ustawione, podejrzewam, że nie są. Dodałbym dodatkowe informacje do instrukcji Print () nie tylko o tym, który z różnych warunków wystąpił błąd, ale jaki jest wynik zatrzymanych obliczeń: na przykład, jaki jest wynik OrderOpenPrice () HardTP, jeśli HardTP jest równy 50 na przykład i OrderOpenPrice () = 1,536 wynik będzie 51,536

  6. #6
    Zmodyfikowałem twój kod, aby ułatwić czytanie (przynajmniej dla mnie) Wstawiony kod void set_stop_tp () {int check; int totalorders = OrdersTotal (); for (int i = totalorders-1; igt; = 0; i--) {if (! OrderSelect (i, SELECT_BY_POS)) {Print (TimeToStr (TimeCurrent (), TIME_SECONDS), CHECK Funkcja gt;, __ FUNCTION__, !! !!!, Error code =, GetLastError ()); } else if (OrderSymbol () == Trade) {//Modyfikuj Stop i TP na Serwerze, jeśli nie podczas Wprowadzania Zamówienia, jeśli ((OrderStopLoss () == 0 || OrderTakeProfit () == 0) UseHardStop) {//Modyfikuj oba SL i TP, jeśli nie zostały jeszcze ustawione, jeśli (OrderType () == OP_BUY OrderStopLoss () == 0 OrderTakeProfit () == 0) jeśli (! OrderModify (OrderTakeProfit () = OrderOpenPrice (), OrderOpenPrice () - HardStop, OrderOpenPrice ( ) HardTP, 0,0)) {check = GetLastError (); Drukuj (błąd podczas modyfikacji stopu i TP zamówienia zakupu !!! Kod błędu:, sprawdź,, ErrorDescription (check)); } if (OrderType () == OP_SELL OrderStopLoss () == 0 OrderTakeProfit () == 0) jeśli (! OrderModify (OrderTicket (), OrderOpenPrice (), OrderOpenPrice () HardStop, OrderOpenPrice () - HardTP, 0,0 )) {check = GetLastError (); Drukuj (błąd podczas modyfikacji stopu i TP zamówienia sprzedaży !!! Kod błędu:, sprawdź,, ErrorDescription (check)); }/Modyfikuj TP tylko, jeśli nie jest ustawione, jeśli (OrderType () == OP_BUY OrderStopLoss ()! = 0 OrderTakeProfit () == 0) if (! OrderModify (OrderTicket (), OrderOpenPrice (), OrderStopLoss (), OrderOpenPrice ( ) HardTP, 0,0)) {check = GetLastError (); Drukuj (błąd podczas modyfikacji TP zamówienia zakupu !!! Kod błędu:, sprawdź,, ErrorDescription (check)); } if (OrderType () == OP_SELL OrderStopLoss ()! = 0 OrderTakeProfit () == 0) jeśli (! OrderModify (OrderTakeProfit (), OrderOpenPrice (), OrderStopLoss (), OrderOpenPrice () - HardTP, 0,0)) {check = GetLastError (); Drukuj (błąd podczas modyfikacji TP zamówienia sprzedaży !!! Kod błędu:, sprawdź,, ErrorDescription (check)); }/Modyfikuj SL tylko jeśli nie jest ustawione, jeśli (OrderType () == OP_BUY OrderStopLoss () == 0 OrderTakeProfit ()! = 0) if (! OrderModify (OrderTicket (), OrderOpenPrice (), OrderOpenPrice () - HardStop, OrderTakeProfit (), 0,0)) {check = GetLastError (); Drukuj (błąd podczas modyfikacji Stop zamówienia) Kod błędu:, sprawdź,, ErrorDescription (check)); } if (OrderType () == OP_SELL OrderStopLoss () == 0 OrderTakeProfit ()! = 0) if (! OrderModify (OrderTakeProfit ()! OrderOpenPrice (), OrderOpenPrice () HardStop, OrderTakeProfit (), 0,0)) {check = GetLastError (); Drukuj (błąd podczas modyfikacji zatrzymania zlecenia sprzedaży !!!Kod błędu:, check,, ErrorDescription (check)); }}}}} Jak wspomniano cyber 1, nie ma potrzeby powtarzania sprawdzeń OrdersTotalgt; 0, ponieważ pętla nie zostanie wykonana, jeśli nie ma otwartych zamówień. Przesunąłem OrderSymbol () == Handel, ponieważ trzeba go tylko raz sprawdzić. Używasz wyników = OrderModify (OrderTicket (), OrderOpenPrice (), OrderOpenPrice () - HardStop, OrderOpenPrice () HardTP, 0,0); ale w rzeczywistości nie sprawdzasz wartości. Ostatni błąd może pochodzić z dowolnego miejsca w kodzie, ponieważ nie zależy od tego, czy modyfikacja się nie powiedzie, czy nie. Również w twoim druku korzystasz z GetLastError (). When check = GetLastError (); jest wykonywany, GetLastError () jest resetowany do 0. Oznacza to, że kod błędu zostanie wydrukowany jako 0, niezależnie od tego, jaki był błąd. Zmodyfikowałem print, aby użyć check zamiast GetLastError () Zwróć uwagę, że zmodyfikowałem kod, aby sprawdzić błąd tylko, jeśli OrderModify Fails

  7. #7

    Cytat Zamieszczone przez ;
    {quote} - Niestety nie opublikowałeś całej funkcji, więc nie jestem do końca pewien, dlaczego masz ten otwarty nawias klamrowy: if (! OrderSelect (i, SELECT_BY_POS)) {Print (TimeToStr (TimeCurrent (), TIME_SECONDS), SPRAWDŹ funkcję gt ;, __FUNCTION__, !!!!!, kod błędu =, GetLastError ()); } int result; int sprawdzić; {oprócz niektórych reduny przy wielokrotnym użyciu tego bloku: OrdersTotal () gt; 0) (OrderSymbol () == Trade) nie określiłeś, czy przystanki są ustawione, podejrzewam, że nie są. Dodałbym dodatkowe informacje ...
    Dziękuję ... otwarty nawias zamyka się później, nie pokazałem reszty funkcji ryzyka mgmt, ponieważ niektóre inne algos związane z nim są zastrzeżone. Nie testowałem przez usunięcie nadmiarowego OrdersTotal () gt; 0) (OrderSymbol () == Trade), jak sugerowaliście Ty i Gumrai, jednak, jak ostatnio stwierdziłem, testuje się doskonale teraz, nawet z nadmiarowym OrdersTotal () gt; 0) (OrderSymbol () == Trade) Jeśli chodzi o wartości dla HardTP, HardSL, są w porządku. Dziękuję Ci.

  8. #8

    Cytat Zamieszczone przez ;
    Również w twoim druku korzystasz z GetLastError (). When check = GetLastError (); jest wykonywany, GetLastError () jest resetowany do 0. Oznacza to, że kod błędu zostanie wydrukowany jako 0, niezależnie od tego, jaki był błąd. Zmodyfikowałem print, aby użyć check zamiast GetLastError () Zwróć uwagę, że zmodyfikowałem kod, aby sprawdzić błąd tylko, jeśli OrderModify Fails
    To było prawdopodobnie częścią pierwotnego problemu. Dziękuję Ci.

  9. #9

    Cytat Zamieszczone przez ;
    Zmodyfikowałem twój kod, aby ułatwić czytanie (przynajmniej dla mnie)
    Nie testowałem przez usunięcie nadmiarowego OrdersTotal () gt; 0) (OrderSymbol () == Trade), jak sugerowaliście Ty i Cyber1, jak ostatnio stwierdziłem, testuje się doskonale teraz, nawet z redundantnymi OrdersTotal () gt; 0) (OrderSymbol () == Trade) Jeśli chodzi o wartości dla HardTP, HardSL, są w porządku. Dziękuję Ci.

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.