Wszystkie pytania dozwolone początkujących programistów
jeśli o języki chodzi to od pascala przez c/c++/c# do java jakoś sobie radzę, z java to tak średnio niby projekt udało się sklecić
a i jeszcze php
obecnie na bazach jestem i nad tematem inżynierskiej się zastanawiam, może by MQL wykorzystać jak już będę dobrym traderem to się będzie można bawić, tak że przyjemne z pożytecznym by się połączyło.


“Obstacles can’t stop you. Problems can’t stop you. Most of all, other people can’t stop you. Only you can stop you.”J. Gitomer
"Otwórz oczy, pajacu." Sokrates
"Otwórz oczy, pajacu." Sokrates
- siersciuch
- Pasjonat
- Posty: 407
- Rejestracja: 06 kwie 2010, 20:31
jak napisać warunek do takiej sytuacji, chodzi mi Jeśli punkt xxx jest wyzej niż ta linia?
linie sobie przypisze do zmienne np A
????
linie sobie przypisze do zmienne np A
Kod: Zaznacz cały
if(xxx>a)
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
jeżeli będziesz uparty, prawdopodobnie częściej odniesiesz sukces, niż doznasz porażki.
A czy jest to linia narysowana na wykresie przez Ciebie jako obiekt o jakiejś tam nazwie ?
Dodano po 12 minutach:
Jeśli tak to trzeba rozstrzygnąć dwie możliwości :
1. Narysowana linia kończy się przed czasem badania ceny.
2. Narysowana linia trwa długo dalej niż punkt pomiaru.
Tak, czy inaczej musisz na początku kodu określić jaka jest nazwa linii. Np. :Później trzeba określić jaka jest wartość linii w punkcie pomiaru - również na dwa warianty :
No i teraz Twój warunek :
lub I do całości potrzeba funkcji obliczających wartość linii w obu wariantach. Oczywiście funkcje te dodajesz na końcu kodu :
Dodano po 12 minutach:
Jeśli tak to trzeba rozstrzygnąć dwie możliwości :
1. Narysowana linia kończy się przed czasem badania ceny.
2. Narysowana linia trwa długo dalej niż punkt pomiaru.
Tak, czy inaczej musisz na początku kodu określić jaka jest nazwa linii. Np. :
Kod: Zaznacz cały
extern string name = "Trendline 61997";
Kod: Zaznacz cały
double price = level(ObjectGet(name,OBJPROP_TIME1), ObjectGet(name,OBJPROP_TIME2),ObjectGet(name,OBJPROP_PRICE1),ObjectGet(name,OBJPROP_PRICE2));
double pricea = levela(ObjectGet(name,OBJPROP_TIME1), ObjectGet(name,OBJPROP_TIME2),ObjectGet(name,OBJPROP_PRICE1),ObjectGet(name,OBJPROP_PRICE2));
if(ObjectGet(name,OBJPROP_TIME2)>Time[0])LT=pricea;
if(ObjectGet(name,OBJPROP_TIME2)<=Time[0])LT=price;
Kod: Zaznacz cały
if(xxx>LT).....
Kod: Zaznacz cały
if(xxx<LT).......
Kod: Zaznacz cały
///////////////////////////////////////////////////////////////
double level(datetime time1, datetime time2,double price1,double price2)
{
int a = iBarShift(Symbol(),Period(),time2)-iBarShift(Symbol(),Period(),time1);
int b = iBarShift(Symbol(),Period(),time1);
double c = price2-price1;
return( -(c*b/a)+price1);
}
///////////////////////////////////////////////////////////////
double levela(datetime time1, datetime time2,double price1,double price2)
{ int ibar = (ObjectGet(name,OBJPROP_TIME2)-Time[0])/60;
int a = -ibar-iBarShift(Symbol(),Period(),time1);
int b = iBarShift(Symbol(),Period(),time1);
double c = price2-price1;
return( -(c*b/a)+price1);
}
Solą życia jest kasa.
Na stronie Luktoma (http://pl.luktom.biz/Page/72/luktom-trendline-alert) znajdziesz alarm aktywujący się po przecięciu linii - może on być dla Ciebie inspiracją 

- siersciuch
- Pasjonat
- Posty: 407
- Rejestracja: 06 kwie 2010, 20:31
Linia nie będzia miała końca tylko poczatek "promień". Pojawiają sie dwa punkty które połacze linia,a dopiero później bede sprawdzał warunek, czy cena jest powyżej lub poniżej.
wiec to jest ta funkcja?
wiec to jest ta funkcja?
Kod: Zaznacz cały
double level(datetime time1, datetime time2,double price1,double price2)
{
int a = iBarShift(Symbol(),Period(),time2)-iBarShift(Symbol(),Period(),time1);
int b = iBarShift(Symbol(),Period(),time1);
double c = price2-price1;
return( -(c*b/a)+price1);
}
jeżeli będziesz uparty, prawdopodobnie częściej odniesiesz sukces, niż doznasz porażki.
MkubuxK pisze:double iStochastic( string symbol, int timeframe, int %Kperiod, int %Dperiod, int slowing, int method, int price_field, int mode, int shift)
Zwraca Ci wartość double
int mode - ustawiasz którą linię stochastica ma Ci zwrócić licząc od 0.
Musisz sprawdzić jaką wartość miał stochastic świeczkę do tyłu a następnie wartość aktualną.
Jeśli ma dawać alert przy przebiciu 40 od dołu stoch z poprzedniej świeczki powinien mieć wartość mniejszą od 40 natomiast stoch aktualny większa lub równą 40.
Analogicznie z 60.
warunek będzie np taki
Kod: Zaznacz cały
double stochAktualny= iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,0); double stochPrzeszly = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,1); if((stochAktualny>=40&&stochPrzeszly<40)||(stochPrzeszly>60&&stochAktualny<=60))Alert("Twoja Wiadomość");
Działa gdy przebija od góry linię 60, ale nie daje sygnału gdy przebija od dołu linię 40.
Dodałem ten kod który podałeś w zakładce ''Custom indicator initialization function '' w Stochasticu.
Proszę o pomoc.
lasek
Warunek wygląda Ok więc powinno działać, możesz sobie sprawdzić wartości na dodając kod:
Bo oko może być mylne w stosunku do tego co rzeczywiście kryje się pod zmiennymi.
Warunek wygląda Ok więc powinno działać, możesz sobie sprawdzić wartości na dodając kod:
Kod: Zaznacz cały
Comment("stochAktualny: ",stochAktualny,"\nstochPrzeszly: ",stochPrzeszly);
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..