- FOREX - Тенденции, прогнозы и следствия (Эпизод № 17: июль 2012)
- [Архив!!!] FOREX - Тенденции, прогнозы и следствия (Эпизод № 25: Май 2013) Продолжение следует...
- Рисование квадрата или прямоугольника. Очень нужна помощь...
Всем привет!) Имеется индикатор Pulse Fibonacci+Pivot. Как узнать, что пользователь прикрепил его к графику, убрал с графика? Нужно отследить два события: индикатор появился на графике, индикатор пропал с графика. Толкните в нужную сторону.)
ChartIndicatorName(), искать в цикле до ChartIndicatorsTotal()
ChartIndicatorName(), искать в цикле до ChartIndicatorsTotal()
bool uslov = true; if(uslov){ for(int i=0; i<ChartIndicatorsTotal(0,0); i++){ string indicatorName = ChartIndicatorName(0,0,i); if(indicatorName == "Pulse Fibonacci+Pivot") { //здесь код, если индикатор присутствует на графике } else { //здесь код, если индикатор отсутствует на графике } } } uslov=false;Вот так верно будет? Поправьте если что!)
Вот так верно будет? Поправьте если что!)
Нет, не правильно. Перед циклом нужно объявить флаг и задать ему значение false, в цикле установить флаг в true в случае, если индикатор найден. По окончании цикла - уже за его пределами, проверить флаг - если он установлен, значит индикатор найден.
Вот так верно будет? Поправьте если что!)
bool found = false; for(int i=0; i<ChartIndicatorsTotal(0,0); i++) if(ChartIndicatorName(0,0,i) == "Pulse Fibonacci+Pivot") { found=true; break; } if(found) { //здесь код, если индикатор присутствует на графике } else { //здесь код, если индикатор отсутствует на графике }
Я делаю вот так
int OnInit() { // Ищем копии на графике int q=0; string ProgName=MQLInfoString(MQL_PROGRAM_NAME); for(int k=ChartIndicatorsTotal(0,0);k>=0;k--) { if(ChartIndicatorName(0,0,k)==ProgName) { if(q++>0) { Alert(ProgName,"; Уже установлен на графике"); return(INIT_FAILED); } } } return(INIT_SUCCEEDED); }
Не могу сообразить. Как сделать, чтобы код в блоках исполнялся только один раз? Когда индикатор обнаружится на графике и когда обнаружится его пропажа.
Не могу сообразить. Как сделать, чтобы код в блоках исполнялся только один раз? Когда индикатор обнаружится на графике и когда обнаружится его пропажа.
Было бы проще, если б знать, какое конкретно действие должно быть в блоках... Универсально как-то так:
//объявить глобально, не в функции int block=0; //выполнять внутри функции bool found = false; for(int i=0; i<ChartIndicatorsTotal(0,0); i++) if(ChartIndicatorName(0,0,i) == "Pulse Fibonacci+Pivot") { found=true; break; } if(found && block!=1) { block=1; //здесь код, если индикатор не "присутствует", а ПОЯВИЛСЯ на графике } if(!found && block!=2) { block=2; //здесь код, если индикатор "отсутствует", а ПРОПАЛ на графике }задача несколько другая, почувствуйте разницу между присутствует и появился
Было бы проще, если б знать, какое конкретно действие должно быть в блоках... Универсально как-то так:
задача несколько другая, почувствуйте разницу между присутствует и появилсяvoid PivFibcheck(){ if(pivfib){ bool found = false; for(int i=0; i<ChartIndicatorsTotal(0,0); i++){ if(ChartIndicatorName(0,0,i) == "Pulse Fibonacci+Pivot") { found=true; break; } } if(found && block!=1) { Pivot(); for (int i=0; i<ObjectsTotal(); i++){ MyObjectCreate(ObjectName(i)); } block=1; } if(!found && block!=2) { string pivotline[7] = {"Horizontal Line c1","Horizontal Line c2","Horizontal Line c3","Horizontal Line piviot", "Horizontal Line p1","Horizontal Line p2","Horizontal Line p3"}; for(int i=0; i<ArraySize(pivotline); i++){ ObjectDelete(pivotline[i]); ObjectDelete(prefix+pivotline[i]); } block=2; } } }
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования