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 »

Ja, w swoich kodach rozpoznaję transakcje tak:

Kod: Zaznacz cały

if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&ordertype==OP_BUY&&OrderComment()=="Dana_Strategia")
{  Wykonaj_To(); }
Z tym, że dodatkowo MagicNumber jest doprawiany identyfikatorem konkretnego wskaźnika, lub narzędzia, co pozwala na stosowanie kilku EA na tym samym instrumencie. Można też nadać identyfikator dla EA, w inputs, co da taki sam rezultat.
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 »

First In First Out - oznacza to, że zamykana jest najpierw transakcja, które weszła pierwsza.
One Cancels Other - oznacza, że zawsze jest tylko jedna transakcja. Sell zamyka transakcję Buy, Buy zamyka transakcję Sell, Hedge nie wchodzi w rachubę. Jeżeli mamy np. transakcję Buy, to zawarcie kolejnej transakcji Buy uśrednia cenę i jest nadal jedna transakcja.
Ma to istotny wpływ na działanie EA, ponieważ w inny sposób trzeba zarządzać pozycjami.
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 wyjaśnienia Ninjaproject.
Takich brokerów co stosują zasadę OCO na swoich platformach jest chyba relatywnie mało.
Ale głównie chciałbym się jeszcze skupić na magic number
Otrzymałem odpowiedź która niestety nie trafia w sedno mojego pytania.
Chodzi o to, że chciałbym mieć o ile to możliwe jedną strategię automatyczną a nie dwie.
Głownie temat dotyczy zarządzania przez EA transakcjami na 2 sposoby (powiedzmy, że jedne transakcje mają charakter bardziej scalpingowy, a drugie mierzą bardziej w 100 pkt zysku) i żeby mogło to mieć miejsce najwygodniej byłoby mi poprzydzielać transakcje (już przy otwarciu tych transakcji) do 2 grup poprzez 2 rózne magic number i następnie w zależności od magic number EA zarzadzałoby transakcjami na 2 sposoby.
Więc pytanie czy jedno EA może nadawać 2 różne magic numbery otwieranym transakcjom? powiedzmy transakcja A - magic number 111, a transakcja B - magic number 222 (czy nie będzie żadnego błedu w składni MQL4? magic numbery nie muszą być w mojej strategii zadeklarowane globalnie)
Dla zobrazowania kawałek kodu:

if(warunek1 && warunek2 && warunek3)
{
OrderSend(symbol, cmd, volume, price, slippage, SL, TP, comment, 111, expiration, arrow);
OrderSend(symbol, cmd, volume, price, slippage, SL, TP, comment, 222, expiration, arrow);
}

Czy taki kod w jednej strategii automatycznej może mieć miejsce?
Dzięki z góry.

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 »

Wtedy otworzyłeś 2 transakcje. Piszesz wyraźnie o dwóch strategiach, a twierdzisz, że to jest jedna strategia. Nie, to są 2 strategie i napisałem poprzednio, że ja w takim EA nadaję komentarz, np. "Strategia_Scalp", "Strategia_100". Chyba, że dopuszczasz, żeby EA otworzyło 2 transakcje, a potem tylko nimi zarządzasz według magic number? Kompilator nie sprawdza twojego pomysłu na kod, tylko sprawdza jego poprawność składniową. W wypadku twojego przykładu otworzyłeś dwie transakcje, i każda z nich ma inny magic number, po którym możesz je odróżnić w kodzie zarządzającym. Ale, co będzie jeżeli otworzysz, nawet przypadkiem, kolejną instancję tego samego wykresu (symbolu) i wrzucisz tam ten sam szablon z tym samym EA? Albo, nawet na innym symbolu? Potrzebujesz więcej elementów rozpoznawczych, żeby dana instancja EA obsługiwała tylko te transakcje, które ta instancja otworzyła.
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 »

Druga sprawa, to OrderSend() należy zawsze sprawdzać na błędy, a więc np.:

Kod: Zaznacz cały

          
                    ticket=OrderSend(Symbol(),type,Lot_Size,Sell_Price,0,SL,TP,"Trade_DTR",MagicNumber,0,clrNONE);
 
                    if(ticket<=0) 
                     {
                    PlaySound("timeout.wav");
                    return;
                     }
                    else 
                     { 
                    PlaySound("ok.wav");
                     }
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 »

Dokładnie trochę niejednoznacznie to wszystko opisałem (ale cóż takie uroki bycia początkującym).
Zgadza się - są 2 strategie, ale schemat ich działania jest ten sam, różnice tylko w wielkości SL i wielkości trailing stop.
Dlatego też chciałbym zakodować te 2 strategie jako 1 expert advisor.
Planuje mieć tylko otwarty jeden wykres i na ten wykres wrzucić tego robota, więc wydaje mi się, że 1 element rozpoznawczy w postaci magic number bedzie ok?
Zadałem wcześniej pytanie czy jedno EA da radę z punktu widzenia technicznego nadawać swoim transakcjom różne magic number, bo myślałem ze magic number musi być koniecznie zadeklarowane globalnie i może być tylko jedno, ale teraz widzę że to nie problem 2 magic number w jednym robocie ktory dziala na jednym instrumencie i na jednym interwale.

Mam prośbę ninjaproject o zerknięcie na mojego posta w wątku VPS'y w dziale zaplecze techniczne.
Nikt mi jeszcze nie odpowiedział (a chciałbym ruszyć z tematem), a Ty wydaje mi się masz doswiadczenie w tym zakresie.

dexter
Gaduła
Gaduła
Posty: 207
Rejestracja: 29 lis 2009, 14:38

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

Nieprzeczytany post autor: dexter »

Mój pierwszy wskaźnik i nie mogę pozbyć się jednego błędu;//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()

input int FastMaPeriot =7; w tej linijce wyświetla mi się błąd
input int SlowMaPeriot =5;

double BufferFas[];
double BufferSlow[];

#define FastIndycator 1
#define SlowIndycator 2

//+------------------------------------------------------------------+
//| Custom indicator iteration function |

taki błąd mi się wyświetla;
'input' - semicolon expected MaNo1.mq4 16 1
1 error(s), 0 warning(s) 2 1

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:
22 paź 2019, 03:27
Dokładnie trochę niejednoznacznie to wszystko opisałem (ale cóż takie uroki bycia początkującym).
Zgadza się - są 2 strategie, ale schemat ich działania jest ten sam, różnice tylko w wielkości SL i wielkości trailing stop.
Dlatego też chciałbym zakodować te 2 strategie jako 1 expert advisor.
Planuje mieć tylko otwarty jeden wykres i na ten wykres wrzucić tego robota, więc wydaje mi się, że 1 element rozpoznawczy w postaci magic number bedzie ok?
Zadałem wcześniej pytanie czy jedno EA da radę z punktu widzenia technicznego nadawać swoim transakcjom różne magic number, bo myślałem ze magic number musi być koniecznie zadeklarowane globalnie i może być tylko jedno, ale teraz widzę że to nie problem 2 magic number w jednym robocie ktory dziala na jednym instrumencie i na jednym interwale.

Mam prośbę ninjaproject o zerknięcie na mojego posta w wątku VPS'y w dziale zaplecze techniczne.
Nikt mi jeszcze nie odpowiedział (a chciałbym ruszyć z tematem), a Ty wydaje mi się masz doswiadczenie w tym zakresie.
Akurat z VPS nie korzystam, więc nie mam w tym temacie doświadczenia.
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 »

dexter pisze:
23 paź 2019, 21:57
Mój pierwszy wskaźnik i nie mogę pozbyć się jednego błędu;//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()

input int FastMaPeriot =7; w tej linijce wyświetla mi się błąd
input int SlowMaPeriot =5;

double BufferFas[];
double BufferSlow[];

#define FastIndycator 1
#define SlowIndycator 2

//+------------------------------------------------------------------+
//| Custom indicator iteration function |

taki błąd mi się wyświetla;
'input' - semicolon expected MaNo1.mq4 16 1
1 error(s), 0 warning(s) 2 1
Brak klamr.
W MetaEditor jest ikonka "Nowy". Jak na niej klikniesz, to ci wyskoczy to:
2019-10-25_142310.png
I ten Wizard cię poprowadzi i wygeneruje szablon z potrzebnymi (wybranymi) sekcjami.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Ostatnio zmieniony 25 paź 2019, 14:32 przez ninjaproject, łącznie zmieniany 2 razy.
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 »

Poza tym, to #define nie piszemy w OnInit().
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

ODPOWIEDZ