Придумал такое управление работой своей программы по отклику кнопок которые нажаты в терминале
(т.е. мне НЕ надо чтоб прога сделала "здесь и сейчас", а когда ей "будет удобно"):
Сделал окно: (Убрал оттуда все объекты, цвета, оставил желтый текст на черном фоне - нет графику, только текущая инфа) и вывел туда Comment, который показывает то, что происходит.
Две кнопки вверху (CHART_AUTOSCROLL и CHART_SHIFT) гепотетически назвал PLAY и MENU
При нажатии MENU есть выбор (в этом же желто-черном окне)
M1 - Закрыть все позиции
M5 - Поставить стоплоссы
и т.п.
ПРОБЛЕМА заключается в том, что когда я опросил все символы и иду на второй(*1) цикл:
1. в отладке
2. я вошел в void zMenu()
3. В момент когда я Изменяю период (жму другой таймфрейм) - получается "Abnormal Termination" (на любой строке отладки... ходить отладкой до изменения периода могу по всем строкам)
Вопрос:
1. Как отслеживать ошибки Abnormal Termination, или перехватывать их. Например на FoxPro есть перехват ошибок.
2. Я не хочу объектами, зачем лишний раз проц. нагружать. Comment сойдет.
(*1) внутри первого цикла код работает замечательно. По окончании цикла происходит только }}}
3. void OnChartEvent - это решение нажатия не той кнопки, но я же принципиально отказался от событий на этом окне.
//*************************************************************************************************************************************************************void zMenu()
{
ChartSetInteger(zChartFirst, CHART_AUTOSCROLL, false); // Отжали PLAYChartSetInteger(zChartFirst, CHART_SHIFT, true); // Нажали MENUChartSetInteger(zChartFirst, CHART_BRING_TO_TOP, true); // Показ графика поверх всех другихChartSetSymbolPeriod (zChartFirst,"EURUSD",PERIOD_D1);
ENUM_TIMEFRAMES tfMenu = ChartPeriod(zChartFirst);
while (tfMenu==PERIOD_D1)
{
tfMenu = ChartPeriod(zChartFirst);
//Sleep (1000);//Alert (int(tfMenu));Comment ("Счет: "+DoubleToString (AccountInfoInteger(ACCOUNT_LOGIN),0)+" ("+AccountInfoString(ACCOUNT_NAME)+")\n"+TerminalInfoString(TERMINAL_DATA_PATH)+
"\n\n === MENU === \n\n M1 - Закрыть все позиции \n M5 - Имитировать Старт с нуля для расчета KPI \n M15 - Посмотреть ожидаемые символы\n M30 - Показать и вывести массив исключений","\n MN - Выход ");
if (tfMenu == PERIOD_M15)
{
//string sExpectSymbols="";
}
}
ChartSetSymbolPeriod (zChartFirst,"EURUSD",PERIOD_D1);
ChartSetInteger(zChartFirst, CHART_AUTOSCROLL, true); // Нажали PLAYChartSetInteger(zChartFirst, CHART_SHIFT, false); // Отжали MENUreturn;
}
Придумал такое управление работой своей программы по отклику кнопок которые нажаты в терминале
(т.е. мне НЕ надо чтоб прога сделала "здесь и сейчас", а когда ей "будет удобно"):
Сделал окно: (Убрал оттуда все объекты, цвета, оставил желтый текст на черном фоне - нет графику, только текущая инфа) и вывел туда Comment, который показывает то, что происходит.
Две кнопки вверху (CHART_AUTOSCROLL и CHART_SHIFT) гепотетически назвал PLAY и MENU
При нажатии MENU есть выбор (в этом же желто-черном окне)
M1 - Закрыть все позиции
M5 - Поставить стоплоссы
и т.п.
ПРОБЛЕМА заключается в том, что когда я опросил все символы и иду на второй(*1) цикл:
1. в отладке
2. я вошел в void zMenu()
3. В момент когда я Изменяю период (жму другой таймфрейм) - получается "Abnormal Termination" (на любой строке отладки... ходить отладкой до изменения периода могу по всем строкам)
Вопрос:
1. Как отслеживать ошибки Abnormal Termination, или перехватывать их. Например на FoxPro есть перехват ошибок.
2. Я не хочу объектами, зачем лишний раз проц. нагружать. Comment сойдет.
(*1) внутри первого цикла код работает замечательно. По окончании цикла происходит только }}}
3. void OnChartEvent - это решение нажатия не той кнопки, но я же принципиально отказался от событий на этом окне.