Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нем неправильно. Необходимо обновить браузер или попробовать использовать другой.
На самом деле учебником "это" не назовёшь. Сделано абы-как... Лучше смотри чьи-н. коды и изучай как они написано, а потом когда будет понимать как работаю эксперты, сможешь сама писать. А "то" что на оф. сайте.. используй как документацию и не более того. Документация с большего сносная, а учебника по сути нет, одно название..
Ты являешься хорошим примером, как не надо изучать язык. В твоих кодах косяки способные насмешить даже новичка. Не зная основ изучать чужие готовые программы не рационально.
Прежде чем разбирать чужой код для обучения, нужно быть уверенным что этот код написан достаточно грамотно что бы работал надёжно. Не зная языка и не имея опыта, оценить это весьма сложно. Вынос всей программы в пользовательские функции не показатель грамотности программиста. И соответственно надёжности работы программы. Ты типичный пример.
Даже если код написан грамотно и надёжно, всех хитростей и нюансов не уловишь, они могут быть не явными, но значимыми для обеспечения надёжной работы программы. В хороших учебниках написано как решить задачу, почему именно так и пример кода.
Изучать нужно по букварю. Их навалом, главное выбрать правильный. Заглядывать в чужой код можно и ногда нужно, но не для того что бы использовать его как учебник. Чужой код скорее подсказка. Например, при написании своей программы, не получается сообразить как решить какую то задачу. В этом случае можно найти чужой код в котором эта задача решена и подглядеть как. Но проще спросить у опытных программистов. Правда, они часто отвечают конкретным ответом, на конкретный вопрос, без каких то нюансов. Подразумевая что нюансы уже известны.
Ты являешься хорошим примером, как не надо изучать язык. В твоих кодах косяки способные насмешить даже новичка. Не зная основ изучать чужие готовые программы не рационально.
Ugar, Тыкать проще всего, а как подсказать, то сразу в сторону... Вот так Спасибо! То что я спрашивал, я уже сам сделал, так как ждать ответ сутками не есть пригодный мне вариант.
А вообще, я имел ввиду именно смотреть чей-то код в плане понять как работают программы... Я именно это и советовал.. Зачем повторяться?
Есс-но, что человек, который не понимает вообще ничего будет искать программу по проще, а потому уже посложнее возьмётся. Это даже и писать не стоит, так как оно логично.
В конце концов, мы тут не подкалывать друг друга собрались, а помогать и объяснять. А в данном случае это больше похоже на канкретный упрёк.
Если ты считаешь, что я в чём-то не прав, так и скажи прямо. Не зачем юлить вдоль и поперёк.
Что касается ошибок, да.. у меня это бывает, т.к. я не профи, но решать им я уже научился в большинстве случаев.
Да и вообще, каким боком я к тому учебнику отношусь? Если не могли написать адекватный учебник, это косяк создателей языка, а я тут не причём. Лично я изучал всё на чужих кодах, и читал книги по Си. Но не программисту книги по Си и С++ читать довольно сложно, поэтому я и не посылаю туда. И это не только мои слова.
Но если учебника у " авторов " не получилось создать, нужно это признать, а не защищать их.. Хотя Allis Amazing сама убедиться скоро на сколько адекватен это " учебник ":rolf:
Ugar, Тыкать проще всего, а как подсказать, то сразу в сторону... Вот так Спасибо! То что я спрашивал, я уже сам сделал, так как ждать ответ сутками не есть пригодный мне вариант.
Если учебник размещён на сайте mql значит он одобрен метаквотами, так же это может означать что, по их мнению, именно в этом учебнике меньше косяков. Учебников по MQL4 навалом, не нравится этот можно найти другой. Лично я изучал по другому. К сожалению он у меня не сохранился.
for(int i=0; i<=OrdersTotal()-1; i++)
{
if(OrderSelect(i,SELECT_BY_POS))
{
if(OrderMagicNumber()==magic)
{
if(OrderSymbol()==Symbol())
{
int fir_or_time = OrderOpenTime();
int i = iBarShift(NULL,0,fir_or_time);
break;
}
}
}
}
Его мне подсказал eevviill. Здесь указано время первого открытого ордера. А как указать, используя те же данные, цену первого открытого ордера?То есть что-то вроде OrderOpenPrice? Но конечно, в правильном коде...
Его мне подсказал eevviill. Здесь указано время первого открытого ордера. А как указать, используя те же данные, цену первого открытого ордера?То есть что-то вроде OrderOpenPrice? Но конечно, в правильном коде...
Спасибо, eevviill, но мне хочется, чтобы цена открытия была именно на указанной мной свече, то есть как я уже писал, типа так - OrderOpenPrice. Возможно такое?
Спасибо, eevviill, но мне хочется, чтобы цена открытия была именно на указанной мной свече, то есть как я уже писал, типа так - OrderOpenPrice. Возможно такое?
Вопрос поствлен не верно. Я язык изучил, но ещё не на 100%. Ну логично что всё знать сразу не будешь. Хотя уже понаписал череду экспертов различных, и, уже понимание есть довольно-таки ясное. НО не всегда.. не спорю..
Вот это и заметно. Создатели языка не писали учебник. Автор Сергей Ковалёв, а не метаквоты.
Да я в курсе, не хотел уже канкретно на Кавалёва наезжать. НО метаквоты вообще мудаки, сами вообще ничего не сделали для блага пользователей, только деньги стригут с ДЦ и не более того. Это называется "зажрались".
Хватает учебников по Си, а по MQL4 всё тоже самое. Хотя есть на английском языке, но.. там уже нужно знать английский язык, и не каждый будет читать её (хотя я читал кусками, что интересно).
Это может означать лишь то, что метаквотовцам плевать на то, какой там учебник. Сами они и пальцем не пошевелили, чтобы пользователю с нуля научиться программировать чётко и ясно.
При таком объявлении переменной, в случае отсутствия ордеров открытых советником, переменная fir_op_on_bar_price не будет существовать, так как не была объявлена. Значит применять её за пределами цикла можно будет только при наличии ордеров советника. При отсутствии, обращение к переменной, приведёт к ошибке, или даже зависанию программы.
То же а в этом коде
Здесь переменные fir_or_time будут существовать только при наличии ордеров советника. И ещё fir_or_time должна быть datetime, а не int типа. Переменная i объявлена в цикле for и в ней порядковый номер ордера. И тут же объявлена повторно и в ней номер бара. Кроме буквы i есть ещё и другие для переменных. Так же можно использовать сочетание букв.
Пожалуй лучше объявлять переменные заранее, а внутри цикла только присваивать им значение. Например в начале функции start() самое удобное место для объявления локальных переменных.
При таком объявлении переменной, в случае отсутствия ордеров открытых советником, переменная fir_op_on_bar_price не будет существовать, так как не была объявлена. Значит применять её за пределами цикла можно будет только при наличии ордеров советника. При отсутствии, обращение к переменной, приведёт к ошибке, или даже зависанию программы.
То же а в этом коде
Здесь переменные fir_or_time будут существовать только при наличии ордеров советника. И ещё fir_or_time должна быть datetime, а не int типа. Переменная i объявлена в цикле for и в ней порядковый номер ордера. И тут же объявлена повторно и в ней номер бара. Кроме буквы i есть ещё и другие для переменных. Так же можно использовать сочетание букв.
Пожалуй лучше объявлять переменные заранее, а внутри цикла только присваивать им значение. Например в начале функции start() самое удобное место для объявления локальных переменных.
Спасибо, действительно, по варианту eevvillla в тестере происходило зависание, а когда присвоил разные буквы переменным в цикле и в номере бара, то заработало! И всё-таки всё-равно не так как хотелось бы. Может Вы подскажете, как правильно в коде сделать мою просьбу?
Для того чтобы указывать тип для переменных даты. Дата и время это разные вещи. На днях я просматривал форум мкьэловский, и там, как-раз таки коснулись вопроса подобного. В общем-то все дружно согласились с тем, что время это инт, и сказал это профессионал изначально, которому я лично доверяю.
Для того чтобы указывать тип для переменных даты. Дата и время это разные вещи. На днях я просматривал форум мкьэловский, и там, как-раз таки коснулись вопроса подобного. В общем-то все дружно согласились с тем, что время это инт, и сказал это профессионал изначально, которому я лично доверяю.
Это дата или время? Если время то почему в нем есть дата?
Если дата то почему в нём есть время?
Сам проверь, после выбора ордера, напечатай в журнал
Print(TimeToStr(OrderOpenTime(),TIME_DATE));
Print(TimeToStr(OrderOpenTime(),TIME_SECONDS));
А можешь напечатать одной строкой
Print(TimeToStr(OrderOpenTime(),TIME_DATE | TIME_SECONDS));
А то что на форумах пишут надо фильтровать своими мозгами. В этом поможет справочник и Print()
А вот если бы ты почитал учебник, такого бы не писал на форуме и не позорился. Легко бы разбирался где можно int, а где datetime.
_http://book.mql4.com/ru/functions/datetime
Для грамотного программиста хватило бы и справочника int Day( ) int DayOfWeek( ) int Hour( ) int TimeHour( datetime time)
... datetime TimeCurrent( ) datetime TimeLocal( ) datetime OrderOpenTime( ) datetime OrderCloseTime( )
Если не видишь и не понимаешь разницы, зачем затеваешь спор?
алерты для проверки, при первом запуске все нули, после компиляции только в скользящей стедней появляются значения а стохастик по прежнему нули пишет.
Кто подскажет где путаница?
Заранее благодарен
В функции начальной инициализации init хочу заполнить массив(ы) для дальнейшей обработки уже в функции start. но массив получается с одними нулями.
...
алерты для проверки, при первом запуске все нули, после компиляции только в скользящей стедней появляются значения а стохастик по прежнему нули пишет.
Кто подскажет где путаница?
Заранее благодарен
Память под индексные буфера выделяется после выполнения init(), т.е. заполнять их можно только в start().
Если перезагрузка кода вызвана его перекомпиляцией, то глобальные массивы не переинициализируются, ma[] будет иметь отведенную память и какие-то значения даже в init(), но я бы не стал на это рассчитывать.
Под стохастик место вообще не будет выделено пока он не объявлен индексным буфером.