OrderClose?

O jezykach programowania w platformach i nie tylko.
bojgin
Bywalec
Bywalec
Posty: 18
Rejestracja: 09 cze 2010, 09:34

OrderClose?

Nieprzeczytany post autor: bojgin »

Chcę napisać OrderClose, ale nie wiem co trzeba wpisać w miejscu "Ticket"(unikalny numer zlecenia)? Jak napisać, żeby program brał pod uwagę każde aktualne zlecenie , zamykał je i otwierał kolejne?
pozdrawiam

Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

Albo jak wysyłasz zlecenie otwarcia to zapamiętujesz ticket, albo przeszukujesz wszystkie zlecenia
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

Awatar użytkownika
drapichrust
Stały bywalec
Stały bywalec
Posty: 73
Rejestracja: 03 gru 2009, 11:22

Nieprzeczytany post autor: drapichrust »

poprostu OrderTicket() i wklei Ci ticket aktualnego zlecenia
"Wyobraźnia jest ważniejsza od wiedzy, ponieważ wiedza jest ograniczona."
- Albert Einstein

Awatar użytkownika
potrzebujący ;)
Bywalec
Bywalec
Posty: 17
Rejestracja: 29 kwie 2012, 23:02

Nieprzeczytany post autor: potrzebujący ;) »

ja chciałbym aby przy otwarciu jednego zlecenia zamykane było zlecenie przeciwne... ale nie bardzo wiem jak użyć OrderCloseBy... Gdzie mam to wpisać i o co chodzi z tymi Ticket'ami?
5% z czegoś jest lepsze niż 100% z niczego :P

Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

potrzebujący ;) pisze:ja chciałbym aby przy otwarciu jednego zlecenia zamykane było zlecenie przeciwne... ale nie bardzo wiem jak użyć OrderCloseBy... Gdzie mam to wpisać i o co chodzi z tymi Ticket'ami?
nie wiem po co Ci OrderCloseBy - to jest zbędne

po prostu przed otwarciem (albo po) zamykasz to zlecenie które chcesz przez OrderClose, a tak się składa że zlecenia identyfikuje po nr Ticket więc albo musisz go zapamiętać przy otwieraniu albo przeszukujesz wszystkie zlecenia celem znalezienia tego Twojego i pobrania jego nr Ticket
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

EduSystem
Stały bywalec
Stały bywalec
Posty: 29
Rejestracja: 23 wrz 2011, 13:42

Nieprzeczytany post autor: EduSystem »

Tig3r pisze:[
nie wiem po co Ci OrderCloseBy - to jest zbędne
Wydaje mi się, że funkcja OrderCloseBy() zamyka otwartą pozycje przez drugą pozycję, która jest zleceniem przeciwstawnym. Zamknięcie pozycji przez pozycję przeciwstawnią powoduje naliczenia spreadu tylko za jedną pozycję.
Technika Ichimoku

Awatar użytkownika
CoVal
Gaduła
Gaduła
Posty: 320
Rejestracja: 06 paź 2005, 22:45

Nieprzeczytany post autor: CoVal »

bojgin pisze:Chcę napisać OrderClose, ale nie wiem co trzeba wpisać w miejscu "Ticket"(unikalny numer zlecenia)? Jak napisać, żeby program brał pod uwagę każde aktualne zlecenie , zamykał je i otwierał kolejne?
pozdrawiam
w czesci globalnej inicjujesz sobie zmienna ktora bedzie ci przechowywala numer biezacego ticketu:

Kod: Zaznacz cały

int presentTicket=0;
zalozmy, ze otwierasz pierwsza pozycje:

Kod: Zaznacz cały

presentTicket=OrderSend(....);
i zapamietujesz kierunek w jakim byla otwarta:

Kod: Zaznacz cały

OrderSelect(presentTicket,SELECT_BY_TICKET);
posDirection=OrderType();
potem przychodza tam kiedys warunki do zamkniecia tej pozycji:

Kod: Zaznacz cały

OrderClose(presentTicket,.....);
oraz otwarcia nowej, przeciwstawnej pozycji - najpierw jednak sprawdzamy w jakim kierunku:

Kod: Zaznacz cały

if(posDirection==OP_BUY) newDirection=OP_SELL;
else newDirection=OP_BUY;
i otwieramy ta nowa - tak jak poprzednio:

Kod: Zaznacz cały

presentTicket=OrderSend(Symbol(),newDirection,....);
to tylko glowna idea, ktora trzebaby troche rozbudowac o zabezpieczenia i reakcje w przypadku kiedy cos pojdzie nie tak jak trzeba, itd.

Oczywiscie w przypadku jesli planujesz miec wiecej niz jedna pozycje na danym instrumencie, to kod bedzie troche bardziej rozbudowany o wyszukiwanie okreslonej pozycji, itd.

pzdr,

CoVal

Dodano po 15 minutach:
EduSystem pisze:
Tig3r pisze:[
nie wiem po co Ci OrderCloseBy - to jest zbędne
Wydaje mi się, że funkcja OrderCloseBy() zamyka otwartą pozycje przez drugą pozycję, która jest zleceniem przeciwstawnym. Zamknięcie pozycji przez pozycję przeciwstawnią powoduje naliczenia spreadu tylko za jedną pozycję.
Zgodnie z tym co jest napisane w helpie (czasem warto poczytac) to OrderCloseBy() zamyka jedna pozycje poprzez druga pozycje ALE tylko wtedy kiedy obie pozycje sa juz otwarte, a nie w przypadku kiedy chcesz zamknac jedna pozycje i zaraz otworzyc druga przeciwstawna.
Jednakze:
1. nie u wszystkich brokerow to dziala.
2. To moze miec zastosowanie w szczegolnych warunkach hedge-owania pozycji i to tylko przy zalozeniu, ze broker nie pobiera swojej calej prowizji w postaci spreadu przy otwieraniu pozycji a pobiera czesc przy otwieraniu i czesc przy zamykaniu.
3. No i hedge musi byc dozwolony u tego brokera...

Nie testowalem jednak tego nigdy w taki sposob, aby oba instrumenty byly rozne :)

Awatar użytkownika
potrzebujący ;)
Bywalec
Bywalec
Posty: 17
Rejestracja: 29 kwie 2012, 23:02

Nieprzeczytany post autor: potrzebujący ;) »

A co jeśli chce otworzyć dwie pozycje w tym samym kierunku i w tym samym momencie ale z różnymi parametrami, np. jedna będzie miała TakeProfit=200 a druga TakeProfit=300??
I jeszcze jedno (mam nadzieje, że to nie jest zbyt głupie pytanie nawet jak na dział dla początkujących :oops: ) jak zapamiętać ticket konkretnego zlecenia? Bo później obie pozycje będą miały różne TrailingStopy i domyślam się, że będę musiał tam to wykorzystać...?

Z góry dziękuje za Waszą nieocenioną pomoc :pray:
5% z czegoś jest lepsze niż 100% z niczego :P

Awatar użytkownika
CoVal
Gaduła
Gaduła
Posty: 320
Rejestracja: 06 paź 2005, 22:45

Nieprzeczytany post autor: CoVal »

1. otwierasz po prostu 2 kolejne pozycje w tym samym kierunku z roznymi parametrami TP.

2. albo ticket kazdej z pozycji zapamietujesz do innej zmiennej:
ticket1=OrderSend(..., TP1,...);
ticket2=OrderSend(...,TP2,....);

albo bawisz sie kazdorazowo w przeszukiwanie wszystkich otwartych pozycji i identyfikujesz je sobie np. po magic number albo po komentarzu.

Awatar użytkownika
potrzebujący ;)
Bywalec
Bywalec
Posty: 17
Rejestracja: 29 kwie 2012, 23:02

Nieprzeczytany post autor: potrzebujący ;) »

Dzięki ;D
5% z czegoś jest lepsze niż 100% z niczego :P

ODPOWIEDZ