Wszystkie pytania dozwolone początkujących programistów

O jezykach programowania w platformach i nie tylko.
remyg
Bywalec
Bywalec
Posty: 15
Rejestracja: 26 maja 2012, 19:04

Nieprzeczytany post autor: remyg »

Napisałem pierwszą w karierze strategię, która jest jako tako na plusie w testerze. Chciałbym to sprawdzić na demo a potem przejść na live.

Proszę o podpowiedź, która pozwoli mi przeskoczyć kilka etapów testowania.

Chodzi o to, że moja strategia przewiduje wykonanie pewnej ilości (powiedzmy od 1 do 15) operacji w jednym i tym samym momencie. Jest to np. BUY i jednocześnie BUYSTOP lub np. szereg OrderClose.

Pytanie: czy brokerzy pozwolą mi na tego typu operacje? Czy to się różni w zależności od brokera? Czy może powinienem pomyśleć o zaprogramowaniu timeoutów - i tu też, ile czasu między orderami?

Z góry wielkie dzięki za kilka słów komentarzu.

Dodano po 13 minutach:
Stforex pisze:Witajcie,

Ostatnio czytałem o gotowych builderach strategii, dla "tumanów" bez znajomości informatyki ;).
Czy to do czegoś się przydaje? Czy możecie polecić jakiegoś buildera?
Ja zainstalowałem testową wersję Molanisa i skończyło się tym, że zamiast go kupić zacząłem powolutku pisać bezpośrednio w mql4.

Mój background informatyczny polega na tym, że wcześniej troszkę uczyłem się Pythona. Konkretnie, to dojechałem do 14 lekcji tego podręcznika:
http://openbookproject.net/thinkcs/pyth ... index.html
Python to dobry język dla początkującego bo ma prostą składnię i człowiek skupia się na rozumieniu podstawowych (uniwersalnych dla wszystkich języków!!!) pojęć i pożytecznych nawyków.

Przejście z Pythona na MQL4 (odmiana języka C) poszła mi dosyć gładko, trzeba tylko uważać na wszędobylskie IDIOTYCZNE nawiasy :)

Nie wiem, może komuś pomoże "moja historia" hehe :)

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

Nieprzeczytany post autor: Tig3r »

remyg pisze:Pytanie: czy brokerzy pozwolą mi na tego typu operacje? Czy to się różni w zależności od brokera? Czy może powinienem pomyśleć o zaprogramowaniu timeoutów - i tu też, ile czasu między orderami?
Realizacja zleceń leży po stronie brokera, a te wykonuje się jedna po drugiej. trzeba więc brać pod uwagę czas realizacji zlecenia (myślę że rozsądny poziom to 1s. Przede wszystkim sprawdzać realizację zlecenia bo samo wysłanie nie jest jednoznaczne z otwarciem (funkcje obsługujące zlecenia zwracają wynik).

Możliwe jest wykonanie powiedzmy tych 15 operacji jedna po drugiej, w określonym czasie ale nie na raz. Należy też mieć na uwadze że mogą być requoty, poślizgi czy opóźnienia w przetwarzaniu zleceń - trzeba być na to przygotowanym i odpowiednio obsługiwać takie wyjątki.
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

remyg
Bywalec
Bywalec
Posty: 15
Rejestracja: 26 maja 2012, 19:04

Nieprzeczytany post autor: remyg »

Dzięki, rozumiem. Pytanie tylko czy sam broker nie zidentyfikuje mnie jako jakiegoś floodera jeśli będę wysyłał szereg zleceń jednocześnie?

Awatar użytkownika
Esco
Przyjaciel Forum
Przyjaciel Forum
Posty: 2603
Rejestracja: 11 kwie 2010, 20:56

Nieprzeczytany post autor: Esco »

Pewnym obejściem problemu jest otwarcie pojedynczego zlecenia o sumie równej wszystkim otwartym na danej parze a później już "na spokojnie" użycie opcji "zamknij przez".

remyg
Bywalec
Bywalec
Posty: 15
Rejestracja: 26 maja 2012, 19:04

Nieprzeczytany post autor: remyg »

Dzięki, niestety nie bardzo rozumiem.
Mam kilka otwartych pozycji (otwieranych w różnym czasie) to jak je przekonwertować w jedną pozycję? Przecież taka konwersja również wymaga zlikwidowania tych otwartych pozycji czyli de facto ten sam problem powraca.

Awatar użytkownika
Esco
Przyjaciel Forum
Przyjaciel Forum
Posty: 2603
Rejestracja: 11 kwie 2010, 20:56

Nieprzeczytany post autor: Esco »

remyg pisze: Mam kilka otwartych pozycji (otwieranych w różnym czasie) to jak je przekonwertować w jedną pozycję?
Nie, tak naprawdę masz jedna pozycje (ekspozycje) po średniej cenie. Podział na pozycje jest wyłącznie kwestią umowną.
remyg pisze: Przecież taka konwersja również wymaga zlikwidowania tych otwartych pozycji czyli de facto ten sam problem powraca.
Technicznie rzecz biorąc otwarcie pozycji przeciwnej o rozmiarze równym sumie pozycji jest ich zamknięciem. Zamiast zamykać np 10 pozycji po 0.1 otwierasz przeciwna na 1.0 lot.

Jest to pojedyncza operacja zabezpieczająca zysk zamiast 10 kolejnych w trakcie których wykonywania cena może się zmienić.

remyg
Bywalec
Bywalec
Posty: 15
Rejestracja: 26 maja 2012, 19:04

Nieprzeczytany post autor: remyg »

Dzięki, to co mówisz jest genialne. Muszę wszystko przemyśleć od nowa. Jeszcze raz dzięki!

borutex
Uczestnik
Uczestnik
Posty: 1
Rejestracja: 04 wrz 2010, 10:31

Nieprzeczytany post autor: borutex »

Witam wszystkich,
Mam takie pytanie, czy ciężką sprawą jest dodanie do EA konkretnych wartości kolejnych zleceń po SL. Czyli chciałbym przykładowo żeby robot po stracie zawierał mi zlecenia odpowiednio (0.1;0.1;0.1;0.1;0.2;0.2;0.3..... itd itd) chodzi mi o to, żeby samemu można było ustalić konkretne wartości a nie przy pomocy modyfikowanego semi-martingale o ileś tam %.

Z góry dziękuję za odpowiedź i pozdrawiam

Awatar użytkownika
mikolaj2
Gaduła
Gaduła
Posty: 231
Rejestracja: 04 maja 2011, 14:37

Nieprzeczytany post autor: mikolaj2 »

Witam! Chciałbym w łatwy i szybki sposób :-) stworzyć na wykresie linie na podstawie cen zawartych w tablicy (chodzi o zobrazowanie poprawności pewnych obliczeń) - problem jaki spotykam to fakt, że polecenie z którego korzystam tj.

Kod: Zaznacz cały

ObjectCreate("MojaLinia", OBJ_VLINE, 0,0, poziom);
nie dopuszcza istnienia dwóch obiektów o takiej samej nazwie :-( Proszę o pomoc w rozwiązaniu problemu - może należy użyć innego rozkazu?

Awatar użytkownika
Esco
Przyjaciel Forum
Przyjaciel Forum
Posty: 2603
Rejestracja: 11 kwie 2010, 20:56

Nieprzeczytany post autor: Esco »

należy zastosować poniższe rozwiązanie gdzie "i" to indeks tablic z poziomami cenowymi.

Kod: Zaznacz cały

ObjectCreate("MojaLinia"+i, OBJ_VLINE, 0,0, poziom[i]);

ODPOWIEDZ