Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1126

 
как же мне до вас далеко
 
народ, подскажите пожалуйста как сделать чтобы на графиках в терминале сохранялась разметка после повторного включения?
я сохранял в формате csv, это не сработало
 
Seselio:

Есть условие для открытия ордера 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(GlobalVariableGet("B_order",1)) //ищем  вход 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;
   }
else if(GlobalVariableGet("S_order",1))// ищем  вход Sell
{Условие для SELL}
 

Мужики, я совсем запутался с этими ошибками, начал вроде прописывать и тут началось то так то не так. Короч:

вопросик: Тестил на демо с помощью Alert смотрел как работает, я специально в советнике сделал так чтоб неправильный ордер пытался открыть, получил код ошибки 4051, т.е. я эту фунцию GetLastError() выставил до открытия ордера и после пытки открытия. Получилось: 1 тик с момента запуска эксперта, Вызов ошибки--> 0 --> пытался открыть ордер с не подходящими условиями --> вызов ошибки тика--> 4051, и когда уже 2 тик сработал у меня первый вызов уже показывает 4051, и мой советник уже не отправляет запросы, до тех пор пока я не разберусь с экспертом. функция GetLastError() вызывает последнюю ошибку с терминала или с сервака??? и как потом сбросить ошибку? я это к тому что если сработает например "общая ошибка" код 2, а через 5 мин уже норм сервер будет работать, сервер сообщит что уже нет ошибок. Короч запутался в этой логике, помогите кто может. Думал дошло до меня вот недавно тут переписывался, оказывается я неправильно понял.

Справочник MQL4
Справочник MQL4
  • docs.mql4.com
Справочник MQL4
 
Evgeniy Oshurkevich:

Мужики, я совсем запутался с этими ошибками, начал вроде прописывать и тут началось то так то не так. Короч:

вопросик: Тестил на демо с помощью Alert смотрел как работает, я специально в советнике сделал так чтоб неправильный ордер пытался открыть, получил код ошибки 4051, т.е. я эту фунцию GetLastError() выставил до открытия ордера и после пытки открытия. Получилось: 1 тик с момента запуска эксперта, Вызов ошибки--> 0 --> пытался открыть ордер с не подходящими условиями --> вызов ошибки тика--> 4051, и когда уже 2 тик сработал у меня первый вызов уже показывает 4051, и мой советник уже не отправляет запросы, до тех пор пока я не разберусь с экспертом. функция GetLastError() вызывает последнюю ошибку с терминала или с сервака??? и как потом сбросить ошибку? я это к тому что если сработает например "общая ошибка" код 2, а через 5 мин уже норм сервер будет работать, сервер сообщит что уже нет ошибок. Короч запутался в этой логике, помогите кто может. Думал дошло до меня вот недавно тут переписывался, оказывается я неправильно понял.

Попробуйте сбрасывать ошибку функцией    ResetLastError();
 
Alekseu Fedotov:
Попробуйте сбрасывать ошибку функцией    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 тике мой совет уже не отправляет запрос на открытие потому что видит последнюю ошибку 

Я ночью вроде спал, не пью уже с Нового года.  


 


_LastError - Предопределенные переменные - Справочник MQL4
_LastError - Предопределенные переменные - Справочник MQL4
  • docs.mql4.com
_LastError - Предопределенные переменные - Справочник MQL4
 
Evgeniy Oshurkevich:

В документации:

GetLastError

Возвращает содержимое системной переменной_LastError.


 


А теперь читаем нормальную документацию от МТ5 теперь некоторые старые функции работают именно как написано в ней, так как документация от мт4 устаревшая и там много еще не исправлено.

 

GetLastError

Возвращает содержимое системной переменной_LastError.

int  GetLastError();

Возвращаемое значение

Возвращает значение последнейошибки, произошедшей во время исполнения mql5-программы.

Примечание

После вызова функции содержимое переменной _LastError не обнуляется. Чтобы обнулить эту переменную, необходимо вызвать функциюResetLastError()

Смотри также

Коды возврата торгового сервера

 
Evgeniy Oshurkevich:

Я ночью вроде спал, не пью уже с Нового года.  

Ну Я с 1997 года)

Смотрите, есть тик и с ним сигнал, и если получили ошибку, то её нужно обработать. Обработали и снова запрос, но перед запросом можно обнулить переменную с ошибкой, тогда при следующем запросе если есть ошибка, то она снова попадёт в переменную, но если ошибки нет - будет "0"

Можно переменную не обнулять, тогда в неё попадёт новое значение. В любом случае вас не должна интересовать ошибка которая была в прошлый раз на прошлом тике, вы должны обработать только то, что есть "сейчас"