Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 411
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Начал изучать массивы .
Написал функцию про ордерам с массивами , 3 массива = 0 покупка, 1= продажа, 2= всего сделок покупки и продажи.
Далее написал в условие на покупку если ( первое условие && массив [0] == 0 )то открываем покупку
и на продажу если ( первое условие && массив [1]==0) то открываем на продажу.
Но в тестере кидает ошибку и тест останавливается, в чем дело? ( ошибка " выход из массива " )
Значит индекс, к которому Вы обращаетесь лежит за пределами разметки массива. Например, если array[ 3 ]; то вы можете обращаться только к элементам с 0 по 2. Проверяйте свой код.
Еще может быть такое, что Вы не разметили массив (с помощью ArrayResize()), но пробуете обратиться к какому-то его элементу.
код..
Попробуйте разобраться сами, тестер должен указать в какой строке и позиции в строке возникла ошибка.
О_о спс не знал что еще и терминал тыкает где ошибка, в первый раз на критическую ошибку нарвался.
на нее плюется.
Подскажите как реализовать проверку работы индикатора.
Суть в следующем: советник при образовании нового бара обращается к индикатору, а у индикатора в этот момент нет еще данных и я получаю данные предыдущего бара.( типа он еще не успел посчитать)
Как обойти эту засаду. Причем на тестере все ок. На демо - то ок, то нет !
Все, неактуально. Решено.
Здравствуйте, у меня проблема новичка...
Никак не могу заставить систему сравнивать значение закрытия последнего бара с максимумами и минимумами за определенный период, например
последние 20 баров. Что я делаю не так?
Проверял через Alert и по непонятным мне причинам тестер выдает максимально значение с вычисления с самого последнего тика, но он выдает это значение
столько же раз сколько и тиков по-этому ордер не открывается.
И вторая проблема, как заставить советник ждать до открытия следующего бара (30m period)? При тесте по контрольным точкам все отлично, а если по тикам,
то советник открывает в том же баре сразу же где и закрылся по стоп-лосу например...
Так же, как можно закрывать сделку не зависимо был тик или нет? например на периоде 30m я хочу закрывать ордер за 5 секунд до конца бара (29.55, 59.55)
основываясь на всех данных в этот момент. На данном этапе проблема в том, что если тик не происходит в течении 5 секунд, следовательно не совершается
никаких логических операций, сигнал не поступает и момент упущен до следующего сигнала :( в теории фигня, а на деле втестере следующий сигнал может
оказаться аж через несколько свечей почему-то.
Заранее спасибо!Помогите с коментариями. На каждом баре формируются комментарии. На каждом тике хочу чтоб добавлял к существующему коментарию еще текст.
Вызываю код:
void UserMarketComment( )
{
string com=ChartGetString(0,CHART_COMMENT); // Получаем текст существующего комментария
string st="Целевой убыток="+DoubleToStr(-inpTargetLoss,2)+" "+AccountCurrency()+" Текущ";
if(AccountProfit()<0) st=st+"ий убыток=";
else st=st+"ая прибыль=";
st=st+DoubleToStr(AccountProfit(),2)+" "+AccountCurrency()+" Целевая прибыль="+DoubleToStr(inpTargetProfit,2)+" "+AccountCurrency();
Comment(com+"",TimeToStr(TimeCurrent(),TIME_SECONDS)," Spread = ",MarketInfo(Symbol(),MODE_SPREAD),
"\n ",st);
}
Добавляет новый комент и на каждом тике в новую строку и текст сползает вниз.
Как сделать чтоб перед выводом он удалял последние несколько строк ?
Помогите с коментариями. На каждом баре формируются комментарии. На каждом тике хочу чтоб добавлял к существующему коментарию еще текст.
Вызываю код:
void UserMarketComment( )
{
string com=ChartGetString(0,CHART_COMMENT); // Получаем текст существующего комментария
string st="Целевой убыток="+DoubleToStr(-inpTargetLoss,2)+" "+AccountCurrency()+" Текущ";
if(AccountProfit()<0) st=st+"ий убыток=";
else st=st+"ая прибыль=";
st=st+DoubleToStr(AccountProfit(),2)+" "+AccountCurrency()+" Целевая прибыль="+DoubleToStr(inpTargetProfit,2)+" "+AccountCurrency();
Comment(com+"",TimeToStr(TimeCurrent(),TIME_SECONDS)," Spread = ",MarketInfo(Symbol(),MODE_SPREAD),
"\n ",st);
}
Добавляет новый комент и на каждом тике в новую строку и текст сползает вниз.
Как сделать чтоб перед выводом он удалял последние несколько строк ?
Мне кажется что можно только полностью заменить Comment()
А соответственно чтобы часть комментария менять на каждом тике, надо менять комментарий полностью на каждом тике.
Помогите с коментариями. На каждом баре формируются комментарии. На каждом тике хочу чтоб добавлял к существующему коментарию еще текст.
Вызываю код:
void UserMarketComment( )
{
string com=ChartGetString(0,CHART_COMMENT); // Получаем текст существующего комментария
string st="Целевой убыток="+DoubleToStr(-inpTargetLoss,2)+" "+AccountCurrency()+" Текущ";
if(AccountProfit()<0) st=st+"ий убыток=";
else st=st+"ая прибыль=";
st=st+DoubleToStr(AccountProfit(),2)+" "+AccountCurrency()+" Целевая прибыль="+DoubleToStr(inpTargetProfit,2)+" "+AccountCurrency();
Comment(com+"",TimeToStr(TimeCurrent(),TIME_SECONDS)," Spread = ",MarketInfo(Symbol(),MODE_SPREAD),
"\n ",st);
}
Добавляет новый комент и на каждом тике в новую строку и текст сползает вниз.
Как сделать чтоб перед выводом он удалял последние несколько строк ?