PDA

Zobacz pełną wersję : Potrzebujesz pomocy przy naprawie tego powtarzającego się alertu



igitaxreakisg
12-17-2015 02:58, 02:58
Pobrałem więc indior o nazwie Spreader, który pozwala ustawić alarm, gdy spread rozszerzy się poza żądany próg. Problem polega na tym, że indior nadal ostrzega wielokrotnie po rozszerzeniu się spreadu. Znam trochę programowania z czasów studiów. Zmodyfikowałem kod tak, aby zawierał wyrażenie boolowskie i instrukcję else, i pomyślałem, że to powinno go zatrzymać, ale tak nie było. Oto kod. Dodany kod niestandardowy jest niebieski.



extern int Normal_Spread = 30;
extern bool Play_Sound = true;
extern bool Stop_Alerting = false;
// ----------------------------------------------- -------------------
//| Niestandardowa funkcja inicjalizacji wewnętrznej |
// ----------------------------------------------- -------------------
int init ()
{
//---- wewnątrz
//----
return (0);
}
// ----------------------------------------------- -------------------
//| Niestandardowa funkcja deinicjalizacji wewnętrznej |
// ----------------------------------------------- -------------------
int deinit ()
{
//----

//----
return (0);
}
// ----------------------------------------------- -------------------
//| Niestandardowa funkcja iteracji wewnętrznej |
// ----------------------------------------------- -------------------
int start ()
{
int counted_bars = IndiorCounted ();
//----
int spread = MarketInfo (Symbol (), MODE_SPREAD);

if (spread gt; Normal_Spread Stop_Alerting == false) {
if (Play_Sound = true) PlaySound (alert.wav);
Alert (Większy rozkład na symbol () godzina () : minuta () : sekundy () spread spread);
Stop_Alerting = true;

}
inaczej Stop_Alerting = false;

//----
return (0);
}

extern int Normal_Spread = 30;
extern bool Play_Sound = true;
extern bool Stop_Alerting = false;
// ----------------------------------------------- -------------------
//| Niestandardowa funkcja inicjalizacji wewnętrznej |
// ----------------------------------------------- -------------------
int init ()
{
//---- wewnątrz
//----
return (0);
}
// ----------------------------------------------- -------------------
//| Niestandardowa funkcja deinicjalizacji wewnętrznej |
// ----------------------------------------------- -------------------
int deinit ()
{
//----

//----
return (0);
}
// ----------------------------------------------- -------------------
//| Niestandardowa funkcja iteracji wewnętrznej |
// ----------------------------------------------- -------------------
int start ()
{
int counted_bars = IndiorCounted ();
//----
int spread = MarketInfo (Symbol (), MODE_SPREAD);

if (spread gt; Normal_Spread Stop_Alerting == false) {
if (Play_Sound = true) PlaySound (alert.wav);
Alert (Większy rozkład na symbol () godzina () : minuta () : sekundy () spread spread);
Stop_Alerting = true;

}
inaczej Stop_Alerting = false;

//----
return (0);
}

igitaxreakisg
08-21-2023 23:54, 23:54
Myślę, że wiem, co muszę zrobić. Muszę wziąć False Stop_Alerting == i zamiast tego umieścić drugą instrukcję IF wewnątrz pierwszej instrukcji IF. Spróbuję tego teraz.

igitaxreakisg
08-22-2023 01:15, 01:15
Ok, to chyba to naprawiło.

if (spread gt; Normal_Spread) {if (Stop_Alerting == false) {if (Play_Sound = true) PlaySound (alert.wav); Alert (Większy rozkład na symbol () godzina () : minuta () : sekundy () spread spread); Stop_Alerting = true; }} else Stop_Alerting = false;
Moim pożądanym rezultatem jest: po uruchomieniu alertu przestań ostrzegać, aż rozprzestrzeni się normalizacja. Po normalizacji rozprzestrzeniania się indior powinien powrócić do monitorowania rozprzestrzeniania się w celu poszerzenia. Dopóki ktoś nie chce się wtrącić, nie będę wiedział, czy osiągnę drugi pożądany rezultat, dopóki rozprzestrzenianie się nie rozszerzy i nie ulegnie normalizacji.

igitaxreakisg
08-22-2023 02:36, 02:36
Chciałem tylko dodać, że zadziałało tylko wtedy, gdy uruchomiłem Debugowanie. Kiedy potem rzuciłem go na wykres, nadal powtarza alert. Każda pomoc w naprawie tego jest doceniana.