Wszystkie pytania dozwolone początkujących programistów

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
ninjaproject
Maniak
Maniak
Posty: 4944
Rejestracja: 30 lip 2019, 13:15

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: ninjaproject »

lxi pisze:
29 gru 2022, 17:37
Myślałem o tym, ale nazwy obiektów zmieniają się dynamicznie tzn. każda nowa strzałka na wykresie ma inną nazwę.
Bez znajomości konkretnej nazwy obiektu nie umiem go znaleźć na wykresie.
Oczywiście, że musi mieć inną, bo się index świecy zmienia, ale też muszą mieć coś charakterystycznego. Zwykle obiekty się też jakoś indeksuje, albo jest w nazwie indeks świecy, albo czas świecy, poza innymi. I zwykle jest część charakterystyczna, wspólna dla strzałek kup i dla strzałek sprzedaj.
Dla EA, na ogół, liczy się sygnał z pierwszej zamkniętej świecy, chociaż są i tacy, którzy tradują sygnał z bieżącej świecy.
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

grzegrzyw
Gaduła
Gaduła
Posty: 334
Rejestracja: 11 mar 2012, 19:43

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: grzegrzyw »

Potrzebuję numeru Ticket przedostatniego zlecenia, skoro poniższy kod oblicza Ticket ostatniego zlecenia

Kod: Zaznacz cały

int OstatniTick(int OT)
 {
   for(i=0;i<OrdersTotal();i++)
     {
      bool X =OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderType()==OT && OrderSymbol()==Symbol() && (OrderMagicNumber() == Mgc))
        {
         T1 = OrderTicket();
        }
     }
   return(T1);
 }
 
to poniższy kod powinien podać OrderTicket przedostatniego zlecenia, co robię źle, że w dalszy ciągu otrzymuję kod ostatniego zlecenia

Kod: Zaznacz cały

int PrzedOstTick(int OT)
 {
   for(i=0;i<OrdersTotal()-1;i++)
     {
      bool X =OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderType()==OT && OrderSymbol()==Symbol() && (OrderMagicNumber() == Mgc))
        {
         T2 = OrderTicket();
        }
     }
   return(T2);
 }
 
[/quote]

Awatar użytkownika
ninjaproject
Maniak
Maniak
Posty: 4944
Rejestracja: 30 lip 2019, 13:15

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: ninjaproject »

grzegrzyw pisze:
09 sty 2023, 13:22
Potrzebuję numeru Ticket przedostatniego zlecenia, skoro poniższy kod oblicza Ticket ostatniego zlecenia
To tak nie działa!
To, że będziesz liczył OrdersTotal()-1 tylko oznacza, że skanujesz jedną pozycję mniej niż ich jest.
Musisz filtrować jakoś zlecenia.
Spróbuj od i=1.
Jeżeli to nie będzie działać, to wtedy potrzebujesz jeszcze filtrować datę i czas zlecenia.

PS. Skoro skanujesz pozycje od indeksu 0 do OrdersTotal(), to przedostatnia pozycja powinna mieć indeks 1 - prawda?
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

grzegrzyw
Gaduła
Gaduła
Posty: 334
Rejestracja: 11 mar 2012, 19:43

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: grzegrzyw »

Próbowałem różnych kombinacji "i", wynik cały czas ten sam. Dzięki, trudno, jeszcze przećwiczę ten temat.

Awatar użytkownika
ninjaproject
Maniak
Maniak
Posty: 4944
Rejestracja: 30 lip 2019, 13:15

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: ninjaproject »

grzegrzyw pisze:
09 sty 2023, 14:27
Próbowałem różnych kombinacji "i", wynik cały czas ten sam. Dzięki, trudno, jeszcze przećwiczę ten temat.
To wtedy porównuj OrderOpenTime();
OrderTicket() też powinien być mniejszy od kolejnej pozycji.

No i masz jeszcze OrderComment().
Kiedyś pisałem komuś takie EA, że musiałem skanować OrderOpenTime(), nawet dla pozycji zamkniętych OrderCloseTime(), bo było tyle różnych warunków otwarcia pozycji, nawet według tego czy już w tym dniu była zamknięta pozycja, czy nie.
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

grzegrzyw
Gaduła
Gaduła
Posty: 334
Rejestracja: 11 mar 2012, 19:43

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: grzegrzyw »

ninjaproject pisze:
09 sty 2023, 14:08
PS. Skoro skanujesz pozycje od indeksu 0 do OrdersTotal(), to przedostatnia pozycja powinna mieć indeks 1 - prawda?
Pierwsza pozycja ma indeks 0, druga 1,.... to przedostatnia powinna mieć indeks OrdersTotal()-1, a ostatnia indeks OrdersTotal(). Pozycję ostatnią pokazuje poprawnie, a przedostatnią pokazuje też jako ostatnie zlecenie.
No i masz jeszcze OrderComment().
OrderComment() raczej odpada, dzięki za chęć pomocy, muszę jakoś rozgryźć ten temat. może utworzę tablicę i z nie będę pobierał tickety.

Awatar użytkownika
ninjaproject
Maniak
Maniak
Posty: 4944
Rejestracja: 30 lip 2019, 13:15

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: ninjaproject »

To może potrzebujesz SELECT_BY_TICKET?
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

grzegrzyw
Gaduła
Gaduła
Posty: 334
Rejestracja: 11 mar 2012, 19:43

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: grzegrzyw »

ninjaproject pisze:
09 sty 2023, 18:19
To może potrzebujesz SELECT_BY_TICKET?
Jak zmieniłem na SELECT_BY_TICKET, to pokazuje nr = 0

Awatar użytkownika
ninjaproject
Maniak
Maniak
Posty: 4944
Rejestracja: 30 lip 2019, 13:15

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: ninjaproject »

grzegrzyw pisze:
09 sty 2023, 18:12
Pierwsza pozycja ma indeks 0, druga 1,.... to przedostatnia powinna mieć indeks OrdersTotal()-1, a ostatnia indeks OrdersTotal(). Pozycję ostatnią pokazuje poprawnie, a przedostatnią pokazuje też jako ostatnie zlecenie.
if(i==OrdersTotal()-1)
???
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

grzegrzyw
Gaduła
Gaduła
Posty: 334
Rejestracja: 11 mar 2012, 19:43

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: grzegrzyw »

Tą kombinację i kilka innych też już próbowałem. Z tablicą też mi nie wyszło, ale muszę to jeszcze sprawdzić, bo mogłem gdzieś popełnić błąd.
Ostatnio zmieniony 09 sty 2023, 19:45 przez grzegrzyw, łącznie zmieniany 1 raz.

ODPOWIEDZ