Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нем неправильно. Необходимо обновить браузер или попробовать использовать другой.
Писать будешь сам. А логика проста. В индикаторе есть уровни цены. В А1 попадает рассчитанное значение индюка. Открываешься когда цена ниже или выше чего-то, или равно какому-то значению индюка или цены.
Например, перебираешь в цикле по барам и сравниваешь значение индюка на каждом из них:
PHP:
if (A1(на баре с индексом 1) < (значения индюка в данной точке) &&
A1(на баре с индексом 0) > (значения индюка в данной точке))
{
Открываем ордер.
}
Ну а как получит места на графике.. Берёшь индюк и пытаешь понять какой буфер за что отвечает. Может помочь в этом, например, цвета в свойствам окна индюка. Хотя если декомпил, без опыта заколебёшся въезжать, что там что.
Писать будешь сам. А логика проста. В индикаторе есть уровни цены. В А1 попадает рассчитанное значение индюка. Открываешься когда цена ниже или выше чего-то, или равно какому-то значению индюка или цены.
Например, перебираешь в цикле по барам и сравниваешь значение индюка на каждом из них:
PHP:
if (A1(на баре с индексом 1) < (значения индюка в данной точке) &&
A1(на баре с индексом 0) > (значения индюка в данной точке))
{
Открываем ордер.
}
Ну а как получит места на графике.. Берёшь индюк и пытаешь понять какой буфер за что отвечает. Может помочь в этом, например, цвета в свойствам окна индюка. Хотя если декомпил, без опыта заколебёшся въезжать, что там что.
Рад представить ещё одно детище из той же библиотеки, которая выносит мне моск уже некоторый день, в подряд:rolf: Вещи интересные, потом я всё-таки её осилю. Новый головняк ещё интереснее. Вот что имеем:
Смотреть на всю цепочку не обязательно. Интересуют общие аспекты.
В данный момент есть 2 вопроса по данной структуре:
1. Для чего в данном условии:
PHP:
if (fs_Symbol != bs_Symbol || fi_Ticket < 0)
Сравнение символа передаваемого в функцию с bs_Symbol ? Ведь у bs_Symbol нет никакого значения вообще.. Но тип то string у данной переменной.. По умолчанию bs_Symbol как и любая переменная нулём инициализируется не явно что-ли?
2. Как может быть истинным условие:
Рад представить ещё одно детище из той же библиотеки, которая выносит мне моск уже некоторый день, в подряд:rolf: Вещи интересные, потом я всё-таки её осилю. Новый головняк ещё интереснее. Вот что имеем:
Смотреть на всю цепочку не обязательно. Интересуют общие аспекты.
В данный момент есть 2 вопроса по данной структуре:
1. Для чего в данном условии:
PHP:
if (fs_Symbol != bs_Symbol || fi_Ticket < 0)
Сравнение символа передаваемого в функцию с bs_Symbol ? Ведь у bs_Symbol нет никакого значения вообще.. Но тип то string у данной переменной.. По умолчанию bs_Symbol как и любая переменная нулём инициализируется не явно что-ли?
2. Как может быть истинным условие:
Разрешите уточнить.
Неинициализированная строка и пустая строка это две большие разницы. Они не равны друг другу.
Автоматической инициализации строк в MQL не предусмотрено. Так что содержание строки может не существовать аж тремя различными способами - переменная не объявлена, не инициализирована или пустая
В этой функции в посте hoz bs_Symbol помнит значение, полученное при предыдущем вызове. В принципе, законный прием, хотя это дело вкуса. Автор, похоже, люто оптимизировал мультивалютный код на скорость выполнения.
Разрешите уточнить.
Неинициализированная строка и пустая строка это две большие разницы. Они не равны друг другу.
Автоматической инициализации строк в MQL не предусмотрено. Так что содержание строки может не существовать аж тремя различными способами - переменная не объявлена, не инициализирована или пустая
В этой функции в посте hoz bs_Symbol помнит значение, полученное при предыдущем вызове. В принципе, законный прием, хотя это дело вкуса. Автор, похоже, люто оптимизировал мультивалютный код на скорость выполнения.
Чтобы "помнить" значение, оно где-то в коде должно быть задано! (при "каком-то вызове" )
Так что, надо искать, иначе реально лажа получается.
Что касается того, чего там инициализируется в MQL4, то тут ваще темный лес. Например, целое и double можно не сравнивать с нулем, ибо оно будет false, если равно нулю и true, если не равно. Боюсь только, когда-нибудь это пофиксят и все работать перестанет
Так же и со строками - ноль, "" и "не инициализировано" как бы одно и то же.
Но, согласен, что в данном контексте использовать отдельную переменную неправильно. Значит, где-то когда-то она инициализируется, а передаваться из цикла в цикл она может, если она объявлена до блока start()
Разрешите уточнить.
Неинициализированная строка и пустая строка это две большие разницы. Они не равны друг другу.
Автоматической инициализации строк в MQL не предусмотрено. Так что содержание строки может не существовать аж тремя различными способами - переменная не объявлена, не инициализирована или пустая
Так получается, что автоматическая инициализация предусмотрено така для типов дабл и инт, а стринг не инициализируется. Почему!? Разработчики видимо накосячили, логически это обосновать не получается.. Я проверил. Вот написал сову:
В этой функции в посте hoz bs_Symbol помнит значение, полученное при предыдущем вызове. В принципе, законный прием, хотя это дело вкуса. Автор, похоже, люто оптимизировал мультивалютный код на скорость выполнения.
bs_Symbol гарантированно инициализируется при первом вызове fGet_MarketInfo() и скорее всего только так. По задумке, повторный вызов этой функции с тем же символом и неотрицательным тикетом экономит пару вызовов MarketInfo(). Я такую экономию не одобряю, мягко говоря.
Но, согласен, что в данном контексте использовать отдельную переменную неправильно. Значит, где-то когда-то она инициализируется, а передаваться из цикла в цикл она может, если она объявлена до блока start()
Судя по вышеуказанному вызову, обычному у него, вместо переменной fs_Symbol передётся OrderSymbol() вообще... Но нулём то не будет переменная bs_Symbol, т.к. я уже показал и доказал выше постом. А будет там пустое значение..
Выше qqmber написал, что пустым оно будет до первого вызова рассматриваемой функции, после чего оно пустым уже точно не будет, если в головной проге её не "потерять" по невнимательности
bs_Symbol гарантированно инициализируется при первом вызове fGet_MarketInfo() и скорее всего только так. По задумке, повторный вызов этой функции с тем же символом и неотрицательным тикетом экономит пару вызовов MarketInfo(). Я такую экономию не одобряю, мягко говоря.
hoz
Попробовал... Облом какой-то, надо подумать.
Про extern - переменные, объявленные в extern можно потом менять
Вопрос на засыпку - а когда они обратно к дефолтным скинутся?