Najwyższa cena od otwartego zlecenia
Najwyższa cena od otwartego zlecenia
Witam serdecznie,
W jaki sposób mogę obliczyć najwyższą cenę od otwartego zlecenia. Dokładnie rzecz biorąc myślałem na tym aby zrobić taki ruchomy takeprofit.
Miał by on działać w następujący sposób:
Mam otwarte zlecenie sprzedaży na 1.6600 załóżmy ze cena wzrosła do poziomu 1.7600 i chciałbym aby został ustawiony takeprofit na poziomie 1.5600 czyli od ceny otwarcia zlecenia odejmuję najwyższą cenę, po czym dodaje do ceny otwarcia różnice uzyskując w ten sposób wartość jaka ma być przypisana do takeprofit.
Nie wiem jak obliczyć ihightes od konkretnego otwartego zlecenia.
W jaki sposób mogę obliczyć najwyższą cenę od otwartego zlecenia. Dokładnie rzecz biorąc myślałem na tym aby zrobić taki ruchomy takeprofit.
Miał by on działać w następujący sposób:
Mam otwarte zlecenie sprzedaży na 1.6600 załóżmy ze cena wzrosła do poziomu 1.7600 i chciałbym aby został ustawiony takeprofit na poziomie 1.5600 czyli od ceny otwarcia zlecenia odejmuję najwyższą cenę, po czym dodaje do ceny otwarcia różnice uzyskując w ten sposób wartość jaka ma być przypisana do takeprofit.
Nie wiem jak obliczyć ihightes od konkretnego otwartego zlecenia.
Re: Najwyższa cena od otwartego zlecenia
Musisz utworzyć zmienną
I teraz nadpisujesz tą wartość :
Ta wartość high będzie zawsze tą najwyższą jaką osiągnęła cena.
Tylko musisz pomyśleć nad tym, żeby nie nadpisywało zawsze tylko wtedy kiedy chcesz np. odkąd jest otwarte zlecenie do czasu jak zlecenie zostanie zamknięte. Wtedy zerujesz
Kod: Zaznacz cały
double high;
Kod: Zaznacz cały
if(Bid>high)high=Bid;
Tylko musisz pomyśleć nad tym, żeby nie nadpisywało zawsze tylko wtedy kiedy chcesz np. odkąd jest otwarte zlecenie do czasu jak zlecenie zostanie zamknięte. Wtedy zerujesz
Kod: Zaznacz cały
high=0;
Solą życia jest kasa.
- ninjaproject
- Maniak
- Posty: 4944
- Rejestracja: 30 lip 2019, 13:15
Re: Najwyższa cena od otwartego zlecenia
Bez sensu.personov pisze: ↑04 paź 2020, 21:03Musisz utworzyć zmiennąI teraz nadpisujesz tą wartość :Kod: Zaznacz cały
double high;
Ta wartość high będzie zawsze tą najwyższą jaką osiągnęła cena.Kod: Zaznacz cały
if(Bid>high)high=Bid;
Tylko musisz pomyśleć nad tym, żeby nie nadpisywało zawsze tylko wtedy kiedy chcesz np. odkąd jest otwarte zlecenie do czasu jak zlecenie zostanie zamknięte. Wtedy zerujeszKod: Zaznacz cały
high=0;
Napisałeś tyle, że Bid=Bid.
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: Najwyższa cena od otwartego zlecenia
Trzeba według czasu otwarcia zlecenia odczytać index świecy z funkcji iBarShift().
I wtedy odszukać wartość iHighest(), lub iLowest().
A czas otwarcia zlecenia trzeba odczytać z takiej bardziej złożonej pętli.
I wtedy odszukać wartość iHighest(), lub iLowest().
A czas otwarcia zlecenia trzeba odczytać z takiej bardziej złożonej pętli.
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: Najwyższa cena od otwartego zlecenia
Problem częściowo rozwiązany, skrypt działa prawidłowo. Czy może mi ktoś pomóc umieścić to w pętli tak aby każde otwarte zlecenie miało zmodyfikowany TakeProfit. Zgodnie z tym założeniem
Mam otwarte zlecenie sprzedaży na 1.6600 załóżmy ze cena wzrosła do poziomu 1.7600 i chciałbym aby został ustawiony takeprofit na poziomie 1.5600 czyli od ceny otwarcia zlecenia odejmuję najwyższą cenę, po czym dodaje do ceny otwarcia różnice uzyskując w ten sposób wartość jaka ma być przypisana do takeprofit.
Kod: Zaznacz cały
void OnStart()
{
int Ticket = 63964457; // numer zlecenia, w moim przypadku jest to Sell
if(OrderSelect(Ticket, SELECT_BY_TICKET) == true)
{
datetime CurrentOpenTime = OrderOpenTime();
int shift=iBarShift("EURUSD",PERIOD_M5,CurrentOpenTime);
Print("Czas otwarcia pozycji ",Ticket," jest ",CurrentOpenTime,".");
Print("Ilosc barów od otwartej pozycji do obecnego czasu ",TimeToStr(CurrentOpenTime)," is ",shift);
int indexBarHighestOpen = iHighest("EURUSD", PERIOD_M5, MODE_OPEN, shift, 0);
Print("Najwyższy bar ",indexBarHighestOpen);
double openPrice = iHigh("EURUSD", PERIOD_M5, indexBarHighestOpen);
Print("Cena najwyższego baru ",openPrice);
}
else
Print("Nie udało się wybrać pozycję ",Ticket,". Błąd = ",GetLastError());
RefreshRates();
}
- ninjaproject
- Maniak
- Posty: 4944
- Rejestracja: 30 lip 2019, 13:15
Re: Najwyższa cena od otwartego zlecenia
Oczywiście, że mogę napisać ci EA z taką funkcjonalnością.Kris82 pisze: ↑05 paź 2020, 15:27Problem częściowo rozwiązany, skrypt działa prawidłowo. Czy może mi ktoś pomóc umieścić to w pętli tak aby każde otwarte zlecenie miało zmodyfikowany TakeProfit. Zgodnie z tym założeniemMam otwarte zlecenie sprzedaży na 1.6600 załóżmy ze cena wzrosła do poziomu 1.7600 i chciałbym aby został ustawiony takeprofit na poziomie 1.5600 czyli od ceny otwarcia zlecenia odejmuję najwyższą cenę, po czym dodaje do ceny otwarcia różnice uzyskując w ten sposób wartość jaka ma być przypisana do takeprofit.Kod: Zaznacz cały
void OnStart() { int Ticket = 63964457; // numer zlecenia, w moim przypadku jest to Sell if(OrderSelect(Ticket, SELECT_BY_TICKET) == true) { datetime CurrentOpenTime = OrderOpenTime(); int shift=iBarShift("EURUSD",PERIOD_M5,CurrentOpenTime); Print("Czas otwarcia pozycji ",Ticket," jest ",CurrentOpenTime,"."); Print("Ilosc barów od otwartej pozycji do obecnego czasu ",TimeToStr(CurrentOpenTime)," is ",shift); int indexBarHighestOpen = iHighest("EURUSD", PERIOD_M5, MODE_OPEN, shift, 0); Print("Najwyższy bar ",indexBarHighestOpen); double openPrice = iHigh("EURUSD", PERIOD_M5, indexBarHighestOpen); Print("Cena najwyższego baru ",openPrice); } else Print("Nie udało się wybrać pozycję ",Ticket,". Błąd = ",GetLastError()); RefreshRates(); }
Skontaktuj się ze mną na PW.
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: Najwyższa cena od otwartego zlecenia
Nieprawda. Ten zapis mówi dokładnie, że jeśli aktualna cena jest wyższa od zapisanej "high" to zapisz "high" jako aktualną cenę.ninjaproject pisze: ↑04 paź 2020, 22:49Bez sensu.personov pisze: ↑04 paź 2020, 21:03Musisz utworzyć zmiennąI teraz nadpisujesz tą wartość :Kod: Zaznacz cały
double high;
Ta wartość high będzie zawsze tą najwyższą jaką osiągnęła cena.Kod: Zaznacz cały
if(Bid>high)high=Bid;
Tylko musisz pomyśleć nad tym, żeby nie nadpisywało zawsze tylko wtedy kiedy chcesz np. odkąd jest otwarte zlecenie do czasu jak zlecenie zostanie zamknięte. Wtedy zerujeszKod: Zaznacz cały
high=0;
Napisałeś tyle, że Bid=Bid.
Czyli "high" będzie zawsze uaktualniane jeśli cena będzie wyższa. "High" będzie zawsze najwyższą ceną jaka wystąpiła.
Solą życia jest kasa.
- ninjaproject
- Maniak
- Posty: 4944
- Rejestracja: 30 lip 2019, 13:15
Re: Najwyższa cena od otwartego zlecenia
OK, ale to nie tak się robi.personov pisze: ↑06 paź 2020, 00:12Nieprawda. Ten zapis mówi dokładnie, że jeśli aktualna cena jest wyższa od zapisanej "high" to zapisz "high" jako aktualną cenę.ninjaproject pisze: ↑04 paź 2020, 22:49Bez sensu.personov pisze: ↑04 paź 2020, 21:03Musisz utworzyć zmiennąI teraz nadpisujesz tą wartość :Kod: Zaznacz cały
double high;
Ta wartość high będzie zawsze tą najwyższą jaką osiągnęła cena.Kod: Zaznacz cały
if(Bid>high)high=Bid;
Tylko musisz pomyśleć nad tym, żeby nie nadpisywało zawsze tylko wtedy kiedy chcesz np. odkąd jest otwarte zlecenie do czasu jak zlecenie zostanie zamknięte. Wtedy zerujeszKod: Zaznacz cały
high=0;
Napisałeś tyle, że Bid=Bid.
Czyli "high" będzie zawsze uaktualniane jeśli cena będzie wyższa. "High" będzie zawsze najwyższą ceną jaka wystąpiła.
Napisałem jak to się robi.
EA powinno:
1. Stawiać zlecenie, np. na kliknięcie na guziku (i tu można dodać całe zarzadzanie ryzykiem),
2. Jak stawia zlecenie, to można dodać magic number i nawet komentarz.
3. Następnie, EA w pętli przeszukuje otwarte zlecenia.
4. Identyfikuje tylko te, które mają zadany magic number, symbol (na którym EA działa), i ew. komentarz.
5. Odczytuje czas zlecenia (OrderOpenTime()).
6. Odczytuje index świecy zlecenia z iBarShift().
7. Odczytuje cenę najwyższą z iHigh(iHighest()) w zakresie od indexu świecy zlecenia do np. świecy 1, lub 0.
8. Wykonuje co trzeba.
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.