Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1176

 

Народ, посоветуйте как сделать... Пример - есть событие в 10 баре и 3 баре, т.е. есть A=Close[10] и B=Close[3], следующее ожидаю через 7 (10-3)  баров от 3 бара, т.е. через 4 бара. Как вывести в комент дату и время этого ожидаемого события?

 
kon12:

Народ, посоветуйте как сделать... Пример - есть событие в 10 баре и 3 баре, т.е. есть A=Close[10] и B=Close[3], следующее ожидаю через 7 (10-3)  баров от 3 бара, т.е. через 4 бара. Как вывести в комент дату и время этого ожидаемого события?

Comment( TimeToStr(Time[0]+PeriodSeconds()*3/* на 3 свечи вперёд */, TIME_DATE|TIME_MINUTES) );
 
Taras Slobodyanik:

Возможно и для клавиш подойдет.

Для события CHARTEVENT_MOUSE_MOVE строковой параметр sparam содержит число, представляющее информацию о состоянии клавиш:

Бит

Описание

1

Состояние левой клавиши мыши

2

Состояние правой клавиши мыши

3

Состояние клавиши SHIFT

4

Состояние клавиши CTRL

5

Состояние средней клавиши мыши

6

Состояние первой дополнительной клавиши мыши

7

Состояние второй дополнительной клавиши мыши


Это будет работать на мт4 !? ведь справка мт5!?

Можно еще кусочек кода пример по нажатию (контрл+А) вывести алерт или принт а то я не вижу или не пойму разницы между моим алертом по нажатию и как сочетание выделить !?
 
LRA:

Ваша терминология - поймать, отобрать, отработать. Вот смотрите как иначе. Хочу, чтоб по нажатию Ctrl-A на активном графике появлялись линии Фибоначчи. Повторное нажатие - исчезают. Можно сделать советник с Вашей функцией - но это он должен висеть на графике. Пишу скрипт:

Назначаю ему требуемое сочетание клавиш. Попробуйте!!!


да все замечательно только тогда нужно в советнике и скрипте делать связку по переменным и эмуляцию нажатия в некоторых случаях и как понимаете дополнительный геморой при связке советника и скрипта !

Спасибо об этом варианте назначения скрипту сочетания клавиш я знаю но он мне не подходит !

 
Vitaly Muzichenko:

Спасибо!

 
Игорь:

Это будет работать на мт4 !? ведь справка мт5!?

Можно еще кусочек кода пример по нажатию (контрл+А) вывести алерт или принт а то я не вижу или не пойму разницы между моим алертом по нажатию и как сочетание выделить !?

Ну так граждане кто помогет дасторбайтерам !? такое ощущение что все умерли !

 
double mZz1[][8];
double mZz2[][8];
double mZz3[][8];
double mZz4[][8];   
double mZz5[][8];  

for (int a=1;a<6;a++)
   {
   double mMass[][8]==mZzа[][8];
   далее другой код по обработке массивов;
   }

Уважаемые понимаю что вот код неправильный подскажите или поправьте код чтобы в mMass[][8] копировались или вставлялись mZz по очереди.

 
Игорь:

Уважаемые понимаю что вот код неправильный подскажите или поправьте код чтобы в mMass[][8] копировались или вставлялись mZz по очереди.

Попробуйте такой скрипт
//#property strict
double mMass[16][8]; // Или задать колич-во элементов или использовать ArrayResize
double mZzа[][8]={3,7,4,9,2,5}; // Для простоты зададим
// Если массив описать внутри цикла, то ...
void start() 
{
   for (int a=1;a<6;a++) mMass[0][a]=mZzа[0][a];

   // Обработка
   string s;
   for (a=1, s="";a<6;a++) s+="  "+(string)mMass[0][a];
   Alert(s);
}
 
STARIJ:
Попробуйте такой скрипт

         case 55:{Stat();bar0=0;break;}
        }
//+------------------------------------------------------------------+
//|                  Сбор статистики                      |
//+------------------------------------------------------------------+
void Stat()
    {
    for(int a=1;a<6;a++){if(a==2){Statistic(mZz2,namZz2);}if(a==3){Statistic(mZz3,namZz3);}if(a==4){Statistic(mZz4,namZz4);}}
    }
//+------------------------------------------------------------------+
//|                     Сбор статистики                              |
//+------------------------------------------------------------------+
void Statistic(double &mMass[][],string NameZz)
    {
    int e,y0,y1,y2,y3,y4,y5,c1,c2,c3,c4,c5,d1,d2,d3,d4,d5,sving;
    if((PaintZz2==1)&&(PaintZz3==1)&&(PaintZz4==1))
    {if(NameZz==namZz2){printf("Подождите идет расчет статистики");}}
    else
    {printf("Включите для расчета статистики");}return;}
//----------------------------------------------
int handle;
         for(e=2; e!=ArrayRange(mMass,0); e++){switch((int)mMass[e][7]){//собираем статистику

Вот выдержка из рабочего кода ! Как собрать это в одной void Statistic без промежуточной void Stat !? То что Вы предлагаете мне нужно весь код перетачивать чтобы все массивы в один собрать и потом оттуда выцарапывать !

 
Игорь:

Вот выдержка из рабочего кода ! Как собрать это в одной void Statistic без промежуточной void Stat !? То что Вы предлагаете мне нужно весь код перетачивать чтобы все массивы в один собрать и потом оттуда выцарапывать !

Давайте сначала рассмотрим строку

for(int a=1;a<6;a++){if(a==2){Statistic(mZz2,namZz2);}if(a==3){Statistic(mZz3,namZz3);}if(a==4){Statistic(mZz4,namZz4);}}

чтоб мне было понятней переписал так

for(int a=1;a<6;a++)
{
   if(a==2){Statistic(mZz2,namZz2);}
   if(a==3){Statistic(mZz3,namZz3);}
   if(a==4){Statistic(mZz4,namZz4);}
}

Ага!!! Теперь начинаю понимать... В цикле переменная a меняется от 1 до 6. При значениях этой переменной 1, 5 и 6 какие-либо действия отсутствуют. Тогда просто

Statistic(mZz2,namZz2);
Statistic(mZz3,namZz3);
Statistic(mZz4,namZz4);

или в Вашем стиле

Statistic(mZz2,namZz2); Statistic(mZz3,namZz3); Statistic(mZz4,namZz4);

Результат будет тот же, но выполнится быстрее

Теперь Вам надо избавиться от функции Statistic ?  Нужно написать ее тело подряд три раза, заменить в каждой из трех частей формальные параметры фактическими и удалить дублирование объявлений переменных. Общий код будет чуть длиннее, но выполнение ускорится. Есть смысл выбросить print() - кто же именно в это время будет журнал сообщений смотреть? - или заменить на Alert(), чтоб на экран вылазило.  Еще там переменная namZz2 - ее значение меняется?

Причина обращения: