https://www.mql5.com/en/code
otwieranie podwójnej pozycji
Re: otwieranie podwójnej pozycji
ForexClub.pl
- Forex Club Tools
- Program Podatek 7.0
- RABATY PROWIZJI
| IC Markets (-21%) | Tickmill (-10%) | XTB (Pakiet książek) | Dukascopy (narzędzia do JForex) | LMAX (-20%) | FxPro (do -15%)
Zapraszamy do kontaktu
- Forex Club Tools
- Program Podatek 7.0
- RABATY PROWIZJI
| IC Markets (-21%) | Tickmill (-10%) | XTB (Pakiet książek) | Dukascopy (narzędzia do JForex) | LMAX (-20%) | FxPro (do -15%)
Zapraszamy do kontaktu
- ninjaproject
- Maniak
- Posty: 4944
- Rejestracja: 30 lip 2019, 13:15
Re: otwieranie podwójnej pozycji
Ten jest do MT5:
https://www.mql5.com/en/code/16920
https://www.mql5.com/en/code/16920
Ostatnio zmieniony 24 kwie 2020, 15:02 przez ninjaproject, łącznie zmieniany 1 raz.
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.
Programuję wskaźniki i EA do MetaTrader 4/5.
- ninjaproject
- Maniak
- Posty: 4944
- Rejestracja: 30 lip 2019, 13:15
Re: otwieranie podwójnej pozycji
Sorry, ten jest do MT4:
https://www.mql5.com/en/code/9610
https://www.mql5.com/en/code/9610
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.
Programuję wskaźniki i EA do MetaTrader 4/5.
Re: otwieranie podwójnej pozycji
Nie za bardzo wierze, że to ma coś wspólnego z naukąSkullknead pisze: ↑24 kwie 2020, 12:57W jakim celu? W imię nauki raposo gdzie najlepiej zacząć poszukiwania skryptu?
A jesli wpadł ci do głowy "genialny" pomysł rozgrywania pseudo systemu "Hedga" to proponuje poczytać
Powodzenia i wielu zysków życze
system-hedge-t30922.html
Re: otwieranie podwójnej pozycji
Pewnie jeszcze nie wie za bardzo jak liczone jest equity w takim przypadku, że ma jeszcze spread i jak kupi to po ask, sprzeda po bid, że ma prowizje od otwarcia i zamknięcia, albo ogólnie od pozycji, że u jednego broka możesz w ten sposób zwiększyć dźwignię (głównie z MT4) a u innego nie za bardzo jest sens używania takiego "hedge" bo inaczej liczone jest balance i equiy od pozycji przeciwstawnych, że nie da się zlecić wypłaty środków jeśli masz otwarte pozycje i to co zostanie nie wystarcyz na zabezpieczenie pozycji hehe itd. Na słowo hedge przychodza mi do głowy 2 osoby: sardo nunspa i Spekulant PL (wcześniej miał chyba inny nick), jakieś wychodzenia z hedgy, defensywne hedge i tym podobne historie.Cblondyn pisze: ↑24 kwie 2020, 16:03Nie za bardzo wierze, że to ma coś wspólnego z naukąSkullknead pisze: ↑24 kwie 2020, 12:57W jakim celu? W imię nauki raposo gdzie najlepiej zacząć poszukiwania skryptu?
A jesli wpadł ci do głowy "genialny" pomysł rozgrywania pseudo systemu "Hedga" to proponuje poczytać
Powodzenia i wielu zysków życze
system-hedge-t30922.html
-
- Uczestnik
- Posty: 4
- Rejestracja: 24 kwie 2020, 03:10
Re: otwieranie podwójnej pozycji
Jestem na 15 stronie instrukcji z 300 do mt4 więc raczej wielu rzeczy za bardzo nie wiem. Dzięki wszystkim za pomocne linki i odpowiedzi-rookie- pisze: ↑24 kwie 2020, 19:31Pewnie jeszcze nie wie za bardzo jak liczone jest equity w takim przypadku, że ma jeszcze spread i jak kupi to po ask, sprzeda po bid, że ma prowizje od otwarcia i zamknięcia, albo ogólnie od pozycji, że u jednego broka możesz w ten sposób zwiększyć dźwignię (głównie z MT4) a u innego nie za bardzo jest sens używania takiego "hedge" bo inaczej liczone jest balance i equiy od pozycji przeciwstawnych, że nie da się zlecić wypłaty środków jeśli masz otwarte pozycje i to co zostanie nie wystarcyz na zabezpieczenie pozycji hehe itd. Na słowo hedge przychodza mi do głowy 2 osoby: sardo nunspa i Spekulant PL (wcześniej miał chyba inny nick), jakieś wychodzenia z hedgy, defensywne hedge i tym podobne historie.Cblondyn pisze: ↑24 kwie 2020, 16:03Nie za bardzo wierze, że to ma coś wspólnego z naukąSkullknead pisze: ↑24 kwie 2020, 12:57W jakim celu? W imię nauki raposo gdzie najlepiej zacząć poszukiwania skryptu?
A jesli wpadł ci do głowy "genialny" pomysł rozgrywania pseudo systemu "Hedga" to proponuje poczytać
Powodzenia i wielu zysków życze
system-hedge-t30922.html
Re: otwieranie podwójnej pozycji
No dokładnie, potwierdzasz to co mówię. Serwer jest jeden. Platforma MT4 nie podłącza się do niego bezpośrednio, tylko najpierw do DC z którego z kolei idzie połączenie do głównego serwera. MT4 automatycznie podłącza się do DC z najniższym pingiem i najstabilniejszym połączeniem.
W załączniku zdjęcie od jednego z brokerów z którego korzystam - Tickmill. DC jest od cholery, ale konto jest tylko na jednym serwerze - Live03.
W załączniku zdjęcie od jednego z brokerów z którego korzystam - Tickmill. DC jest od cholery, ale konto jest tylko na jednym serwerze - Live03.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Re: otwieranie podwójnej pozycji
A teraz weźmy to jak zaimplementowany jest mechanizm realizowania zleceń np na GPW (polityka realizacji zleceń etc). Przecież tam do wypełnienia zlecenia musi być druga strona transakcji. Innymi słowy, jeśli ty chcesz kupić 100 akcji, po drugiej stronie musi być ktoś kto chce sprzedać 100 akcji. Wtedy zlecenie jest realizowane. (już nie wnikam w częściowe realizowanie zleceń albo wypełnianie grupy zleceń po mniejszym wolumenie żeby wypełnić jedno większe) Gdybyś był sam na rynku, to sam sobie byś wystawiał te zlecenia i je wypełniał otwierając przeciwstawne PKC Raczej nie da się z tego samego kompa wysłać naraz dwóch zleceń, żeby zrealizowały się dokładnie w tym samym czasie. Nie wiem po co tak kombinować, skoro EA można wysłać zlecenie jedno po drugim, buy i sell. W sumie chyba na jedno wyjdzie bo i tak kupujesz po ASK i sprzedajesz po BID.
Jeśli chodzi o EA, to średnio mam ochotę teraz grzebać się w mql, ale możesz stworzyć nową strategię w kreatorze i wrzucić ten kod. Potem włączyć tester historyczny i w zakładce "Dziennik" na dole, będziesz miał wyświetlane to co zwraca Print. W API masz funkcje odpowiedzialne za obsługę zleceń i wyświetlanie informacji na temat tych pozycji https://docs.mql4.com/trading także za wyświetlanie informacji o koncie https://docs.mql4.com/account gdzie jest m.in. AccountMargin i przy otwarciu dwóch zleceń po 0.01 lota jak w tym przykładowym EA, ta wartość będzie równa 0, ale jak otworzyć tylko 1 zlecenie, albo o różnym wolumenie wtedy to się zmieni. Krótko mówiąc, są już gotowe funkcje, tylko teraz trzeba nauczyć się z tego korzystać
Jeśli chodzi o EA, to średnio mam ochotę teraz grzebać się w mql, ale możesz stworzyć nową strategię w kreatorze i wrzucić ten kod. Potem włączyć tester historyczny i w zakładce "Dziennik" na dole, będziesz miał wyświetlane to co zwraca Print. W API masz funkcje odpowiedzialne za obsługę zleceń i wyświetlanie informacji na temat tych pozycji https://docs.mql4.com/trading także za wyświetlanie informacji o koncie https://docs.mql4.com/account gdzie jest m.in. AccountMargin i przy otwarciu dwóch zleceń po 0.01 lota jak w tym przykładowym EA, ta wartość będzie równa 0, ale jak otworzyć tylko 1 zlecenie, albo o różnym wolumenie wtedy to się zmieni. Krótko mówiąc, są już gotowe funkcje, tylko teraz trzeba nauczyć się z tego korzystać
Kod: Zaznacz cały
//+------------------------------------------------------------------+
//| hedge_strategy_demo_2504202.mq4 |
//| Copyright 2018, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
int ticket;
int counter = 0;
int n = 0;
bool start = false;
int magicNumber = 16384;
int OnInit()
{
return(INIT_SUCCEEDED);
}
void OnDeinit(const int reason) {}
void OnTick()
{
int i;
if (!start) {
sendOrder(OP_BUY, 0.01, Ask);
//sendOrder(OP_SELL, 0.01, Bid);
start = true;
}
for (i = 0; i <= OrdersTotal(); i++) {
if(OrderSelect(i, SELECT_BY_POS))
Print(ticket + " " + i + " " + counter + " || " + OrderType() + " " + OrderProfit() + " " + OrderMagicNumber() + " " + AccountMargin());
}
RefreshRates();
}
void sendOrder(int cmd, double volume, double price)
{
ticket = OrderSend(Symbol(),cmd,volume,price,3,0,0,"My order"+counter,magicNumber,0,clrNONE);
counter++;
}
- ninjaproject
- Maniak
- Posty: 4944
- Rejestracja: 30 lip 2019, 13:15
Re: otwieranie podwójnej pozycji
Ten skrypt wyśle tylko 1 zlecenie, Buy.
I do tego będzie to tylko 1 próba, i tyle.
I do tego będzie to tylko 1 próba, i tyle.
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.
Programuję wskaźniki i EA do MetaTrader 4/5.
Re: otwieranie podwójnej pozycji
Początkowo chciałem coś dla przykładu wklepać ale potem przeszła mi ochota, bo w sumie po co... Chciałem tylko jakoś nakierować kolegę. Bo można wykorzystać np magic number do grupowania tych pozycji i przy prostej (naiwnej) implementacji otwierać pozycje o tym samym magic number i np przy stracie 25% kapitału pooczątkowego obliczyć w którą stronę otworzyć pozycje przeciwstawną i jakiej wielkości. Czyli przykładowa funkcja calchedge. Potem wysłać zlecenie funkcja sendhedge z warunkiem który sprawdza w zmiennej globalnej czy aktualna wartość magic number zgadza się z tym co zostało pobrane w calchedge do zmiennej "m", i to jest przekazane jako 4 parametr w funkcji sendhege. Następnie ta wartość jest zwiększana (zwiększasz licznik) i kolejne pozycje są z nowym magic number. Dzięki temu jest prosta metoda grupowania. Ale to nie jest jedyna metoda. Chciałem coś dać konkretniej poza samym gadaniem, ale mi przeszło potem W każdym razie jeszcze ten kawałek kodu wrzucam i tyle.ninjaproject pisze: ↑26 kwie 2020, 11:52Ten skrypt wyśle tylko 1 zlecenie, Buy.
I do tego będzie to tylko 1 próba, i tyle.
Kod: Zaznacz cały
//+------------------------------------------------------------------+
//| hedge_strategy_demo_2504202.mq4 |
//| Copyright 2018, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
int ticket;
int counter = 0;
int n = 0;
bool start = false;
int magicNumber = 16384;
int OnInit()
{
return(INIT_SUCCEEDED);
}
void OnDeinit(const int reason) {}
// główna pętla programu
void OnTick() {
if ((AccountEquity() / AccountBalance()) <= 0.75)
calchedge();
}
void calchedge()
{
double res, dl, dp, a, b;
int m;
for (i = 0; i <= OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS)) {
if (OrderProfit() > 0) {
a++;
dp += OrderLots();
} else {
b++;
dl += OrderLots();
}
// pobierz magic number
m = OrderMagicNumber();
}
}
res = dp - dl;
if (a > b) {
sendOrder(OP_BUY, res, Ask, m);
} else {
sendOrder(OP_SELL, res, Bid, m);
}
}
void sendhedge(int cmd, double volume, double price, int magic)
{
if (magic == magicNumber) {
ticket = OrderSend(Symbol(),cmd,volume,price,3,0,0,"My order"+counter,magicNumber,0,clrNONE);
magicNumber++; // zwiększ wartość magic number
counter++;
}
}
void sendOrder(int cmd, double volume, double price)
{
ticket = OrderSend(Symbol(),cmd,volume,price,3,0,0,"My order"+counter,magicNumber,0,clrNONE);
counter++;
}