Как совместить функцию в OnTick и OnChartEvent ??? возможно ли? - страница 3

 
Alexey Viktorov:

В таком случае вторая кнопка в общем-то и не нужна и возвращать кнопке отжатое состояние не надо. Получится что если клик по кнопке переводит её в состояние "нажата", то сверху ставим картинку 1. Второе нажатие переводит кнопку в состояние отжата и меняет на картинку 2. Или наоборот... как душе угодно. Соответственно таким образом будут выполняться два разных кода после каждого нажатия на кнопку.

Пожалуйста помогите!!! не работает кнопка))) чтобы не делал, прошу вас, блин на таком деле застрял :)))) почему оно не работает????

 
пожалуйста помогите
 
Dmitry Ivkin:
пожалуйста помогите

Помочь как? Сделать вместо вас? Не в моих правилах так помогать.

Что за функция ButtonPicture? Она создаёт обычную кнопку или что-то другое? Проверьте значение OBJPROP_ZORDER у кнопки раз уж поверх неё есть рисунок.

 
Alexey Viktorov:

Помочь как? Сделать вместо вас? Не в моих правилах так помогать.

Что за функция ButtonPicture? Она создаёт обычную кнопку или что-то другое? Проверьте значение OBJPROP_ZORDER у кнопки раз уж поверх неё есть рисунок.

ButtonPicture это BmpLabel
Вы можете мне ответить
вот в OnTick я сделал как вы написали, и теперь при нажатии на кнопку нужно прождать где-то 5 минут(может чуть меньше)
так и должно быть? это именно то о чем вы говорили??? такой вариант вообще вообще не устраивает, или у меня что-то не так получилось?
Возможно ли чтобы кнопка так же работала как работает в OnChartEventt() ???

 
Dmitry Ivkin:

ButtonPicture это BmpLabel

Вот по этому и не получается. Я спросил что за объект, вы ответили что кнопка. Я даю советы относительно кнопки, а вы мурыжите лейблы...

Ну, попробуйте поверх BmpLabel поставить прозрачную кнопку или ещё как-то... И поэкспериментируйте с

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Как совместить функцию в OnTick и OnChartEvent ??? возможно ли?

Alexey Viktorov, 2019.04.18 16:30

Помочь как? Сделать вместо вас? Не в моих правилах так помогать.

Что за функция ButtonPicture? Она создаёт обычную кнопку или что-то другое? Проверьте значение OBJPROP_ZORDER у кнопки раз уж поверх неё есть рисунок.


И есть-ли ChartRedraw после нажатия...
 
Alexey Viktorov:

Вот по этому и не получается. Я спросил что за объект, вы ответили что кнопка. Я даю советы относительно кнопки, а вы мурыжите лейблы...

Ну, попробуйте поверх BmpLabel поставить прозрачную кнопку или ещё как-то... И поэкспериментируйте с


И есть-ли ChartRedraw после нажатия...

подскажите пожалуйста как применить      ChartRedraw к советнику после нажатия в 

     ChartRedraw(0);

Я пока хочу на обычных простых кнопках разобраться, как в OnTick сделать ChartRedraw
Вариант ниже не работает

void OnTick()
  {     

if(ObjectGetInteger(0, "B", OBJPROP_STATE))
 {
     PutButton("S",90,50,"SELL");
  ObjectSetInteger(0, "B", OBJPROP_STATE, false);
 }
     ChartRedraw(0);
  }
 
void OnTick()
  {
//---
  But();
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
  But();
  }

void but()
{

}
Все отлично работает.
 
Aleksei Beliakov:
Все отлично работает.

это как у вас так получилось???
вы в онтик запихали код и в OnChartEvent
получается что то что находится в 
but
будет постоянно включаться
а человеку нужно чтобы работало при нажатии на кнопку

 
Dmitry Ivkin:
пожалуйста помогите

Вы как то не так программируете :)

Если вы пишите функцию (алгоритм) то эта функция (алгоритм) должен работать одинаково (при одинаковых входных данных всегда возвращать одинаковый результат не зависимо от других каких то переменных и от места откуда была вызвана эта функция). В вашем случае  But() должен работать одинаково из OnTick() или из OnChartEvent()

У вас же получается, ваша функции But() из OnTick() работает, а из OnChartEvent() нет, или наоборот. Погуглите, о том, что такое алгоритм. После чего заново переделайте весь код.