Есть функция.//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Функция изменения переменной по закону Фибоначчи |
//+------------------------------------------------------------------+
Что с этим делать? Я не знаю.
По крайней мере, нужно выложить код примера, который будет хотя бы компилироваться.
Может быть, следующий посетитель темы сможет этот скрипт запустить и захочет помочь :-).
Что с этим делать? Я не знаю.
По крайней мере, нужно выложить код примера, который будет хотя бы компилироваться.
Может быть, следующий посетитель темы сможет этот скрипт запустить и захочет помочь :-).
Что с этим делать? Я не знаю.
По крайней мере, нужно выложить код примера, который будет хотя бы компилироваться.
Может быть, следующий посетитель темы сможет этот скрипт запустить и захочет помочь :-).
С первым случаем я подозреваю, что совместно с остальной частью кода
Да, как только вввел проверку на бар, сразу началось.
if (Time[0]<=PrevTime) return(0); {
PrevTime=Time[0];
.....}
Вот работающий код. Что мне не понятно, так это почему распринтовка из функции идет, а возвращение функцией значения нет, кто мне может объяснить?
//+------------------------------------------------------------------+
//| Bag.mq4 |
//| Copyright © 2009, MetaQuotes Software Corp. |
//| https://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link "https://www.metaquotes.net/"
int n0=0,n1=1,nf=0,Fibo;
bool Reset;
static int PrevTime=0;
//+------------------------------------------------------------------+
//| Функция изменения переменной по закону Фибоначчи |
//+------------------------------------------------------------------+
int Fibo(bool Reset)
{
if(Reset!=true)
{ nf=n0+n1;
n0=n1;
n1=nf;
Print(" n0= ", n0," n1= ", n1," nf= ",nf);
return(n0);
}
else
{
n0=0;
n1=1;
nf=0;
}
return(n0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if (Time[0]<=PrevTime) return(0); {
PrevTime=Time[0];
Print(" Fibo(Reset) = ",Fibo(Reset)," Fibo = ",Fibo);
if(Fibo(Reset)>987) Reset=1;
else Reset=0;
}
}
//+------------------------------------------------------------------+
По поводу параболика. Скопировал из другого МТ другую копию и вроде заработал.
Вот работающий код. Что мне не понятно, так это почему распринтовка из функции идет, а возвращение функцией значения нет, кто мне может объяснить?
int n0=0,n1=1,nf=0,Fibo; <--- Зачем здесь объявлена неинициализированная переменная Fibo ?
Print(" Fibo(Reset) = ",Fibo(Reset)," Fibo = ",Fibo); <--- которая зачем-то печатается здесь
Ошибка 5 баллов!
int start() { if (Time[0]<=PrevTime) return(0); { PrevTime=Time[0]; double value = Fibo(Reset); <--- значение функции надо брать в переменную Print(" Fibo(Reset) = ",value); if(value>987) Reset=1; else Reset=0; } }
Как попал этот параболик ко мне не понятно, вроде не скачивал, вобщем вдруг у кого тоже такая проблема.
А вот с фукцией мне не понятно. Вобщем окончательный вид. Как только ввожу проверку бара или bool Reset начинается такая свистопляска.
int n0=0,n1=1,nf=0;
bool Reset;
static int PrevTime=0;
int Fibo(bool Reset)
{
if(Reset!=true)
{ nf=n0+n1;
n0=n1;
n1=nf;
Print(" n0= ", n0," n1= ", n1," nf= ",nf);
return(n0);
}
else
{
n0=0;
n1=1;
nf=0;
}
return(n0);
}
int start()
{
if (Time[0]<=PrevTime) return(0); {
PrevTime=Time[0];
Print(" Fibo(Reset) = ",Fibo(Reset));
if(Fibo(Reset)>987) Reset=1;
else Reset=0;
}
}
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Есть функция.//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Функция изменения переменной по закону Фибоначчи |
//+------------------------------------------------------------------+
int Fibo(bool Reset)
{
if(Reset!=true)
{ nf=n0+n1;
n0=n1;
n1=nf;
Print(" n0= ", n0," n1= ", n1," nf= ",nf);
}
else
{
n0=0;
n1=1;
nf=0;
}
return(n0);
}
Стартуем.
int start()
{
//----
Print(" Fibo(Reset) = ",Fibo(Reset));
.............
}
Результат распринтовки:
14:21:19 2009.03.12 00:00 EnveIn EURUSD,M30: n0= 1 n1= 1 nf= 1
14:21:19 2009.03.12 00:00 EnveIn EURUSD,M30: Fibo(Reset) = 1
14:21:19 2009.03.12 00:00 EnveIn EURUSD,M30: n0= 1 n1= 2 nf= 2
14:21:19 2009.03.12 00:00 _SAR_Slave EURUSD,M30: loaded successfully
14:21:19 2009.03.12 00:00 _MasterSlave EURUSD,M30: loaded successfully
14:21:19 2009.03.12 00:00 _SAR_Slave EURUSD,M30: k=999 Bars=1001
14:21:19 2009.03.12 00:30 EnveIn EURUSD,M30: n0= 2 n1= 3 nf= 3
14:21:19 2009.03.12 00:30 EnveIn EURUSD,M30: Fibo(Reset) = 2
14:21:19 2009.03.12 00:30 EnveIn EURUSD,M30: n0= 3 n1= 5 nf= 5
14:21:19 2009.03.12 01:00 EnveIn EURUSD,M30: n0= 5 n1= 8 nf= 8
14:21:19 2009.03.12 01:00 EnveIn EURUSD,M30: Fibo(Reset) = 5
14:21:19 2009.03.12 01:00 EnveIn EURUSD,M30: n0= 8 n1= 13 nf= 13
14:21:19 2009.03.12 01:30 EnveIn EURUSD,M30: n0= 13 n1= 21 nf= 21
14:21:19 2009.03.12 01:30 EnveIn EURUSD,M30: Fibo(Reset) = 13
14:21:19 2009.03.12 01:30 EnveIn EURUSD,M30: n0= 21 n1= 34 nf= 34
14:21:19 2009.03.12 02:00 EnveIn EURUSD,M30: n0= 34 n1= 55 nf= 55
14:21:19 2009.03.12 02:00 EnveIn EURUSD,M30: Fibo(Reset) = 34
14:21:19 2009.03.12 02:00 EnveIn EURUSD,M30: n0= 55 n1= 89 nf= 89
14:21:19 2009.03.12 02:30 EnveIn EURUSD,M30: n0= 89 n1= 144 nf= 144
То есть.
Когда идет распринтовка из функции, то видно, что переменные(n0, n1, 1 nf,)
дают результаты, когда же идет распринтовка из советника(Fibo(Reset) =), то данные поступают через раз.
////////////////////////////////////
Еще то ли баг то ли не понятно что. Не меняются результаты при использовании параболика в качестве пользовательского индикатора.
Насчет параболика. Код:
double sarstop=iCustom(NULL,0,"Parabolic",step,maximum,0,0);
Print("sarstop = ", sarstop);
Результат:
0:02:22 1999.09.03 03:00 EnveIn EURUSD,M30: sarstop = 1.0689
20:02:22 1999.09.03 03:30 EnveIn EURUSD,M30: sarstop = 1.0689
20:02:22 1999.09.03 04:00 EnveIn EURUSD,M30: sarstop = 1.0678
20:02:22 1999.09.03 04:30 EnveIn EURUSD,M30: sarstop = 1.0678
20:02:22 1999.09.03 05:00 EnveIn EURUSD,M30: sarstop = 1.0679
20:02:22 1999.09.03 05:30 EnveIn EURUSD,M30: sarstop = 1.0678
20:02:22 1999.09.03 06:00 EnveIn EURUSD,M30: sarstop = 1.0678
20:02:22 1999.09.03 06:30 EnveIn EURUSD,M30: sarstop = 1.0678
20:02:22 1999.09.03 07:00 EnveIn EURUSD,M30: sarstop = 1.0678
20:02:22 1999.09.03 07:30 EnveIn EURUSD,M30: sarstop = 1.0678
20:02:22 1999.09.03 08:00 EnveIn EURUSD,M30: sarstop = 1.0678
20:02:22 1999.09.03 08:30 EnveIn EURUSD,M30: sarstop = 1.0678
20:02:22 1999.09.03 09:00 EnveIn EURUSD,M30: sarstop = 1.0679
20:02:22 1999.09.03 09:30 EnveIn EURUSD,M30: sarstop = 1.0679
20:02:22 1999.09.03 10:00 EnveIn EURUSD,M30: sarstop = 1.0679
20:02:22 1999.09.03 10:30 EnveIn EURUSD,M30: sarstop = 1.0698
20:02:22 1999.09.03 11:00 EnveIn EURUSD,M30: sarstop = 1.0698
20:02:22 1999.09.03 11:30 EnveIn EURUSD,M30: sarstop = 1.0671
20:02:22 1999.09.03 12:00 EnveIn EURUSD,M30: sarstop = 1.0672
20:02:22 1999.09.03 12:30 EnveIn EURUSD,M30: sarstop = 1.0674
20:02:22 1999.09.03 13:00 EnveIn EURUSD,M30: sarstop = 1.0675
20:02:22 1999.09.03 13:30 EnveIn EURUSD,M30: sarstop = 1.0676
И что с этим делать?