Подскажите пример кода, не чего нормального в голову не лезет.
Как заставить сравнивать цену ( к примеру: MarketInfo(Symbol(),MODE_BID ) на сколько цена поднялась Выше/Ниже от момента начала сравнения цены.
Если я засуну в переменные "А" и "B" цену по Bid как заставить обновляться только переменную "B" что бы их в дальнейшем сравнивать, иначе они две постоянно будут иметь одинаковые значения.
Или может есть более простые встроенные способы?
Время надо учитывать. Запомнить время записи первого значения Бид, а потом сравнивать через заданный интервал с актуальным на тот момент бидом:
1. t=0; A=Bid; B=Bid; C=MathAbs(B-A);
2. t=10; B=Bid; C=MathAbs(B-A); A=Bid;
3. t=20; B=Bid; C=MathAbs(B-A); A=Bid;
...
B переменной C таким образом будет абсолютное значение разницы Бид за прошедшие 10 секунд.
Подскажите пожалуйста - во время отладки программы - в отладчике в окне "отслеживания значений выражений" у выражений пишется "Expression could not be evaluated" при этом значения
этих выражений спокойно высвечиваются в окне вызванном функцией Alert. То есть программа работает, переменным присваются значения а в отладчике они не отображаются, так как не могут быть вычислены. Как такое может быть ?
Подскажите пример кода, не чего нормального в голову не лезет.
Как заставить сравнивать цену ( к примеру: MarketInfo(Symbol(),MODE_BID ) на сколько цена поднялась Выше/Ниже от момента начала сравнения цены.
Если я засуну в переменные "А" и "B" цену по Bid как заставить обновляться только переменную "B" что бы их в дальнейшем сравнивать, иначе они две постоянно будут иметь одинаковые значения.
Или может есть более простые встроенные способы?
LastPrice=0;
NewPrise=0;
if(условие записи LastPrice && NewPrise==0){LastPrice = MarketInfo(Symbol(),MODE_BID);}
#property indicator_separate_windowdatetime LastBarTime=0;
int start()
{
// каждый свежий бар считаем только 1 раз (сразу после закрытия)if (Time[0]!=LastBarTime) // если идёт расчёт всей истории или начался свежий бар
{
LastBarTime=Time[0];
int counted=IndicatorCounted(); if(counted<0) return(-1);
// if (counted>0) counted--; <<< зачем оно???int i=Bars-counted; // варианты: считаем историю(i=кол-во баров), сформирован свежий бара (i=2) ПОЧЕМУ?if (counted<2) i=Bars-2; // для корректного начала расчёта (иначе i и тем более i+1 заглядывают в бездну)Print("!!!!!!TEST Bars-counted=",i); // ПОЧЕМУ =2 ???for (; i>0; i--) // открытый бар не считаем
{
// варианты:// 1) в истории недостаточно баров (меньше трёх): итераций цикла не будет// 2) произошла переинициализация переменных и тогда надо считать историю с нуля (i указывает на 2-й бар слева)// 3) историю уже расчитали, а сейчас сформирован свежий бара: i должна указывать на закрытый бар (i=1)
}
}
return (0);
}
Могу ли я в цикле рассчитывать только на два состояния:
1) инициализация (static-переменные сброшены, а i указывает на 2-й бар слева);
2) вся история рассчитана (i=2);
И, собственно, почему же i=2? Я бы понял i=1 или i=0, но почему 2? Могу ли я на это 2 положиться? =)
Если нет, то как правильно сделать. Расчёт у меня идёт цепной, так что повторно один и тот же бар обрабатывать нельзя.
...
Хорошо, поставлю вопрос иначе. Прямо в лоб. Можно ли мне использовать переменную вместо IndicatorCounted()?
То есть всегда ли первичная инициализация статиков и глобалей совпадает с 0 из IndicatorCounted()?
Мне надо поменять магик-номер отложенного ордера, но что-то прихожу к выводу что нет такой возможности. Подскажите, магик-номер в принципе невозможно модифицировать или я что-то пропустил в этой жизни?
paladin80: Мне надо поменять магик-номер отложенного ордера, но что-то прихожу к выводу что нет такой возможности. Подскажите, магик-номер в принципе невозможно модифицировать или я что-то пропустил в этой жизни?
bool OrderModify(
int ticket, // номер ордераdouble price, // цена открытияdouble stoploss, // stop lossdouble takeprofit, // take profitdatetime expiration, // время истечения ордераcolor arrow_color // цвет
);
Магик нет, только удалить и с нужным поставить заново
Подскажите пример кода, не чего нормального в голову не лезет.
Как заставить сравнивать цену ( к примеру: MarketInfo(Symbol(),MODE_BID ) на сколько цена поднялась Выше/Ниже от момента начала сравнения цены.
Если я засуну в переменные "А" и "B" цену по Bid как заставить обновляться только переменную "B" что бы их в дальнейшем сравнивать, иначе они две постоянно будут иметь одинаковые значения.
Или может есть более простые встроенные способы?
Время надо учитывать. Запомнить время записи первого значения Бид, а потом сравнивать через заданный интервал с актуальным на тот момент бидом:
1. t=0; A=Bid; B=Bid; C=MathAbs(B-A);
2. t=10; B=Bid; C=MathAbs(B-A); A=Bid;
3. t=20; B=Bid; C=MathAbs(B-A); A=Bid;
...
B переменной C таким образом будет абсолютное значение разницы Бид за прошедшие 10 секунд.
Подскажите пожалуйста - во время отладки программы - в отладчике в окне "отслеживания значений выражений" у выражений пишется "Expression could not be evaluated" при этом значения
этих выражений спокойно высвечиваются в окне вызванном функцией Alert. То есть программа работает, переменным присваются значения а в отладчике они не отображаются, так как не могут быть вычислены. Как такое может быть ?
Время надо учитывать. Запомнить время записи первого значения Бид, а потом сравнивать через заданный интервал с актуальным на тот момент бидом:
1. t=0; A=Bid; B=Bid; C=MathAbs(B-A);
2. t=10; B=Bid; C=MathAbs(B-A); A=Bid;
3. t=20; B=Bid; C=MathAbs(B-A); A=Bid;
...
B переменной C таким образом будет абсолютное значение разницы Бид за прошедшие 10 секунд.
К времени нет привязки как раз. Тут время враг.
Как без времени?
К времени нет привязки как раз. Тут время враг.
Как без времени?
Засунь переменную со значением цены в OnInit , и будет тебе привязка цены во время старта эксперта, потом сравнивай с чем надо
К времени нет привязки как раз. Тут время враг.
Как без времени?
На хворексе без времени никак, оно - неразделимая часть системы, увы. Даже в поставленном вопросе время фигурирует:
Как заставить сравнивать цену ( к примеру: MarketInfo(Symbol(),MODE_BID ) на сколько цена поднялась Выше/Ниже от момента начала сравнения цены.
"момент" там и есть время, начальная точка отсчёта.
Подскажите пример кода, не чего нормального в голову не лезет.
Как заставить сравнивать цену ( к примеру: MarketInfo(Symbol(),MODE_BID ) на сколько цена поднялась Выше/Ниже от момента начала сравнения цены.
Если я засуну в переменные "А" и "B" цену по Bid как заставить обновляться только переменную "B" что бы их в дальнейшем сравнивать, иначе они две постоянно будут иметь одинаковые значения.
Или может есть более простые встроенные способы?
LastPrice=0;
NewPrise=0;
if(условие записи LastPrice && NewPrise==0){LastPrice = MarketInfo(Symbol(),MODE_BID);}
if(LastPrice > 0) { NewPrise = MarketInfo(Symbol(),MODE_BID);}
На хворексе без времени никак, оно - неразделимая часть системы, увы. Даже в поставленном вопросе время фигурирует:
"момент" там и есть время, начальная точка отсчёта.
да нет на форе времени.... есть непрерывная череда ожидаемых состояний... (прогнозов)
а вот для трейдера между двумя ожидаемыми состояниями может пройти, где час, где месяц, где секунды, а где и год... :-)))
это его проблемы... вся суть успешной торговли в том, чтобы минимизировать период времени ожидания.... ( в зависимости от того на что замахнулся...)
Всем привет. Вопрос про IndicatorCounted():
Могу ли я в цикле рассчитывать только на два состояния:
1) инициализация (static-переменные сброшены, а i указывает на 2-й бар слева);
2) вся история рассчитана (i=2);
И, собственно, почему же i=2? Я бы понял i=1 или i=0, но почему 2? Могу ли я на это 2 положиться? =)
Если нет, то как правильно сделать. Расчёт у меня идёт цепной, так что повторно один и тот же бар обрабатывать нельзя.
...
Хорошо, поставлю вопрос иначе. Прямо в лоб. Можно ли мне использовать переменную вместо IndicatorCounted()?
То есть всегда ли первичная инициализация статиков и глобалей совпадает с 0 из IndicatorCounted()?
Мне надо поменять магик-номер отложенного ордера, но что-то прихожу к выводу что нет такой возможности. Подскажите, магик-номер в принципе невозможно модифицировать или я что-то пропустил в этой жизни?
Магик нет, только удалить и с нужным поставить заново