Wszystkie pytania dozwolone początkujących programistów
Re: Wszystkie pytania dozwolone początkujących programistów
Szukałem już na tej pierwszej stronie i po prostu nie ogarniam tego całego programowania zawsze błędy i nie wiem co dopisać co zmienić wiec jak by ktoś inny napisał jak to powinno wyglądać będę wdzięczny
i teraz dlaczego otworzyło mi po jednym zleceniu a nie cały czas, czyli bierze tp albo sl i zleca następne bierze tp albo sl i następne i tak w kółko, druga sprawa to na początku chciałem otworzyć zlecenie natychmiastowe i do tego automatycznie oczekujące właśnie z zadanym dystansem
a jak nie to może od tego zaczniemy (cel taki sam ale krok po kroku to i ja bym zrozumiał)Chciałem napisać ea który by otwierał zlecenia przeciwstawne w odległości x pip, dokładniej tłumacząc, otwieram dowolne zlecenie przykładowo buy teraz jeżeli cena spadnie o xx pipów to otworzy sie drugie zlecenie na sell
Kod: Zaznacz cały
extern int MAGIC = 666;
extern double lot = 0.01;
extern int Stoploss = 800;
extern int Takeprofit = 400;
extern int Distance = 400;
int OnInit()
{
//---
if(OrdersTotal()==0)
{
OpenBuyStop();
OpenSellStop();
}
return(INIT_SUCCEEDED);
}
void OnDeinit(const int reason)
{
}
void OnTick()
{
}
void OpenSellStop()
{
double price = Bid - Distance*Point;
while(!OrderSend(Symbol(),OP_SELLSTOP,lot,NormalizeDouble(price, Digits),2,NormalizeDouble(price+Stoploss*Point, Digits),NormalizeDouble(price-Takeprofit*Point, Digits),"PendingSellStop",MAGIC,0,Red))
{
Comment(GetLastError());
}
}
void OpenBuyStop()
{
double price = Ask + Distance*Point;
while(!OrderSend(Symbol(),OP_BUYSTOP,lot,NormalizeDouble(price, Digits),2,NormalizeDouble(price-Stoploss*Point, Digits),NormalizeDouble(price+Takeprofit*Point, Digits),"PendingBuyStop",MAGIC,0,Blue))
{
Comment(GetLastError());
}
}
Re: Wszystkie pytania dozwolone początkujących programistów
OnInit() wykonuje się tylko raz, przy ładowaniu EA.
Przede wszystkim powinieneś umieścić wywołanie swoich funkcji w OnTick().
W drugiej kolejnosci musisz uzależnić cenę wystawienia zlecenia od poprzedniego zlecenia (właściwości zlecenia).
price = Ask + Distance*Point; - to za każdym razem zwraca cenę o jakiś poziom zwiększony o dystans, ale nie ma to żadnego związku z Twoim poprzednim zleceniem.
Przede wszystkim powinieneś umieścić wywołanie swoich funkcji w OnTick().
W drugiej kolejnosci musisz uzależnić cenę wystawienia zlecenia od poprzedniego zlecenia (właściwości zlecenia).
price = Ask + Distance*Point; - to za każdym razem zwraca cenę o jakiś poziom zwiększony o dystans, ale nie ma to żadnego związku z Twoim poprzednim zleceniem.
Re: Wszystkie pytania dozwolone początkujących programistów
Jak Ci to napiszę to i tak nic to nie da. Jeśli chcesz realizować swoje pomysły to musisz nauczyć się pisać programy. A jak nie chcesz pisać to szukaj. 95 % pomysłów została już napisana. Może przesadzam ale większość. W tamtym roku napisałem kilkanaście tego typu EA. Może troszkę bardziej zaawansowanych. Tak z ciekawości zobacz. Ekspert cztero-systemowy z możliwością handlu pół-automatycznego. Link: https://youtu.be/-A4Ky4LuzwQ
Re: Wszystkie pytania dozwolone początkujących programistów
Z tymi wszystkimi EA, które grają na różne kombinacje wybić z boxów, z tymi elementami typu recovery wszystko ładnie wygląda, ale tylko na filmach. Jak (co w zasadzie jest regułą) dane historyczne na takim filmie są byle jakie to widać, że handel w oparciu o wychodzenie ze stref jest bardzo dobrym pomysłem. W praktyce jest inaczej. Cena potrafi niezliczoną liczbę razy wracać do strefy po wybiciu, aktywując SL, pozycje odwrotne, zależy jak to jest pomyślane. W efekcie straty rosną i cały piękny plan w piz... 
Na FF jakiś gość sprzedawał coś podobnego za 800 USD.
Też piękne filmy wklejał. Same zyski były. Ale na swoje nieszczęście udostępnił do testów demo jedną z wersji.
Jedna wielka porażka.

Na FF jakiś gość sprzedawał coś podobnego za 800 USD.
Też piękne filmy wklejał. Same zyski były. Ale na swoje nieszczęście udostępnił do testów demo jedną z wersji.
Jedna wielka porażka.
Re: Wszystkie pytania dozwolone początkujących programistów
Zamieściłem tak z ciekawości dla icemana. Tak,tak dane na filmie są kiepskiej jakości bo chodziło mi o czas. Jest to wersja komercyjna i testowana na na jakości modelowania 99,9 [Tick Data]. Kupiło go kilku Azjatów i jak na razie psów na mnie nie wieszają. Nie na mawiam nikogo do kupna. Osobiście używam go (albo podobne) w trybie Semi-Auto [ale też nie regularnie bo praktycznie codziennie piszę coś nowego]. W trybie automatycznym 0.01(początkowy) Lota zyski są małe (30-50 dolarów miesięcznie za okres od listopada do końca stycznia). Chodziło mi o pokazanie różnych możliwości składania zleceń oczekujących. W tym EA zastosowałem wiele rozwiązań ale mam też wiele innych EA które analizują historię obliczają statystyki wybić ze stref, ustawiają wirtualne transakcje, porównują to z innymi parami, obliczają tak zwana "cuda wianki" itd. Jak sam programujesz to wiesz, że pomysłów nie ma końca.
Pozdrawiam
Pozdrawiam
Re: Wszystkie pytania dozwolone początkujących programistów
Nie jest łatwo tak czy inaczej. 

Re: Wszystkie pytania dozwolone początkujących programistów
Hej chciałbym zapytać, jak odczytywać cenę otwarcia i zamknięcia świeczki o danej godzinie ?
iHigh i iLow to wiem.
iHigh i iLow to wiem.
Skype marcinmc92
Re: Wszystkie pytania dozwolone początkujących programistów
Mam taki przykładowy kod, niezbyt elegancki, ale zawsze to jakiś punkt wyjścia. Kluczem jest funkcja iBarShift, która zwraca indeks świecy na danym interwale dla danej daty. Jak chcesz od razu pobrać dane historyczne, to można w pętli wygenerować jakieś stringi z datami (nawet nieistniejącymi) i po prostu odfiltrować wyniki, w których iBarShift zwróci -1
Albo w ogóle można przejść w pętli przez historię i sprawdzać warunek czy wartość Hour() zmieniła się na szukaną godzinę i jak tak, to sobie do jakiejś tablicy zapisywać aktualną cenę.
Tu link do dokumentacji na temat iBarShift:
https://docs.mql4.com/series/ibarshift
Albo w ogóle można przejść w pętli przez historię i sprawdzać warunek czy wartość Hour() zmieniła się na szukaną godzinę i jak tak, to sobie do jakiejś tablicy zapisywać aktualną cenę.
Kod: Zaznacz cały
string data;
int godzina = 7;
int numerSwiecy;
void OnStart()
{
//---
data = Year()+"."+Month()+"."+Day()+" "+godzina;
numerSwiecy=iBarShift(Symbol(),PERIOD_H1,StrToTime(data),true);
Print(iOpen(Symbol(),PERIOD_H1,numerSwiecy));
}
//+------------------------------------------------------------------+
https://docs.mql4.com/series/ibarshift
Re: Wszystkie pytania dozwolone początkujących programistów
Witam,
moje EA zamyka wszystkie zlecenia na danej parze walutowej, niezależnie czy są to zlecenia otwarte przez EA, czy np ręcznie. Jaki parametr powinien być zawarty, aby EA zarządzało zleceniami tylko otwartymi przez siebie.
Domyślam się, że trzeba dodać parametr magic number, ale nie wiem jak;/
Z góry dzięki za pomoc
moje EA zamyka wszystkie zlecenia na danej parze walutowej, niezależnie czy są to zlecenia otwarte przez EA, czy np ręcznie. Jaki parametr powinien być zawarty, aby EA zarządzało zleceniami tylko otwartymi przez siebie.
Domyślam się, że trzeba dodać parametr magic number, ale nie wiem jak;/
Z góry dzięki za pomoc