otwieranie podwójnej pozycji

Miejsce, gdzie początkujący mogą zadawać nawet najbardziej dziwne pytania.
Awatar użytkownika
raposo
Moderator
Moderator
Posty: 9979
Rejestracja: 22 wrz 2006, 22:10

Re: otwieranie podwójnej pozycji

Nieprzeczytany post autor: raposo »

Skullknead pisze:
24 kwie 2020, 12:57
raposo gdzie najlepiej zacząć poszukiwania skryptu?
Google ;)
https://www.mql5.com/en/code
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

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

Re: otwieranie podwójnej pozycji

Nieprzeczytany post autor: ninjaproject »

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.

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

Re: otwieranie podwójnej pozycji

Nieprzeczytany post autor: ninjaproject »

Sorry, ten jest do MT4:
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.

Cblondyn
Maniak
Maniak
Posty: 6615
Rejestracja: 03 sty 2011, 12:09

Re: otwieranie podwójnej pozycji

Nieprzeczytany post autor: Cblondyn »

Skullknead pisze:
24 kwie 2020, 12:57
W jakim celu? W imię nauki ;) raposo gdzie najlepiej zacząć poszukiwania skryptu?
Nie za bardzo wierze, że to ma coś wspólnego z nauką ;)
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

-rookie-
Maniak
Maniak
Posty: 2307
Rejestracja: 13 kwie 2015, 19:00

Re: otwieranie podwójnej pozycji

Nieprzeczytany post autor: -rookie- »

Cblondyn pisze:
24 kwie 2020, 16:03
Skullknead pisze:
24 kwie 2020, 12:57
W jakim celu? W imię nauki ;) raposo gdzie najlepiej zacząć poszukiwania skryptu?
Nie za bardzo wierze, że to ma coś wspólnego z nauką ;)
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
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.

Skullknead
Uczestnik
Uczestnik
Posty: 4
Rejestracja: 24 kwie 2020, 03:10

Re: otwieranie podwójnej pozycji

Nieprzeczytany post autor: Skullknead »

-rookie- pisze:
24 kwie 2020, 19:31
Cblondyn pisze:
24 kwie 2020, 16:03
Skullknead pisze:
24 kwie 2020, 12:57
W jakim celu? W imię nauki ;) raposo gdzie najlepiej zacząć poszukiwania skryptu?
Nie za bardzo wierze, że to ma coś wspólnego z nauką ;)
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
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.
Jestem na 15 stronie instrukcji z 300 do mt4 więc raczej wielu rzeczy za bardzo nie wiem. :lol: Dzięki wszystkim za pomocne linki i odpowiedzi :564:

brg
Gaduła
Gaduła
Posty: 256
Rejestracja: 06 lut 2007, 18:58

Re: otwieranie podwójnej pozycji

Nieprzeczytany post autor: brg »

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.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

-rookie-
Maniak
Maniak
Posty: 2307
Rejestracja: 13 kwie 2015, 19:00

Re: otwieranie podwójnej pozycji

Nieprzeczytany post autor: -rookie- »

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 :lol: 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ć :o

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++;
} 

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

Re: otwieranie podwójnej pozycji

Nieprzeczytany post autor: ninjaproject »

Ten skrypt wyśle tylko 1 zlecenie, Buy.
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.

-rookie-
Maniak
Maniak
Posty: 2307
Rejestracja: 13 kwie 2015, 19:00

Re: otwieranie podwójnej pozycji

Nieprzeczytany post autor: -rookie- »

ninjaproject pisze:
26 kwie 2020, 11:52
Ten skrypt wyśle tylko 1 zlecenie, Buy.
I do tego będzie to tylko 1 próba, i tyle.
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 8) W każdym razie jeszcze ten kawałek kodu wrzucam 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++;
} 

ODPOWIEDZ