Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 49
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Спасибо, так будет правильно?
if(label==Lime) BUY_ = true;
Нет, так вы получаете данные о цвете типом int
Вот попробуйте посмотреть что будет выведено в коммент
Почитайте о преобразовании
Почитайте о преобразовании
Спасибо, а само условие верно?
if(label==Lime) BUY_ = true;
if(label==Red) BUY_ = false;
Скорее всего нет. Если данные типа string, то нужно обрамлять кавычками, ну и писать полное посимвольное соответствие цвета: "clrLime"
Скорее всего нет. Если данные типа string, то нужно обрамлять кавычками, ну и писать полное посимвольное соответствие цвета: "clrLime"
Нет, в кавычки не нужно - это константы. Т.е., нужно так: if(label==clrLime) {}
Спасибо, работает.
Скажите пожалуйста, как правильно получить уровень индикатора стохастик, со старшего таймфрейма.
int bar_sto2_1=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i+1));
double sto1_0=iStochastic(Symbol(),TimeFrame1,kperiod1,dperiod1,slowing1,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,i);
double sto1_1=iStochastic(Symbol(),TimeFrame1,kperiod1,dperiod1,slowing1,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,i+1);
double sto2_0=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_0);
double sto2_1=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_1);
if(sto2_0>55)
{
BufferUP[i]=low[i]-distance*MyPoint;
}
Когда индикатор установлен на старшем т.ф. то всё правильно, стрелка ставится, когда линия индикатора выше 55.
При переключении на младший график, хаос.
Спасибо, работает.
Скажите пожалуйста, как правильно получить уровень индикатора стохастик, со старшего таймфрейма.
int bar_sto2_1=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i+1));
double sto1_0=iStochastic(Symbol(),TimeFrame1,kperiod1,dperiod1,slowing1,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,i);
double sto1_1=iStochastic(Symbol(),TimeFrame1,kperiod1,dperiod1,slowing1,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,i+1);
double sto2_0=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_0);
double sto2_1=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_1);
if(sto2_0>55)
{
BufferUP[i]=low[i]-distance*MyPoint;
}
Когда индикатор установлен на старшем т.ф. то всё правильно, стрелка ставится, когда линия индикатора выше 55.
При переключении на младший график, хаос.
Если вы о цикле индикатора, то для того, чтобы знать какой бар старшего таймфрейма соответствует тому бару, на который указывает индекс цикла на младшем тф, нужно получить время бара i. Далее по этому времени определять бар старшего тф, который соответствует этому времени. Например: одному бару H4 соответствуют четыре бара H1. Соответственно, четыре значения индекса цикла i с тф Н1 будут указывать на один и тот же бар на тф Н4.
По вашим переменным (их именам) я не могу понять с какого бара вы получаете значения. Поэтому кроме теории сказать что-то ещё - затруднительно.
Если вы о цикле индикатора, то для того, чтобы знать какой бар старшего таймфрейма соответствует тому бару, на который указывает индекс цикла на младшем тф, нужно получить время бара i. Далее по этому времени определять бар старшего тф, который соответствует этому времени. Например: одному бару H4 соответствуют четыре бара H1. Соответственно, четыре значения индекса цикла i с тф Н1 будут указывать на один и тот же бар на тф Н4.
По вашим переменным (их именам) я не могу понять с какого бара вы получаете значения. Поэтому кроме теории сказать что-то ещё - затруднительно.
Индикатор устанавливается на М1.
Главное условие для стрелки вверх линия индикатора на М5 выше уровня 55.
Это условие не соблюдается, даже если на М5 линия находится ниже уровня 55, стрелка всё равно ставится.
как записать в робота условие "если хай 1 бара выше лоу 3го..."
при этом триггер срабатываания чтоб был не "OnTick()"
а каждый раз как 0 бар становится 1
как записать в робота условие "если хай 1 бара выше лоу 3го..."
при этом триггер срабатываания чтоб был не "OnTick()"
а каждый раз как 0 бар становится 1
Можно так
//| test03.mq4 |
//| Sergey Gritsay |
//| https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link "https://www.mql5.com/ru/users/sergey1294"
#property version "1.00"
#property strict
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
class CNevBar
{
private:
datetime curbar;
datetime lastbar;
public:
CNevBar();
~CNevBar();
bool new_bar(string symbol,ENUM_TIMEFRAMES period);
};
//+------------------------------------------------------------------+
void CNevBar::CNevBar()
{
}
//+------------------------------------------------------------------+
void CNevBar::~CNevBar(void)
{
}
//+------------------------------------------------------------------+
bool CNevBar:: new_bar(string symbol,ENUM_TIMEFRAMES period)
{
curbar=(datetime) SeriesInfoInteger(symbol,period,SERIES_LASTBAR_DATE);
if(lastbar==0)lastbar=(datetime)SeriesInfoInteger(symbol,period,SERIES_LASTBAR_DATE);
if(lastbar!=curbar)
{
lastbar=curbar;
return(true);
}
return(false);
}
CNevBar newbar;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(newbar.new_bar(_Symbol,PERIOD_CURRENT))
{
if(High[1]>Low[3])
{
}
}
}
//+------------------------------------------------------------------+
...