Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1126
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
я сохранял в формате csv, это не сработало
Есть условие для открытия ордера BUY. Открывается ордер, как сделать переход к SELL условию после закрытия BUY ордера?
if(High[1]-Close[1]>=NormalizeDouble(xbs1*_Point,_Digits))
{
int b_tik=OrderSend(_Symbol,OP_BUY,Lots,Ask,Slip,Low[2]-sl,High[1]+ tp,"",Magic,0,clrBlue)==true; //открытие ордера
GlobalVariableSet("B_order",0); // Больше не ищем вход Buy
//-----?????
GlobalVariableSet("S_order",1); // Переходим к поиску Sell
return;
}
if(High[1]-Close[1]>=NormalizeDouble(xbs1*_Point,_Digits))
{
int b_tik=OrderSend(_Symbol,OP_BUY,Lots,Ask,Slip,Low[2]-sl,High[1]+ tp,"",Magic,0,clrBlue)==true; //открытие ордера
GlobalVariableSet("B_order",0); // Больше не ищем вход Buy
//-----?????
GlobalVariableSet("S_order",1); // Переходим к поиску Sell
return;
}
else if(GlobalVariableGet("S_order",1))// ищем вход Sell
{Условие для SELL}
Мужики, я совсем запутался с этими ошибками, начал вроде прописывать и тут началось то так то не так. Короч:
вопросик: Тестил на демо с помощью Alert смотрел как работает, я специально в советнике сделал так чтоб неправильный ордер пытался открыть, получил код ошибки 4051, т.е. я эту фунцию GetLastError() выставил до открытия ордера и после пытки открытия. Получилось: 1 тик с момента запуска эксперта, Вызов ошибки--> 0 --> пытался открыть ордер с не подходящими условиями --> вызов ошибки тика--> 4051, и когда уже 2 тик сработал у меня первый вызов уже показывает 4051, и мой советник уже не отправляет запросы, до тех пор пока я не разберусь с экспертом. функция GetLastError() вызывает последнюю ошибку с терминала или с сервака??? и как потом сбросить ошибку? я это к тому что если сработает например "общая ошибка" код 2, а через 5 мин уже норм сервер будет работать, сервер сообщит что уже нет ошибок. Короч запутался в этой логике, помогите кто может. Думал дошло до меня вот недавно тут переписывался, оказывается я неправильно понял.
Мужики, я совсем запутался с этими ошибками, начал вроде прописывать и тут началось то так то не так. Короч:
вопросик: Тестил на демо с помощью Alert смотрел как работает, я специально в советнике сделал так чтоб неправильный ордер пытался открыть, получил код ошибки 4051, т.е. я эту фунцию GetLastError() выставил до открытия ордера и после пытки открытия. Получилось: 1 тик с момента запуска эксперта, Вызов ошибки--> 0 --> пытался открыть ордер с не подходящими условиями --> вызов ошибки тика--> 4051, и когда уже 2 тик сработал у меня первый вызов уже показывает 4051, и мой советник уже не отправляет запросы, до тех пор пока я не разберусь с экспертом. функция GetLastError() вызывает последнюю ошибку с терминала или с сервака??? и как потом сбросить ошибку? я это к тому что если сработает например "общая ошибка" код 2, а через 5 мин уже норм сервер будет работать, сервер сообщит что уже нет ошибок. Короч запутался в этой логике, помогите кто может. Думал дошло до меня вот недавно тут переписывался, оказывается я неправильно понял.
Попробуйте сбрасывать ошибку функцией ResetLastError();
ИЗДЕВАТЕЛЬСТВО!!!!!!!!! Уважаемый народ! Не удивляйтесь что вас достают новички!!! Чё за поисковик такой на сайте???? Я тут кое какой эксперт недели 2 уже строчу на mql4, вы бы видели мою рожу когда я решил проверить и ещё раз подробнее узнать про OrderSend() в поисковике!!!! Бедные новички. Ну ок, в адресной строке меняю вместо 5 ставлю 4, там не авторизован, ну ок, жму на вход, а он меня опять на mql5. А если не авторизоваться на Mql4 То поисковик не работает.
А ещё на форуме тут умники многие пишут "для чего поисковик?" или "поищи в поисковике", "мы типа лентяи" и т.д. без обид
В документации:
GetLastError
Возвращает содержимое системной переменной_LastError.
int GetLastError();
Возвращаемое значение
Возвращает значение последней ошибки, произошедшей во время исполнения mql4-программы.
Примечание
После вызова функции содержимое переменной _LastError обнуляется.
В примечании чётко написано _LastError обнуляется.
Читаю дальше про _LastError.
int _LastError
В переменной _LastError хранится значение последней ошибки, произошедшей во время исполнения mql4-программы. Сбросить значение в ноль можно функцией ResetLastError().
Для получения кода ошибки можно также использовать функцию GetLastError().
Написано: Сбросить значение в ноль можно функцией ResetLastError(). Зачем сбрасывать если выше написано _LastError обнуляется?
Ок иду дальше читать про ResetLastError()
ResetLastError
Устанавливает значение предопределенной переменной_LastError в ноль.
void ResetLastError();
Возвращаемое значение
Нет возвращаемого значения.
Примечание
Функция GetLastError() обнуляет переменную_LastError.
Написано же Функция GetLastError() обнуляет переменную_LastError.
Зачем тогда нужен ResetLastError(); ?????
И как потом я узнаю какая была ошибка если после второго вызова GetLastError() будет 0??? Ведь он же обнуляет _LastError.
И кстати ща на демке GetLastError() показывает на каждом тике одну и ту же ошибку и не сбрасывает
Т.е. 1-тик сделал ошибку открытия ордера, на 2 тике мой совет уже не отправляет запрос на открытие потому что видит последнюю ошибку
Я ночью вроде спал, не пью уже с Нового года.
В документации:
GetLastError
Возвращает содержимое системной переменной_LastError.
А теперь читаем нормальную документацию от МТ5 теперь некоторые старые функции работают именно как написано в ней, так как документация от мт4 устаревшая и там много еще не исправлено.
GetLastError
Возвращает содержимое системной переменной_LastError.
int GetLastError();
Возвращаемое значение
Возвращает значение последнейошибки, произошедшей во время исполнения mql5-программы.
Примечание
После вызова функции содержимое переменной _LastError не обнуляется. Чтобы обнулить эту переменную, необходимо вызвать функциюResetLastError()
Смотри также
Коды возврата торгового сервера
Я ночью вроде спал, не пью уже с Нового года.
Ну Я с 1997 года)
Смотрите, есть тик и с ним сигнал, и если получили ошибку, то её нужно обработать. Обработали и снова запрос, но перед запросом можно обнулить переменную с ошибкой, тогда при следующем запросе если есть ошибка, то она снова попадёт в переменную, но если ошибки нет - будет "0"
Можно переменную не обнулять, тогда в неё попадёт новое значение. В любом случае вас не должна интересовать ошибка которая была в прошлый раз на прошлом тике, вы должны обработать только то, что есть "сейчас"