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);
}
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);
}