Pomoc przy kodowaniu zamówieńliczników dla EA
Pokaż wyniki od 1 do 2 z 2

Wątek: Pomoc przy kodowaniu zamówieńliczników dla EA

  1. #1
    Pozdrowienia!

    Myślę, że podążam za zwykłą historią. Nowość w MQL4, pewne tło kodowania (BASIC i HTML), bla, bla, bla, teraz próbuję swoich sił w pisaniu własnego EA.

    To nic specjalnego. Pracuję nad rozwiązaniem EMA EA. Jako, że jest to jedna z moich pierwszych, pomyślałem, że będę to proste. Tak więc EA działa w oparciu o otwarcie baru poniżej 20 EMA, a następnie zamknięcie nad linią. Następny pasek otwiera o 3 pipsy powyżej poprzedniego paska. Ponieważ jest to podstawowy EA, kolejność jest zamykana po uderzeniu w punkt TP lub SL, nie ma innego kodu do zamykania zlecenia.

    Oto problem. Pierwsza wersja, którą mam, otwiera zamówienie po każdym teście. Miło, gdy masz opłacalny handel, jest do bani, kiedy tego nie robisz. Dlatego w wersji 2 próbowałem dodać kod z innego EA i odkryłem, że teraz nie otwiera żadnych transakcji.

    Oto kod wersji 1 (przepraszam, nie wiem jak umieścić go w schludnym pudełku):

    int start ()
    {
    //----

    int cnt, total, ticket;


    double emaT = iMA (NULL, 0,20,0, MODE_EMA, PRICE_CLOSE, 0);
    podwójne MacdCurrent = iMACD (NULL, 0,12,26,9, PRICE_CLOSE, MODE_MAIN, 0);

    total = OrdersTotal ();
    jeśli (totallt; 1)


    bool buy = false;
    bool sell = false;

    if ((Ask == High [1] gt; 3 * Point) (Open [1] lt; emaT) (Zamknij [1] gt; emaT) (MacdCurrent gt; 0)) buy = true;
    if ((Low [1] == Bid ​​gt; 3 * Point) (emaT gt; Close [1]) (Open [1] gt; emaT) (MacdCurrent lt; 0)) sell = true;


    {
    jeśli (kup)


    ticket = OrderSend (Symbol (), OP_BUY, Partie, Ask, 0, Ask-StopLoss * Point, Ask TakeProfit * Point, Momo Trade, magicnumber, 0, Green);
    if (ticketgt; 0)

    if (OrderSelect (bilet, SELECT_BY_TICKET, MODE_TRADES))


    return (0);
    }

    {
    if (sprzedać)


    ticket = OrderSend (Symbol (), OP_SELL, Partie, Licytacja, 0, Licytacja StopLoss * Punkt, Bid-TakeProfit * Punkt, Momo Trade, magicnumber, 0, Czerwony);
    if (ticketgt; 0)

    if (OrderSelect (bilet, SELECT_BY_TICKET, MODE_TRADES))

    return (0);

    }

    return (0);
    }
    //----

    Wersja 2 jest taka sama, ale z tym kodem dodanym do licznika:

    orders = OrdersTotal ();
    dla (cnt = 0; cntlt; OrdersTotal (); cnt )

    {
    if (OrderSelect (cnt, SELECT_BY_POS))
    OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
    if (OrderSymbol () == Symbol ())
    {
    if (OrderType () == OP_BUY)



    Ponadto, podczas gdy wszyscy zwracają uwagę, to mój kod jest poprawny przy składaniu zamówienia na podstawie poprzedniego wysokiegoniskiego z kodem (Ask == High [1] gt; 3 * Point)?

    Z podziękowaniami!

  2. #2
    Cześć Skeebo Jest oczywisty błąd z załączaniem instrukcji If za pomocą nawiasów {}. na przykład porównaj to z twoim kodem: if (totallt; 1) {bool buy = false; bool sell = false; } mam nadzieję że to pomoże

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.