1. запомним при запуске советника общее кол-во баров на графике и в ходе выполнения советника будем контролировать изменение количества баров:
//начало кода - самый верхint counted;
int init(){
counted=Bars; // запомним общее количество баров на активном ТФ
Myorders();
return(0);
}
int start(){
Myorders();
........................
// я рассполагаю этот код в самом конце ф-ции start() - мне так удобнееint bar = Bars;
if (bar != counted ) { // сравним запомненное кол-во баров с текущим если они равны тогда нет нового бара на активном ТФ
counted= bar;
// код который необходимо выполнить по закрытию/открытию бара
}
return(0);
}
2. запомнить время открытия последнего бара, код примерно такой-же,
используем datetime last=Time[0];
и сравниваем last==Time[0] --> да время открытия последнего бара соответствует запомненному, если не равно, значит открылся новый бар
какая схема эффективнее 1 или 2 не знаю - есть сомнения насчет автоматической подкачки истории в терминал, но вроде проблем не наблюдал
Andrei01: это работать не будет. количество баров ограничено.
это работает, т.к. общее количество не имеет значение, интересует только момент когда изменилоськоличество баров на графике, в этот момент переменная bar != counted, обратите внимание, я специально запоминаю int bar = Bars; -чтобы не потерять значение Bars, и потом сравнить и присвоить это значение counted= bar; - а ведь можно было все делать с Bars без лишней переменной - но я решил переподстраховаться
я же упомянул, что во время автоподкачки истории может быть небольшой казус, может это и хорошо а может и плохо, если использовать время открытия бара то будет точно работать - время открытия бара не изменится никогда
интересует только момент когда изменилось количество баров на графике
после достижения максимального значения, задаваемого в установках, количество баров на графике расти не должно. хотя может это и прыгает плюс минус один на максимуме, не проверял, тогда может и можно это словить, но это уже незадокументированная опция.
Andrei01: после достижения максимального значения, задаваемого в установках, количество баров на графике расти не должно. хотя может это и прыгает, не проверял, тогда может и можно это словить, но это уже незадокументированная опция.
в этом и состоял вопрос. Я проверил при достижении максимума... Bars не меняется, а остается равным Макс. баров в окне (см. сво-ва).
время новой свечи это Time[0].
и как дальше определить поступление новой свечи?
и как дальше определить поступление новой свечи?
запомнить в переменной предыдущее и сравнивать.
сейчас попробую..
и как дальше определить поступление новой свечи?
есть несколько вариантов, вот парочка:
1. запомним при запуске советника общее кол-во баров на графике и в ходе выполнения советника будем контролировать изменение количества баров:
2. запомнить время открытия последнего бара, код примерно такой-же,
используем datetime last=Time[0];
и сравниваем last==Time[0] --> да время открытия последнего бара соответствует запомненному, если не равно, значит открылся новый бар
какая схема эффективнее 1 или 2 не знаю - есть сомнения насчет автоматической подкачки истории в терминал, но вроде проблем не наблюдал
есть несколько вариантов, вот парочка:
1. запомним при запуске советника общее кол-во баров на графике и в ходе выполнения советника будем контролировать изменение количества баров:
это работать не будет. количество баров ограничено.
это работает, т.к. общее количество не имеет значение, интересует только момент когда изменилось количество баров на графике, в этот момент переменная bar != counted, обратите внимание, я специально запоминаю int bar = Bars; -чтобы не потерять значение Bars, и потом сравнить и присвоить это значение counted= bar; - а ведь можно было все делать с Bars без лишней переменной - но я решил переподстраховаться
я же упомянул, что во время автоподкачки истории может быть небольшой казус, может это и хорошо а может и плохо, если использовать время открытия бара то будет точно работать - время открытия бара не изменится никогда
интересует только момент когда изменилось количество баров на графике
после достижения максимального значения, задаваемого в установках, количество баров на графике расти не должно. хотя может это и прыгает, не проверял, тогда может и можно это словить, но это уже незадокументированная опция.
в этом и состоял вопрос. Я проверил при достижении максимума... Bars не меняется, а остается равным Макс. баров в окне (см. сво-ва).
в этом и состоял вопрос. Я проверил при достижении максимума... Bars не меняется, а остается равным Макс. баров в окне (см. сво-ва).
ну так и должно быть. значит первый вариант не будет работать.
Да, первый вариант не работает, правда я работаю на нестандартном таймфрейме, второй работает. Всем спасибо!