Wszystkie pytania dozwolone początkujących programistów

O jezykach programowania w platformach i nie tylko.
Mistyfikator
Pasjonat
Pasjonat
Posty: 932
Rejestracja: 05 lip 2021, 20:35

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

Nieprzeczytany post autor: Mistyfikator »

W ciągu ostatnich dni moje EA uległo sporej rozbudowie.
Doszło sporo nowych funkcjonalności, edytowalnych w inputs.
Nie powiem, ważnym etapem dla żółtodzioba jest wkomponowanie w program zdefiniowanych przez siebie zmiennych enum.
Dopiero wtedy czuć tę władzę nad programem i nad opcjami w interfejsie użytkownika.
Wprowadziłem różne tryby MM, czy też możliwość zdefiniowania przez użytkownika sygnałów.

Pisałem jak w transie ale oczywiście nie ustrzegłem się błędów.
O ile prostsza wersja programu działała bez zastrzeżeń, o tyle rozbudowana nie działa jak powinna.
A że jest to jak dotąd moje największe "dzieło", to teraz trzeba odnaleźć nieścisłości w 1000 linijkach kodu....

Rozwiązuję to małymi kroczkami, pewnie najlepiej to byłoby przepisać jeszcze raz i popracować nad rozgałęzieniem warunków.
Zobaczy się.

Dzisiaj znalazłem rozwiązanie dla wpisywania przedziału czasu, kiedy EA działa a kiedy nie.
Chodzi o regularne codzienne umożliwienie handlu i zamykanie handlu o stałych godzinach.

Okazuje się, że o ile w sytuacji, gdy zaczyna się powiedzmy o 16:00, a kończy o 20:00 jest to proste, o tyle dla startu o 23:00 i końca o 07:00 już trzeba napisać inny warunek. A było to u mnie konieczne, jako że mam VPS minus dwie godziny od naszej strefy.

Żeby wnieść cos od siebie do tego forum, wklejam poniżej kod programu, którego celem jest zbadanie, czy w obecnej chwili handel jest dozwolony czy nie. Użytkownik definiuje godziny handlu wg własnych kryteriów. Należy pamiętać o formacie HH:MM:SS
Sekundy można pominąć. Reszty jeszcze nie testowałem, bo testowania mam w cholerę.

Jakby ktos kiedys potrzebował do swojego EA, problem nie jest skomplikowany ale trzeba chwilę pomyśleć:

Kod: Zaznacz cały


//+------------------------------------------------------------------+
//|                                                TRADING_HOURS.mq4 |
//|                                                        MSTFKR |
//|                                                https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "MSTFKR"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

extern string START_HOUR = "08:00";
extern string END_HOUR = "21:45";

bool ARE_TRADING_HOURS_NOW = false;

void OnTick()

  {
  
   Print("TimeLocal = ",TimeLocal());
  
   datetime START_AT = StrToTime(TimeToStr(TimeCurrent(),TIME_DATE)+" "+START_HOUR);
   Print("Start Trade At ",START_AT);
   
   
   datetime STOP_AT = StrToTime(TimeToStr(TimeCurrent(),TIME_DATE)+" "+END_HOUR);
   Print("Stop Trade At ",STOP_AT);
   
   
   
   if(START_AT<STOP_AT)
   
      {
      
         Print("Start_At<Stop_AT");
         
         if(TimeLocal()>=START_AT && TimeLocal()<STOP_AT)
   
          { ARE_TRADING_HOURS_NOW = true  ; }
               
          
          if(TimeLocal()<START_AT && TimeLocal()>=STOP_AT)
          
          { ARE_TRADING_HOURS_NOW = false  ; }
          
          
      }
   
   
   if(START_AT>STOP_AT)
   
      {
      
         Print("Start_At>Stop_At");
         
         
         if(TimeLocal()>=START_AT || TimeLocal()<STOP_AT)
   
          {  ARE_TRADING_HOURS_NOW = true  ; }
          
         
                  
          if(TimeLocal()<START_AT && TimeLocal()>=STOP_AT)
          
          {  ARE_TRADING_HOURS_NOW = false  ; }
            
        
      }
      
   
   if(ARE_TRADING_HOURS_NOW==true)
   
      {Print("Trading Allowed");}
      
   if(ARE_TRADING_HOURS_NOW==false)
   
      {Print("Trading Not Allowed");}
      
      
  }




Wiem, że zostało to napisane tysiące razy, tak więc przepraszam, że powielam temat.
Niemniej mam nadzieję że się komuś początkującemu kiedyś przyda, a jako że wcześniej opublikowałem lipną wersję tego samego, to poczuwam się do obowiązku aby udostępnić lepszą wersję tej funkcjonalności.

Mistyfikator
Pasjonat
Pasjonat
Posty: 932
Rejestracja: 05 lip 2021, 20:35

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

Nieprzeczytany post autor: Mistyfikator »

Zostały mi ostatnie szlify przed ukończeniem własnego, najbardziej jak do tej pory rozbudowanego i zaawansowanego EA:


1. Opracowanie graficznego interfejsu uzytkownika, ale tutaj znalazłem rozwiązanie: https://www.mt4gui.com/

I już się biorę za to.


2. Chciałem, żeby było już całkiem bajerancko, tak więc miło by było, gdyby EA wyświetlało wszystkie wskaźniki, używane przez strategię.
Próbuję znaleźć rozwiązanie, ale coś nie bardzo widzę możliwości. Podejrzewam, że nawet jeśli coś takiego jest, to jest to jakaś wyższa szkoła jazdy:

CZY MOŻNA OTWIERAĆ WSKAŹNIKI NA WYKRESIE Z POZIOMU EA w MQL4?

Dodam, że jest mozliwość że każdy z tych indicators będzie działał na innym TF.

Napisałem EA, gdzie użytkownik ma dostęp do wszystkich parametrów wskaźników w oparciu o które odbywa się trading.
Może też modyfikować strategię włączając i wyłączając poszczególne wskaźniki.

Chciałem, żeby w zależności od tego, jakie inputs zostaną ustawione, wskaźniki pokazywały się na wykresie, bądź znikały z wykresu.

Jest to w ogóle możliwe?
A może tak trudno wykonalne, że lepiej sobie tym nie zaprzątać głowy?

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 »

Mistyfikator pisze:
10 lip 2022, 18:29
Zostały mi ostatnie szlify przed ukończeniem własnego, najbardziej jak do tej pory rozbudowanego i zaawansowanego EA:


1. Opracowanie graficznego interfejsu uzytkownika, ale tutaj znalazłem rozwiązanie: https://www.mt4gui.com/

I już się biorę za to.
Jest to opcja, ale też obecnie jest opcja stosowania MQL4/Include/Controls.
Jak zwykle, są pewne bugi i niektórzy nawet poprawiają te biblioteki.
Mistyfikator pisze:
10 lip 2022, 18:29
2. Chciałem, żeby było już całkiem bajerancko, tak więc miło by było, gdyby EA wyświetlało wszystkie wskaźniki, używane przez strategię.
Próbuję znaleźć rozwiązanie, ale coś nie bardzo widzę możliwości. Podejrzewam, że nawet jeśli coś takiego jest, to jest to jakaś wyższa szkoła jazdy:
CZY MOŻNA OTWIERAĆ WSKAŹNIKI NA WYKRESIE Z POZIOMU EA w MQL4?

Dodam, że jest mozliwość że każdy z tych indicators będzie działał na innym TF.

Napisałem EA, gdzie użytkownik ma dostęp do wszystkich parametrów wskaźników w oparciu o które odbywa się trading.
Może też modyfikować strategię włączając i wyłączając poszczególne wskaźniki.

Chciałem, żeby w zależności od tego, jakie inputs zostaną ustawione, wskaźniki pokazywały się na wykresie, bądź znikały z wykresu.

Jest to w ogóle możliwe?
A może tak trudno wykonalne, że lepiej sobie tym nie zaprzątać głowy?
EA nie jest po to, żeby wskaźniki rysowało.
Ale, jak chcesz takie bajery, to kombinuj!
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

Mistyfikator
Pasjonat
Pasjonat
Posty: 932
Rejestracja: 05 lip 2021, 20:35

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

Nieprzeczytany post autor: Mistyfikator »

ninjaproject pisze:
10 lip 2022, 19:17

EA nie jest po to, żeby wskaźniki rysowało.
Ale, jak chcesz takie bajery, to kombinuj!
Czy ktokolwiek stosuje tego typu rozwiązania ?

Ja raczej miałem do czynienia z EA mającymi zastosowanie do MM, lub innych pojedynczych aspektów tradingu.
Tak więc dotąd bardzo mało widziałem, ale aspekt nauki polegający na oglądaniu wyników pracy innych też biorę pod uwagę

To co skleciłem natomiast, jest jakby połączeniem wielu funkcjonalności w postaci jednego programu wraz z możliwością zaprogramowania kompletnej strategii z poziomu inputs.
A nie badałem wcześniej EA będących kompletnymi strategiami FX.

Widzę, że wskaźniki a EA to kompletnie różne rozdziały.
Nie chciałbym więc siedzieć nad szukaniem rozwiązania do zagadnienia, którego się nie praktykuje.
Najwyżej zostanę przy dokładnym opisie wartości wszelkich parametrów oraz aktualnych ustawień EA przy pomocy Print()

Zostałoby tylko GUI i można by skończyć jeden projekt a zacząć cos nowego.

Rysowanie wskaźników to pewnie kwestia obudowania EA albo równoczesnego uruchomienia wskaźników i EA z uprzednią wymianą danych między nimi?

Ale powtórzę pytanie z początku, bo odszedłem już nieco od sedna sprawy:
Czy są stosowane tego typu rozwiązania ?


Jeśli takiego rozwiązania się nie praktykuje, to pewnie warto obecnie zająć się pilniejszymi zagadnieniami.
A do tematu najwyżej wrócić kiedyś

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 sobie napisz wskaźnik dostosowany do EA, stwórz szablon i będzie.
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

Mistyfikator
Pasjonat
Pasjonat
Posty: 932
Rejestracja: 05 lip 2021, 20:35

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

Nieprzeczytany post autor: Mistyfikator »

Bardziej chodziło mi o to, aby stworzyć to w ramach jednego programu.
Pewnie kiedyś napiszę coś, co otworzy równocześnie i EA i wskaźniki.

Bo samo sprawdzenie wartości i zgodności działania programu z inputs nie jest obecnie pilnym problemem.
Mam wszystko czarne na białym, poruszone przeze mnie zagadnienie jest związane raczej z chęcią rozwoju programistycznego

W międzyczasie przemyślałem to i na razie zostawiam ten temat. Wrócę do tego za jakiś czas.

GUI jest ważniejsze, później jeszcze jeden EA.
A potem już skupiam się na C++

Mistyfikator
Pasjonat
Pasjonat
Posty: 932
Rejestracja: 05 lip 2021, 20:35

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

Nieprzeczytany post autor: Mistyfikator »

Co to może być ?


Patrzę w logi, a tam wartości, które miałem znormalizowane przy pomocy _Digits wyskakują po kilkanaście miejsc po przecinku:


Ale są to wartości w rodzaju:

0.9765200000000001

0.9837399999999999


Czasem nawet mam cenę Bid lub Ask (predefiniowalną) w tej postaci !!!

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 »

Mistyfikator pisze:
14 lip 2022, 15:02
Co to może być ?


Patrzę w logi, a tam wartości, które miałem znormalizowane przy pomocy _Digits wyskakują po kilkanaście miejsc po przecinku:


Ale są to wartości w rodzaju:

0.9765200000000001

0.9837399999999999


Czasem nawet mam cenę Bid lub Ask (predefiniowalną) w tej postaci !!!
Bo w logach masz stringi, a nie double, więc jeżeli chcesz mieć znormalizowane stringi, to musisz zrobić:

Kod: Zaznacz cały

DoubleToString(zmienna,norma)
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

Mistyfikator
Pasjonat
Pasjonat
Posty: 932
Rejestracja: 05 lip 2021, 20:35

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

Nieprzeczytany post autor: Mistyfikator »

ninjaproject pisze:
14 lip 2022, 15:13

Bo w logach masz stringi, a nie double, więc jeżeli chcesz mieć znormalizowane stringi, to musisz zrobić:

Kod: Zaznacz cały

DoubleToString(zmienna,norma)
No tak, w logach mam stringi.
Ale są to stringi przekonwertowane ze znormalizowanych double.

Co ciekawe, powyższa sytuacja ma miejsce tylko w przypadku pary USDCHF i tylko w przypadku jednej średniej, jednego TP i Bid.

Testuję jeszcze S&P500, USDJPY i EURUSD i tam nie spotkałem się z tym.

Ale widzę, ze to chyba nie ma znaczenia: EA otworzyło coś tam na USDCHF

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 »

Mistyfikator pisze:
14 lip 2022, 16:58
ninjaproject pisze:
14 lip 2022, 15:13

Bo w logach masz stringi, a nie double, więc jeżeli chcesz mieć znormalizowane stringi, to musisz zrobić:

Kod: Zaznacz cały

DoubleToString(zmienna,norma)
No tak, w logach mam stringi.
Ale są to stringi przekonwertowane ze znormalizowanych double.

Co ciekawe, powyższa sytuacja ma miejsce tylko w przypadku pary USDCHF i tylko w przypadku jednej średniej, jednego TP i Bid.

Testuję jeszcze S&P500, USDJPY i EURUSD i tam nie spotkałem się z tym.

Ale widzę, ze to chyba nie ma znaczenia: EA otworzyło coś tam na USDCHF
To nie ma znaczenia dla stringów.
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

ODPOWIEDZ