Alarm przecięcia poziomu 0 w wskaźniku.

O jezykach programowania w platformach i nie tylko.
Cadermo

Alarm przecięcia poziomu 0 w wskaźniku.

Nieprzeczytany post autor: Cadermo »

Witam ,potrzebuję alarmu ,który poinformuje mnie o przecięciu poziomu 0 w wskaźniku CCI 14 (wersja Woodie ). Czy jest takie coś ?

Awatar użytkownika
altmer
Gaduła
Gaduła
Posty: 115
Rejestracja: 05 gru 2010, 00:04

Nieprzeczytany post autor: altmer »

CCI_Woodies_Lnx_v6 ma jakiś taki alert, domyślnie jest wyłączony. Jest kod, więc ewentualnie można zmodyfikować dla własnych potrzeb.

Cadermo

Nieprzeczytany post autor: Cadermo »

Problem w tym ,że zupełnie się na tym nie znam :(

Awatar użytkownika
altmer
Gaduła
Gaduła
Posty: 115
Rejestracja: 05 gru 2010, 00:04

Nieprzeczytany post autor: altmer »

Ale na czym? :) Wystarczy dodać wskaźnik pod wykres, potem otworzyć jego właściwości i ZeroLineCross_Alert przestawić na true. Alarm ma polegać na wyświetleniu tekstu z wiadomością.

Można też przestawić to bezpośrednio w kodzie:

Kod: Zaznacz cały

extern bool  ZeroLineCross_Alert=false;
zamieniamy false na true, kompilujemy (klawisz F5) i już.

Kod można zmodyfikować choćby tak:
** dodanie sygnału dźwiękowego **
Pod albo przed tą linijką:

Kod: Zaznacz cały

Alert(Symbol(), " M", Period(), " Trend & Entry CCI Have both crossed below zero");
dodajemy:

Kod: Zaznacz cały

PlaySound("alert.wav");
i to samo dodajemy pod drugiem Alertem.

Cadermo

Nieprzeczytany post autor: Cadermo »

Chyba zrobiłem :D Teraz czekam na jakieś przecięcie 8) Dzięki wielkie za pomoc :)

Na M1 działa ,na M15 też i M5 chyba nie ,jeszcze sprawdzę teraz ,bo ponownie dodałem wskaźnik .

Tylko ,że alert uruchamia się jak obie linie (trend i entry) przecinają 0 ,a da się tak ,żeby alert był jak tylko trend linia przetnie?

Awatar użytkownika
altmer
Gaduła
Gaduła
Posty: 115
Rejestracja: 05 gru 2010, 00:04

Nieprzeczytany post autor: altmer »

ridera pisze:a da się tak ,żeby alert był jak tylko trend linia przetnie?
Tak. Zobacz na ten kod (wzięty ze wskaźnika):

Kod: Zaznacz cały

if(EntryCCI[0] < 0) {
   if((TrendCCI[0] < 0) && (TrendCCI[1] >= 0))
To tutaj sprawdzane są przecięcia linii zero. Wystarczy usnąć warunek if(EntryCCI[0] < 0), pamiętając też o usunięciu nawiasów klamrowych. To znaczy było tak:

Kod: Zaznacz cały

if(EntryCCI[0] < 0) {
   if((TrendCCI[0] < 0) && (TrendCCI[1] >= 0)) {
        Alert(Symbol(), " M", Period(), " Trend & Entry CCI Have both crossed below zero");
        PlaySound("alert.wav");
        }
}
a ma być tak:

Kod: Zaznacz cały

if((TrendCCI[0] < 0) && (TrendCCI[1] >= 0)) 
{
    Alert(Symbol(), " M", Period(), " Trend & Entry CCI Have both crossed below zero");
    PlaySound("alert.wav");
}
To samo przy drugim Alercie, gdy linia cci przeszła przez zero line z dołu do góry - trza wywalić to:
if(EntryCCI[0] > 0) {

oraz nawias klamrowy zamykający } przed instrukcją prevtime = Time[0];, która jest na samym końcu.


########################

Nawiasy klamrowe służą do oznaczenia jakiegoś bloku kodu, np. po IF do oznaczenia początku i końca kodu, który ma być wykonany gdy warunek jest spełniony. Ja preferuję zapis taki:

Kod: Zaznacz cały

If (a==b)
{
 c;
}
bo tutaj dokładnie widać która klamra jest otwarta, a która ją zamyka,
ale niektórzy, jak w tym oryginalnym kodzie wskaźnika, zapisują to tak:

Kod: Zaznacz cały

If (a==b) {
 c;
}
- wg mnie mniej przejrzyste.

Prawda że to łatwe? A jaka frajda :) Jak bardziej wczytasz się w kod, to samemu zrobisz sobie nowy wskaźnik CCI :) Jeśli nie znasz jakiejś użytej funkcji, możesz ją zaznaczyć w kodzie i nacisnąć klawisz F1, a wyświetli się pomoc. Albo zapytać na forum :)

Cadermo

Nieprzeczytany post autor: Cadermo »

Dziękuję bardzo ! :)

ODPOWIEDZ