PDA

Zobacz pełną wersję : Jak uzyskać własne wartości wskaźników?



tgukiko3k4
08-05-2008 22:08, 22:08
Próbuję użyć wskaźnika Crossover Signal EMA w EA i mam problem z uzyskaniem z niego wartości. Używam iCustom () i bez względu na wybrany tryb (0 lub 1) wskaźnik zwraca tylko 2147483647. Jakieś myśli o tym, co robię źle?

Oto przykład tego, co próbuję zrobić:

podwójne EMA = iCustom (NULL, 0, EMA Crossover Signal, 5,13, ​​false, 0,0);

Drukuj (EMA);

Oto kod indyka:

// ----------------------------------------------- -------------------
//| EMA-Crossover_Signal.mq4 |
//| Prawa autorskie © 2005, Jason Robinson (jnrtrading) |
//|
http://www.jnrtading.co.uk|
// ----------------------------------------------- -------------------

/*
------------------------------------------------- -----------------
| Pozwala wprowadzić dwa okresy ema, a następnie wyświetli w |
| W którym punkcie przeszli. Jest bardziej przydatny na krótszym |
| okresy, które zostają zasłonięte przez paskiświeczniki i kiedy |
| poziom zoomu jest wyłączony. Pozwala także na usunięcie emas |
| z wykresu. (emas początkowo ustawione na 5 i 6) |
------------------------------------------------- -----------------
*
#property copyright Copyright © 2005, Jason Robinson (jnrtrading)
#property link http://www.jnrtrading.co.uk

#property indior_chart_window
#property indior_buffers 2
#property indior_color1 SeaGreen
#property indior_color2 Czerwony

podwójny CrossUp [];
double CrossDown [];
extern int FasterEMA = 5;
extern int SlowerEMA = 13;
extern bool SoundON = false;
podwójny alertTag;
podwójne sterowanie = 2147483647;

// ----------------------------------------------- -------------------
//| Funkcja inicjalizacji wskaźnika niestandardowego |
// ----------------------------------------------- -------------------
int init ()
{
//---- wskaźniki
SetIndexStyle (0, DRAW_ARROW, EMPTY, 3);
SetIndexArrow (0, 233);
SetIndexBuffer (0, CrossUp);
SetIndexStyle (1, DRAW_ARROW, EMPTY, 3);
SetIndexArrow (1, 234);
SetIndexBuffer (1, CrossDown);
//----
return (0);
}
// ----------------------------------------------- -------------------
//| Indywidualna funkcja deinicjalizacji wskaźnika |
// ----------------------------------------------- -------------------
int deinit ()
{
//----

//----
return (0);
}
// ----------------------------------------------- -------------------
//| Funkcja iteracji wskaźnika niestandardowego |
// ----------------------------------------------- -------------------
int start () {
limit int, i, licznik;
Podwójnie szybszyEMnowo, wolniej, szybsza, poprzednia, wolniejsza, poprzednia, szybsza, późniejsza, wolniejsza;
podwójny zakres, AvgRange;
int counted_bars = IndiorCounted ();
//---- sprawdź możliwe błędy
if (counted_barslt; 0) return (-1);
//---- ostatni zliczony pasek zostanie zliczony
if (counted_barsgt; 0) counted_bars--;

limit = Bars-counted_bars;

dla (i = 0; i =; limit; i ) {

counter = i;
Zakres = 0;
AvgRange = 0;
dla (counter = i; counterlt; = i 9; counter )
{
AvgRange = AvgRange MathAbs (High [counter] -Low [counter]);
}
Zakres = AvgRange10;

fasterEMAnow = iMA (NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i);
fasterEMAprevious = iMA (NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i 1);
fasterEMAafter = iMA (NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i-1);

slowerEMAnow = iMA (NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i);
slowerEMAprevious = iMA (NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i 1);
slowerEMAafter = iMA (NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i-1);

if ((szybszy_znaczy gt, slower_mow) (szybszy_przypomnialny lt; slowerEMAprevious) (fasterEMAafter gt; slowerEMAafter)) {
CrossUp [i] = Low [i] - Range * 0,5;
}
else if ((fasterEMAnow lt; slowerEMAnow) (fasterEMAprevious gt; slowerEMAprevious) (fasterEMAafter lt; slowerEMAafter)) {
CrossDown [i] = High [i] Range * 0.5;
}
if (SoundON == true i == 1 CrossUp [i] gt; CrossDown [i] alertTag! = Time [0]) {
Alert (EMA Cross Trend idzie w dół, Symbol (),, Okres ());
alertTag = Czas [0];
}
if (SoundON == true i == 1 CrossUp [i] lt; CrossDown [i] alertTag! = Time [0]) {
Alert (EMA Cross Trend idący w górę, Symbol (),, Okres ());
alertTag = Czas [0];
}

}
return (0);
}

Burespearc91
11-29-2021 22:32, 22:32
sprawdź nazwę pliku icustom. Upewnij się, że masz wszystkie kreski i podkreślenia na miejscu. Upewnij się także, że wielkie litery znajdują się we właściwym miejscu. Musi być dokładnie taki, jak plik jest zapisany.

tgukiko3k4
11-29-2021 23:53, 23:53
sprawdź nazwę pliku icustom. Upewnij się, że masz wszystkie kreski i podkreślenia na miejscu. Upewnij się także, że wielkie litery znajdują się we właściwym miejscu. Musi być dokładnie taki, jak plik jest zapisany.
Bez powodzenia ... nazwa pliku to EMA Crossover Signal i to jest dokładnie to, jak je wprowadziłem.

Burespearc91
11-30-2021 01:14, 01:14
Zmień nazwę pliku wskaźnika na coś prostego, takiego jak EMACS lub coś podobnego. Mam pewne problemy z nazwami plików i spacjami.

tgukiko3k4
11-30-2021 02:34, 02:34
Zmień nazwę pliku wskaźnika na coś prostego, takiego jak EMACS lub coś podobnego. Mam pewne problemy z nazwami plików i spacjami.
Nie, to też nie działa. Zastanawiam się, czy włączyć kod indyka bezpośrednio do EA lub po prostu napisać własny kod krzyżowy MA ... ale miałem nadzieję, że nie odkryję ponownie koła i użyję sygnałów EMA, aby zobaczyć strzałki, gdy zobaczą krzyż.

igoxghiso
11-30-2021 03:55, 03:55
Czy sprawdziłeś, jakie wartości zwraca wskaźnik w oknie danych? Zwykle nie ma żadnych wartości.

miggoxy
11-30-2021 05:16, 05:16
Twój iCustom powinien wyglądać mniej więcej tak. iCustom (NULL, 0, EMA Crossover Signal, FasterEMA, SlowerEMA, 0, 0); Zmodyfikuję wskaźnik, aby ustawić każdą wartość inną niż strzałka na 0, tak jak. Ułatwiam sobie ustawienie logiki handlowej.

// ----------------------------------------------- ------------------- /| EMA-Crossover_Signal.mq4 |/| Prawa autorskie © 2005, Jason Robinson (jnrtrading) |/|
http://www.jnrtading.co.uk|/ ----------------------------------------------- ------------------- * --------------------------- --------------------------------------- | Pozwala wprowadzić dwa okresy ema, a następnie wyświetli w | | W którym punkcie przeszli. Jest bardziej użyteczny w krótszym | | okresy, które zostają zasłonięte przez paskiświeczniki i kiedy | | poziom zoomu jest wyłączony. Pozwala także na usunięcie emas | | z wykresu. (emas początkowo ustawione na 5 i 6) | ------------------------------------------------- ----------------- *#property copyright Copyright © 2005, Jason Robinson (jnrtrading) #property link http://www.jnrtrading.co.uk #property indior_chart_window # property indior_buffers 2 #property indior_color1 SeaGreen #property indior_color2 Red double CrossUp []; double CrossDown []; extern int FasterEMA = 5; extern int SlowerEMA = 13; extern bool SoundON = false; podwójny alertTag; podwójne sterowanie = 2147483647;/ ----------------------------------------------- ------------------- /| Funkcja inicjalizacji wskaźnika niestandardowego |/ ----------------------------------------------- ------------------- int init () {//---- wskaźniki SetIndexStyle (0, DRAW_ARROW, EMPTY, 3); SetIndexArrow (0, 233); SetIndexBuffer (0, CrossUp); SetIndexStyle (1, DRAW_ARROW, EMPTY, 3); SetIndexArrow (1, 234); SetIndexBuffer (1, CrossDown);/---- return (0); }/ ---------------------------------------------- -------------------- /| Indywidualna funkcja deinicjalizacji wskaźnika |/ ----------------------------------------------- ------------------- int deinit () {//----/---- return (0); }/ ---------------------------------------------- -------------------- /| Funkcja iteracji wskaźnika niestandardowego |/ ----------------------------------------------- ------------------- int start () {limit int, i, licznik; Podwójnie szybszyEMnowo, wolniej, szybsza, poprzednia, wolniejsza, poprzednia, szybsza, późniejsza, wolniejsza; podwójny zakres, AvgRange; int counted_bars = IndiorCounted ();/---- sprawdź możliwe błędy, jeśli (counted_barslt; 0) return (-1);/---- ostatni zliczony pasek zostanie zliczony, jeśli (counted_barsgt; 0) counted_bars--; limit = Bars-counted_bars; for (i = 0; i lt; = limit; i ) {counter = i; Zakres = 0; AvgRange = 0; dla (counter = i; counterlt; = i 9; counter ) {AvgRange = AvgRange MathAbs (High [counter] -Low [counter]); } Range = AvgRange10; fasterEMAnow = iMA (NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i); fasterEMAprevious = iMA (NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i 1); fasterEMAafter = iMA (NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i-1); slowerEMAnow = iMA (NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i); slowerEMAprevious = iMA (NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i 1); slowerEMAafter = iMA (NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i-1); if ((szybszy_CZĘŚĆ gt; slowerEMAnow) (szybszyEMAprevious lt; slowerEMAprevious) (szybszyEMAafter gt; slowerEMAafter)) {CrossUp [i] = niski [i] - zakres * 0.5; } else {CrossUp [i] = 0; } else if ((fasterEMAnow lt; slowerEMAnow)(fasterEMAprevious gt; slowerEMAprevious) (fasterEMAafter lt; slowerEMAafter)) {CrossDown [i] = High [i] Range * 0.5; } else {CrossDown [i] = 0; } if (SoundON == true i == 1 CrossUp [i] gt; CrossDown [i] alertTag! = Time [0]) {Alert (EMA Cross Trend idzie w dół, Symbol (),, Okres ()); alertTag = Czas [0]; } if (SoundON == true i == 1 CrossUp [i] lt; CrossDown [i] alertTag! = Time [0]) {Alert (EMA Cross Trend rośnie, Symbol (),, Okres ()); alertTag = Czas [0]; }} return (0); }

// ----------------------------------------------- ------------------- /| EMA-Crossover_Signal.mq4 |/| Prawa autorskie © 2005, Jason Robinson (jnrtrading) |/|
http://www.jnrtading.co.uk|/ ----------------------------------------------- ------------------- * --------------------------- --------------------------------------- | Pozwala wprowadzić dwa okresy ema, a następnie wyświetli w | | W którym punkcie przeszli. Jest bardziej użyteczny w krótszym | | okresy, które zostają zasłonięte przez paskiświeczniki i kiedy | | poziom zoomu jest wyłączony. Pozwala także na usunięcie emas | | z wykresu. (emas początkowo ustawione na 5 i 6) | ------------------------------------------------- ----------------- *#property copyright Copyright © 2005, Jason Robinson (jnrtrading) #property link http://www.jnrtrading.co.uk #property indior_chart_window # property indior_buffers 2 #property indior_color1 SeaGreen #property indior_color2 Red double CrossUp []; double CrossDown []; extern int FasterEMA = 5; extern int SlowerEMA = 13; extern bool SoundON = false; podwójny alertTag; podwójne sterowanie = 2147483647;/ ----------------------------------------------- ------------------- /| Funkcja inicjalizacji wskaźnika niestandardowego |/ ----------------------------------------------- ------------------- int init () {//---- wskaźniki SetIndexStyle (0, DRAW_ARROW, EMPTY, 3); SetIndexArrow (0, 233); SetIndexBuffer (0, CrossUp); SetIndexStyle (1, DRAW_ARROW, EMPTY, 3); SetIndexArrow (1, 234); SetIndexBuffer (1, CrossDown);/---- return (0); }/ ---------------------------------------------- -------------------- /| Indywidualna funkcja deinicjalizacji wskaźnika |/ ----------------------------------------------- ------------------- int deinit () {//----/---- return (0); }/ ---------------------------------------------- -------------------- /| Funkcja iteracji wskaźnika niestandardowego |/ ----------------------------------------------- ------------------- int start () {limit int, i, licznik; Podwójnie szybszyEMnowo, wolniej, szybsza, poprzednia, wolniejsza, poprzednia, szybsza, późniejsza, wolniejsza; podwójny zakres, AvgRange; int counted_bars = IndiorCounted ();/---- sprawdź możliwe błędy, jeśli (counted_barslt; 0) return (-1);/---- ostatni zliczony pasek zostanie zliczony, jeśli (counted_barsgt; 0) counted_bars--; limit = Bars-counted_bars; for (i = 0; i lt; = limit; i ) {counter = i; Zakres = 0; AvgRange = 0; dla (counter = i; counterlt; = i 9; counter ) {AvgRange = AvgRange MathAbs (High [counter] -Low [counter]); } Range = AvgRange10; fasterEMAnow = iMA (NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i); fasterEMAprevious = iMA (NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i 1); fasterEMAafter = iMA (NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i-1); slowerEMAnow = iMA (NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i); slowerEMAprevious = iMA (NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i 1); slowerEMAafter = iMA (NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i-1); if ((szybszy_CZĘŚĆ gt; slowerEMAnow) (szybszyEMAprevious lt; slowerEMAprevious) (szybszyEMAafter gt; slowerEMAafter)) {CrossUp [i] = niski [i] - zakres * 0.5; } else {CrossUp [i] = 0; } else if ((fasterEMAnow lt; slowerEMAnow)(fasterEMAprevious gt; slowerEMAprevious) (fasterEMAafter lt; slowerEMAafter)) {CrossDown [i] = High [i] Range * 0.5; } else {CrossDown [i] = 0; } if (SoundON == true i == 1 CrossUp [i] gt; CrossDown [i] alertTag! = Time [0]) {Alert (EMA Cross Trend idzie w dół, Symbol (),, Okres ()); alertTag = Czas [0]; } if (SoundON == true i == 1 CrossUp [i] lt; CrossDown [i] alertTag! = Time [0]) {Alert (EMA Cross Trend rośnie, Symbol (),, Okres ()); alertTag = Czas [0]; }} return (0); }

egcripk
11-30-2021 06:37, 06:37
Jeśli zbudujesz swój EA do handlu wyłącznie w oparciu o ten wskaźnik, pamiętaj, że ten wskaźnik bardzo szybko się odradza. Strzała pojawi się, zniknie i pojawi się ponownie. Przeczytaj uważnie kod wskaźnika i zmień te linie, aby była to strzałka nieprzemijająca.

miggoxy
11-30-2021 07:57, 07:57
Czy sprawdziłeś, jakie wartości zwraca wskaźnik w oknie danych? Zwykle nie ma żadnych wartości.
Jestem ciekawy, jeśli pole dla wartości w wskaźniku jest puste, co mam umieścić w logice handlu? EMPTY_VALUE nie działa.

egcripk
11-30-2021 09:18, 09:18
tak ... jeśli (EMA == EMPTY_VALUE) {........ ........ równoważne zero lub zero lub tej liczbie 2147483647

igoxghiso
11-30-2021 10:39, 10:39
Jestem ciekawy, jeśli pole dla wartości w wskaźniku jest puste, co mam umieścić w logice handlu? EMPTY_VALUE nie działa.
Nie wiem Naprawdę nie mogę programować, tylko edytować. Po prostu wiem, że gdy nie ma zwróconej wartości, generalnie stwarza dla mnie problem. Nie wiem nawet, czy to jest problem, ale pomyślałem, że zwrócę to uwagę inteligentnemu członkowi jako potencjalny problem.

egcripk
11-30-2021 12:00, 12:00
Może to pomoże .. Dodaj to 2 linie na czerwono/---- wskaźniki SetIndexStyle (0, DRAW_ARROW, EMPTY, 3); SetIndexArrow (0, 233); SetIndexBuffer (0, CrossUp); SetIndexEmptyValue (0,0.0); SetIndexStyle (1, DRAW_ARROW, EMPTY, 3); SetIndexArrow (1, 234); SetIndexBuffer (1, CrossDown); SetIndexEmptyValue (1,0.0); Następnie w EA .. podwójne EMA_green = iCustom (..... 0,0); podwójne EMA_red = iCustom (..... 1,0); if (EMA_green! = 0) {OrderSend (....... twój kupuje, jeśli (EMA_red! = 0) {OrderSend (....... twój sprzedaje Mam nadzieję, że to pomoże ..

igabelgrasde
11-30-2021 13:20, 13:20
1 Załącznik (y) (proszę o odpowiedź) Czy istnieje najnowsza wersja tego wskaźnika? Nie można znaleźć pana Jasona Robinsona, brytyjskiego autora, a nie sportowca, który zapytałby, dlaczego alarm wyskakujący działa, ale powiadomienie e-mailem nie działa? Wydaje się, że wątek zatrzymał się ponad rok temu i być może wszystko zostało rozwiązane? Działa na M30, EURUSD. Dziękuję wszystkim, którzy mogą pomóc,
https://www.forex-instant.com/attachments/15189764671436006578.mq4