Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нем неправильно. Необходимо обновить браузер или попробовать использовать другой.
Добрый день!
В индикаторе TDI Red Green обозначены 3 уровня:
SetLevelValue(0,50);
SetLevelValue(1,68);
SetLevelValue(2,32);
Как можно получить значения 50, 68 и 32 из этого индикатора?
Спасибо.
Находишь буферы в индикаторе и сравниваешь их значения с абсолютным требуемым значением (50, 68 и 32). Если равно значению, значит вывести его в журнал например (цену на нём или что нужно).
Объясните, как будет происходить расчёт данной конструкции. От самого глубоко вложенного цикла к началу, или наоборот? И вообще, как это понять.. Попалась мне такая картина, смотрю.. и что-то не совсем догоняю.
Объясните, как будет происходить расчёт данной конструкции. От самого глубоко вложенного цикла к началу, или наоборот? И вообще, как это понять.. Попалась мне такая картина, смотрю.. и что-то не совсем догоняю.
Объясните, как будет происходить расчёт данной конструкции. От самого глубоко вложенного цикла к началу, или наоборот? И вообще, как это понять.. Попалась мне такая картина, смотрю.. и что-то не совсем догоняю.
В чем именно вопрос то, у х4 - 1 значение, х3 - 2 значения, х2 - 3 значения,
х1 - 4 значения.
Т.е. начинайте с конца и увидете, что х4 = (4), х3 = (3 или 4), х2 = (2 или 3 или 4), х1 = (1 или 2 или 3 или 4)
В чем именно вопрос то, у х4 - 1 значение, х3 - 2 значения, х2 - 3 значения,
х1 - 4 значения.
Т.е. начинайте с конца и увидете, что х4 = (4), х3 = (3 или 4), х2 = (2 или 3 или 4), х1 = (1 или 2 или 3 или 4)
Тут переменные то те, которые мы уже знаем. Оно и понятно. А если бы мы не знали, какие переменные где, т.е. когда массив заполняется по мере отработки кода, то ситуация то меняется.
Если выполняется по очереди, как указал eevviill, то всё вроде как просто. Хотя есть подозрение почему-то, что может быть и не так.
Где применяеются подобные вариации?
Тут переменные то те, которые мы уже знаем. Оно и понятно. А если бы мы не знали, какие переменные где, т.е. когда массив заполняется по мере отработки кода, то ситуация то меняется.
Если выполняется по очереди, как указал eevviill, то всё вроде как просто. Хотя есть подозрение почему-то, что может быть и не так.
Где применяеются подобные вариации?
Дак ну представте что в массиве числа и Вы их не знаете,но работает тот алгоритм, который я описал выше, а именно перебор в таком порядке))
Такого я нигде не встречал))
Просто Вы загоняетесь на пустом месте, счетчик работает в счетчике- типичная ситуация в основном для сравнения элементов 2х массивов и других операций)))
В чем именно вопрос то, у х4 - 1 значение, х3 - 2 значения, х2 - 3 значения,
х1 - 4 значения.
Т.е. начинайте с конца и увидете, что х4 = (4), х3 = (3 или 4), х2 = (2 или 3 или 4), х1 = (1 или 2 или 3 или 4)
Дело в том, что я не понял, почему по Вашему у данных переменных такие значения есть. Почему x4 - значение?, а, например, x2 - (2 или 3 или 4)? Вроде как тут нет канкретики. Ведь есть массив. У него 4 элемента. Значения переменных x1...x4 не определены заранее. А значит нужно смотреть на это как-то иначе. Вот что меня смущает.
Дак ну представте что в массиве числа и Вы их не знаете,но работает тот алгоритм, который я описал выше, а именно перебор в таком порядке))
Такого я нигде не встречал))
Просто Вы загоняетесь на пустом месте, счетчик работает в счетчике- типичная ситуация в основном для сравнения элементов 2х массивов и других операций)))
Да, возможно я и загнался.. Но всё потому, что ситуация столь неординарная. Я так вообще не в курсах, зачем такое вообще нужно.. Тем более в трейдинге :facepalm:
И как же сравниваются элементы обоих массивов?
Для некоторых, это способ защиты от декомпила. Ничего не выполняющий, но запутывающий код. Начинает читать такой код не-до-программист, встречает такой цикл, у него крыша съезжает и он этот код выбрасывает не сумев разобраться.
Но к тебе это не относится. Ты настойчиво разбираешься.
В трейдинге я тоже не представляю таких случаев где нужен вложенный цикл. Но так можно пудрить мозги заказчику количеством строк кода и соответственно набивать цену.
Андрей, я нисколько не сомневался в твоих способностях. Да и сам я знаю как это работает, а вот в советнике многомерные массивы использовать как-то ни к чему. Ну есть у меня один индикатор информер с 2х мерным массивом. А больше как-то и нет нужды.
Ты-бы лучше привёл пример конкретного кода из советника, где такой подход мог-бы сэкономить машинное время или упростил-бы код...
Андрей, я нисколько не сомневался в твоих способностях. Да и сам я знаю как это работает, а вот в советнике многомерные массивы использовать как-то ни к чему. Ну есть у меня один индикатор информер с 2х мерным массивом. А больше как-то и нет нужды.
Ты-бы лучше привёл пример конкретного кода из советника, где такой подход мог-бы сэкономить машинное время или упростил-бы код...
Приведённый мной выше код реальный, хотя и немного утрированный.
В реальности несколько раз используется 2х мерный вариант этого кода в моём последнем советнике.
Выкладывать реальный код не буду. Это нарушит мои взаимоотношения с заказчиком.
От количества строк стоимость работы у меня не зависит, по этому чем проще будет код, тем лучше для меня. Иногда проще обслужить двухмерный массив в одном цикле, а иногда проще засунуть цикл в цикл. В советнике используются оба этих варианта работы с массивами.
Кстати. Я пожалуй то же задам вопрос. Может на него уже кто то давно знает ответ.
Как добыть время с точностью до микросекунд?
Было бы очень полезно для выявления сколько какая функция или операция выполняется.
Кстати. Я пожалуй то же задам вопрос. Может на него уже кто то давно знает ответ.
Как добыть время с точностью до микросекунд?
Было бы очень полезно для выявления сколько какая функция или операция выполняется.
Я как-то задавал вопрос подобный на мкл4. Там много вариантов было предложено. Некоторые я не понял вообще. Могу дать ссылку.. И можно через мой профиль там зайти.. Ветку начинал я, так что не составит труда найти, и, возможно, будет полезно!
У меня тут ошибка при выставлении отложенника. Вот появляется иногда.. За неделю прогона в тестере, тока один момент такой попался.
Вот функция:
PHP:
//+-------------------------------------------------------------------------------------+
//| Открытие отложенной короткой позиции |
//+-------------------------------------------------------------------------------------+
bool OpenPendingSell(double lot, double price)
{
int g_ticket = -1;
double OOP = price - i_distanceFromLastPos * pt;
if (OOP < Bid)
{
fCheck_ValidPendingOOP(Symbol(), OP_SELLSTOP, OOP);
g_ticket = OrderSend(Symbol(), OP_SELLSTOP, lot, ND(OOP), 30, 0, 0, NULL, i_magic, 0, CLR_NONE);
}
if (g_ticket > 0)
{
return (true);
}
else
Print ("OpenPendingSell(): Ордер послать не удалось " + GetLastError());
return (false);
}
Вот что в журнале:
PHP:
2013.09.10 14:24:34 2013.08.15 13:04 Perevorot EURUSD.GI,M5: OpenPendingSell(): Ордер послать не удалось 0
Как выяснить причину? Распечатывать всё что только в данной функции используется прямо перед Ордерсендом? Ошибка то вообще не говорящая толком ни о чём...
Я как-то задавал вопрос подобный на мкл4. Там много вариантов было предложено. Некоторые я не понял вообще. Могу дать ссылку.. И можно через мой профиль там зайти.. Ветку начинал я, так что не составит труда найти, и, возможно, будет полезно!
Кстати. Я пожалуй то же задам вопрос. Может на него уже кто то давно знает ответ.
Как добыть время с точностью до микросекунд?
Было бы очень полезно для выявления сколько какая функция или операция выполняется.
Там миллисекунды, а я хотел микросекунды. Многие функции и операторы выполняются быстрее миллисекунды, так что это грубовато.
Наверняка в коме есть системный таймер с дискретой в микросекунду. Вот и спрашиваю как до него добраться. Может какие то dll в винде есть для этого?
Я вот призадумался. Ведь многие функции, которые используются один раз за определённый момент времени(иногда довольно длинный), чтобы код эксперта работал быстрее, нужно в плане оптимизации вызывать как можно меньше. Но это и так понятно. Я хотел сказать, что, буквально вчера думал над некоторыми вариантами. Начал с функции модификации ордеров(первоначальной установки тейки и стопа). Для краткости назовём её ФМО, что бы ниже по контексту не писать больше, чем можно.
Я вижу 2 варианте реализации (если кто-нибудь может добавить.. буду очень рад!):
1. ФМО можно вызывать сразу из функции посыла ордера, неважно рыночного или отложенного, при условии, что ордер послан успешно и выбран его тикет:
Но при торговле на реале ордер может не модифицироваться, и, значится, нужно в старте снова вызывать функцию ФМО, чтобы установить стопы и теки ордерам, у которых ещё они не установлены. 2. Как-вариант, можно вообще в функции посылающей ордера не ставить ничего, а всё вызывать из старта.
В любом случает, приходится вызывать ФМО из старта постоянно, и, на каждом тике, а не, например, раз за бар или какое-то время. А удобно было как-то оптимизировать код, чтобы не вызывать ФМО из старта постоянно. Т.к. это экономия ресурсов, и выполнение лишних операции.
Есть какие-нибудь варианты решения данной ситуации?