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 »

Kod: Zaznacz cały

if(Moje_Warunki_Spelnione() )
 {
 Wykonaj_To();
 }
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

Awatar użytkownika
planet
Stały bywalec
Stały bywalec
Posty: 31
Rejestracja: 28 mar 2008, 09:37

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

Nieprzeczytany post autor: planet »

Witam
Miałem długą przerwę w programowaniu. Wcześniej pisałem w MT4 i nie miałem w zasadzie większych problemów.
Pisze teraz w MT5 i nie mogę sobie poradzić z wczytaniem danych z .txt np:FileReadDouble alboFileReadString (plik utworzyłem ręcznie)
wypróbowałem kilka kodów z internetu i albo jest błąd wczytania OpenFile albo plik wczytujący, ale się sam opróżnia czy znika z katalogu, co generuje błędy.
Może ma ktoś gotowe działające rozwiązanie?
plik umieściłem w C:\Users\Admin\AppData\Roaming\MetaQuotes\Tester\F762D69EEEA9B4430D7F17C82167C844\Agent-127.0.0.1-3000\MQL5\Files
Pamietajcie o tym ZAWSZE !!!
http://www.youtube.com/watch?v=epeQwq-aYV0

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 »

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

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 »

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

Awatar użytkownika
planet
Stały bywalec
Stały bywalec
Posty: 31
Rejestracja: 28 mar 2008, 09:37

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

Nieprzeczytany post autor: planet »

Dzięki za linki, znam je doskonale.
Z nich wynika tyle error ERR_CANNOT_OPEN_FILE 5004 File opening error
kod na żywca skopiowałem tylko zamieniłem na plik txt

Kod: Zaznacz cały

#property script_show_inputs
//--- parameters for data reading
input string InpFileName="dane wejsciowe.txt"; // file name
input string InpDirectoryName="Data"; // directory name
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
  //--- open the file
   ResetLastError();
   int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_TXT|FILE_ANSI);
     //Print("   terminal_data_path ",terminal_data_path);
      //PrintFormat("%s file is available for reading",InpFileName);
      //PrintFormat("File path: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
   if(file_handle!=INVALID_HANDLE)
     {
      PrintFormat("%s file is available for reading",InpFileName);
      PrintFormat("File path: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
      //--- additional variables
      int    str_size;
      string str;
      //--- read data from the file
      while(!FileIsEnding(file_handle))
        {
         //--- find out how many symbols are used for writing the time
         str_size=FileReadInteger(file_handle,INT_VALUE);
         //--- read the string
         str=FileReadString(file_handle,str_size);
         //--- print the string
         PrintFormat(str);
        }
      //--- close the file
      FileClose(file_handle);
      PrintFormat("Data is read, %s file is closed",InpFileName);
     }
   else
      PrintFormat("Failed to open %s file, Error code = %d",InpFileName,GetLastError());
Pamietajcie o tym ZAWSZE !!!
http://www.youtube.com/watch?v=epeQwq-aYV0

Beginner001
Bywalec
Bywalec
Posty: 19
Rejestracja: 14 paź 2019, 03:53

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

Nieprzeczytany post autor: Beginner001 »

Cześć,
To mój pierwszy post w dziale programowanie, więc proszę o wyrozumiałość :)
Mam dość proste pytanie o funkcję:

OrderSend(symbol, cmd, volume, price, slippage, SL, TP, comment, magic, expiration, arrow)

Generalnie zdażyłem się już dowiedzieć, że są brokerzy market maker z egzekucją natychmiastową, gdzie może wystapic rekwotowanie i ustawienie slippage większego od 0 zwiększa szanse na zawarcie transakcji, czyli brak rekwotowania
Natomiast są też brokerzy ECN (pod takiego brokera będę pisał robota), którzy mają egzekucję rynkową i zlecenie wchodzi zawsze z zerowym, małym albo trochę większym poślizgiem którego nie da się kontrolować/ograniczyć.

Jak to się ma u takiego brokera ECN z funkcją OrderSend?
Czy wprowadzenie parametru slippage np. 10 będzie respektowane?
Jeżeli ten parametr nie bedzie w ogole nic powodował to co dla optymalnego działania wpisać w tym polu? 0 czy jakąś dodatnią wartość, bo składni funkcji raczej nie da się zmienić.
Dziękuję z gory za pomoc.

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 »

Nie da rady nic z tym zrobić. Teoretycznie możesz wpisać co chcesz. Praktycznie, nic to nie da. Chyba, że broker oferuje zabezpieczenie przed obsuwami. Wtedy parametry się ustawia w swoim gabinecie inwestora dla danego konta, ale wtedy może być tak, że nie otworzy zlecenia.
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

Beginner001
Bywalec
Bywalec
Posty: 19
Rejestracja: 14 paź 2019, 03:53

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

Nieprzeczytany post autor: Beginner001 »

Dzięki za odp.

Ninjaproject,
Orientujesz się może czy Ic Markets oferuje takie zabezpieczenie?

Ale wracając jeszcze do funkcji OrderSend i parametru slippage to powiedzmy, ze mamy jednak brokera typu market maker i funkcją OrderSend ustawiamy zlecenie oczekujące to parametr slippage dotyczy poslizgu przy aktywacji zlecenia? dobrze mysle? bo raczej poślizg przy ustawianiu zleceń oczekujących nie jest możliwy?

Na koniec jeszcze chciałbym potwierdzić czym jest wysłanie zapytania przez robota do serwera brokera.
Rozumiem, że jest to request modyfikacji stop lossa, otwarcie pozycji, anulowanie ordera itd?
Bo np pobranie aktualnej ceny rynkowej przez robota celem weryfikacji warunków zapisanych w strategii nie bedzie wysyłalo zapytania do serwera brokera?

ahaa..i jeszcze jedna kwestia
Jezeli funkcja OrderSend ustawia zlecenie oczekujące (nadaje mu również magic number) to po aktywacji tego zlecenia oczekującego otwarta pozycja będzie miała ten sam magic number co zlecenie oczekujące czy ten magic number po aktywacji się zresetuje do 0 na przykład?

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 »

Beginner001 pisze:
17 paź 2019, 01:06
Dzięki za odp.

Ninjaproject,
Orientujesz się może czy Ic Markets oferuje takie zabezpieczenie?

Ale wracając jeszcze do funkcji OrderSend i parametru slippage to powiedzmy, ze mamy jednak brokera typu market maker i funkcją OrderSend ustawiamy zlecenie oczekujące to parametr slippage dotyczy poslizgu przy aktywacji zlecenia? dobrze mysle? bo raczej poślizg przy ustawianiu zleceń oczekujących nie jest możliwy?

Na koniec jeszcze chciałbym potwierdzić czym jest wysłanie zapytania przez robota do serwera brokera.
Rozumiem, że jest to request modyfikacji stop lossa, otwarcie pozycji, anulowanie ordera itd?
Bo np pobranie aktualnej ceny rynkowej przez robota celem weryfikacji warunków zapisanych w strategii nie bedzie wysyłalo zapytania do serwera brokera?

ahaa..i jeszcze jedna kwestia
Jezeli funkcja OrderSend ustawia zlecenie oczekujące (nadaje mu również magic number) to po aktywacji tego zlecenia oczekującego otwarta pozycja będzie miała ten sam magic number co zlecenie oczekujące czy ten magic number po aktywacji się zresetuje do 0 na przykład?
Nie słyszałem, żeby ICM oferował takie zabezpieczenia.

Teoretycznie tak. Praktycznie parametr slippage ja ustawiam na "0". A czy to zadziała przy otwieraniu/zamykaniu zleceń? Nie.

Wszelkie funkcje związane z serwerem brokera to zapytanie do serwera brokera. Odnośnie danych cenowych z wykresu:
https://docs.mql4.com/series/iclose dla przykładu (Czytaj "Note").

Jaki byłby sens magic number, gdyby nie można było zlecenia rozpoznać po nim, właśnie? Zmodyfikowane zlecenie jest nadal tym samym zleceniem, tak? Natomiast, należy się orientować w ofercie brokera, bo nie każdy działa na tych samych zasadach. (np. FIFO i OCO). Akurat to nie dotyczy ICM, ale pisanie EA to dosyć poważne zadanie.
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

Beginner001
Bywalec
Bywalec
Posty: 19
Rejestracja: 14 paź 2019, 03:53

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

Nieprzeczytany post autor: Beginner001 »

ninjaproject pisze:
17 paź 2019, 11:29
Jaki byłby sens magic number, gdyby nie można było zlecenia rozpoznać po nim, właśnie? Zmodyfikowane zlecenie jest nadal tym samym zleceniem, tak?
Sens byłby pewnie niewielki, ale czasami w różnych dziedzinach życia zdarzają się pewne paradoksy, dlatego wolałem potwierdzić.

Mam kolejne pytanie o magic number.
Generalnie napisałem już swoją pierwszą prościutką strategię automatyczną i przetestowałem ją w testerze strategii w 8 różnych konfiguracjach/wartościach stop lossa i trailing stopa.
Dwie spośród 8 konfiguracji SL i TS dały całkiem ok wynik i dalej będę chciał tą strategię w tych 2 konfiguracjach SL i TS testować real time na demo
Moje pytanie jest następujące, bo strategia niezaleznie od wartości SL i TS zawsze działa na daxie i na M1
To czy lepiej jest zrobić dwie strategie (jedną wrzucić na dax m1, drugą wrzucić na drugi wykres dax m1)?
czy zrobić jedną strategię zawierającą transakcje i nadającą im 2 różne magic numbery (czy to w ogole jest możliwe technicznie? czy kompilator nie wyrzuci błędu?), a następnie zarządzającą tymi transakcjami w różny sposób na podstawie 2 różnych magic number?
ninjaproject pisze:
17 paź 2019, 11:29
Natomiast, należy się orientować w ofercie brokera, bo nie każdy działa na tych samych zasadach. (np. FIFO i OCO).
W jakich sytuacjach na przykład te zasady FIFO, OCO mają znaczenie dla tradera?
FIFO, czyli first in, first out - czyli np ustawiam 2 zlecenia buy limit po tej samej cenie - i w tej zasadzie FIFO chodzi o to, że pierwsze jest realizowane to które zostało pierwsze złożone?
OCO, czyli one cancel other - czyli jedno zlecenie oczekujące anuluje inne?

ODPOWIEDZ