[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 297

 
Urain >>:
А ещё так : Time[0]+(Time[0]-Time[1]) ну или так 2*Time[0]-Time[1]

гут :)

 

Мое почтение пишущей (код) братии!

Понимаю, что сей вопрос должен вроде как уже всех задолбать, но ни чего путного по нему не нашел. Значит в чем-то я туплю. Помогите новичку вникнуть!

Позыв был не оригинален - в одном окне индикатора вывести линии по текущему и большему таймфреймам (в моем случае часовой и дневной).

Первая же мысль была... Впрочем, не успела - руки сами все сделали :

Buf_1[i]=iCCI(NULL,1440,14,PRICE_TYPICAL,i);

Результат явно был рассинхронизирован по времени. Ладно, это можно понять - брать готовый бар вызываемого таймфрейма проще, чем формировать его динамически. Что ж, на безрыбье будем раков кушать. Синхронизировал начало отрисовки по времени и вместо i вставил id, обновляемый на каждой смене дня. Лестница с горизонтальными участками, проходящими через каждый час одного дня не бог весть что, но хоть что-то. По логике вещей прямые участки должен был прогнуть реал тайм. Прогнул. Но неделями не отключаться от сервака во имя пригодной для изучения картинки мучительно долго, а тут визуализатор тестера этот самый реал вроде как симулирует. Запустил пустого советника и выкинул в окно визуализации терзаемого индюка. Черта лысого! Ни какой симуляции! При смене дня из истории тупо подсасывался полностью сформированный бар, который по сюжету таковым еще не являлся. На выходе - та же лестница. Получается, что нулевой бар в приведенной выше конструкции для работы не пригоден, ибо при тестировании будет гнать фикцию. Следующий шаг был сделан из чистого упрямства, чтоб не осталось ничего недосказанного и точки над "ё" были расставлены. Обратился из советника к этому самому нулевому бару через свой индикатор и отфильтровал его (советника) действия по состоянию CCI (больше-меньше, чем на предыдущем дне). Судя по той отсебятине, что гнал советник в тестере, какие-то изменения в этом баре все-таки происходили, но докапываться до сути мочи моей уже не хватило. В очередной раз перематерился на отсутствие пошаговой отладки кода с контролем переменных. (Не, можно конечно и в лог, но для более заковыристых случаев это полный ПЦ будет.)

Лирическое отступление.

До слез умилился картинкам в пятой версии. Очень мощный инструмент! В шестой медиаплеер вероятно появится. )))))))))) А вот почему бы им не отдать такой объект, как "бар" со всеми его атрибутами? Это ж сколько геморроев одним махом вылечили бы!?

Возвращаюсь к отсебятине. По окончании работы тестера открылся индикатор, в котором рассматриваемая линия была абсолютно прямая на протяжении года и показывала вообще неизвестно что.

Все.

Аут.

Одна и та же конструкция на истории, в реал тайме, в окне визуализации и в программе ведет себя совершенно по разному.

Сижу теперь и пытаюсь уразуметь, это глюк такой, такая фича или броня крепка и танки наши быстры?

З.Ы. Не, в силу своей упертости я получил-таки желаемое, сымитировав кусок таймсерии из текущих данных (можно и минутку запросить для пущей достоверности) и обсчитав его своими силами, но это уж как-то слишком через задницу, извиняюсь, получается. Да и правила обращения к другим таймфреймам в подобных конструкциях понять хочется...

 
hot писал(а) >>

Мое почтение пишущей (код) братии!

Понимаю, что сей вопрос должен вроде как уже всех задолбать, но ни чего путного по нему не нашел. Значит в чем-то я туплю. Помогите новичку вникнуть!

Позыв был не оригинален - в одном окне индикатора вывести линии по текущему и большему таймфреймам (в моем случае часовой и дневной).

Первая же мысль была... Впрочем, не успела - руки сами все сделали :

Результат явно был рассинхронизирован по времени. Ладно, это можно понять - брать готовый бар вызываемого таймфрейма проще, чем формировать его динамически. Что ж, на безрыбье будем раков кушать. Синхронизировал начало отрисовки по времени и вместо i вставил id, обновляемый на каждой смене дня. Лестница с горизонтальными участками, проходящими через каждый час одного дня не бог весть что, но хоть что-то. По логике вещей прямые участки должен был прогнуть реал тайм. Прогнул. Но неделями не отключаться от сервака во имя пригодной для изучения картинки мучительно долго, а тут визуализатор тестера этот самый реал вроде как симулирует. Запустил пустого советника и выкинул в окно визуализации терзаемого индюка. Черта лысого! Ни какой симуляции! При смене дня из истории тупо подсасывался полностью сформированный бар, который по сюжету таковым еще не являлся. На выходе - та же лестница. Получается, что нулевой бар в приведенной выше конструкции для работы не пригоден, ибо при тестировании будет гнать фикцию. Следующий шаг был сделан из чистого упрямства, чтоб не осталось ничего недосказанного и точки над "ё" были расставлены. Обратился из советника к этому самому нулевому бару через свой индикатор и отфильтровал его (советника) действия по состоянию CCI (больше-меньше, чем на предыдущем дне). Судя по той отсебятине, что гнал советник в тестере, какие-то изменения в этом баре все-таки происходили, но докапываться до сути мочи моей уже не хватило. В очередной раз перематерился на отсутствие пошаговой отладки кода с контролем переменных. (Не, можно конечно и в лог, но для более заковыристых случаев это полный ПЦ будет.)

Лирическое отступление.

До слез умилился картинкам в пятой версии. Очень мощный инструмент! В шестой медиаплеер вероятно появится. )))))))))) А вот почему бы им не отдать такой объект, как "бар" со всеми его атрибутами? Это ж сколько геморроев одним махом вылечили бы!?

Возвращаюсь к отсебятине. По окончании работы тестера открылся индикатор, в котором рассматриваемая линия была абсолютно прямая на протяжении года и показывала вообще неизвестно что.

Все.

Аут.

Одна и та же конструкция на истории, в реал тайме, в окне визуализации и в программе ведет себя совершенно по разному.

Сижу теперь и пытаюсь уразуметь, это глюк такой, такая фича или броня крепка и танки наши быстры?

З.Ы. Не, в силу своей упертости я получил-таки желаемое, сымитировав кусок таймсерии из текущих данных (можно и минутку запросить для пущей достоверности) и обсчитав его своими силами, но это уж как-то слишком через задницу, извиняюсь, получается. Да и правила обращения к другим таймфреймам в подобных конструкциях понять хочется...

Пиши в личку

 
Vinin >>:

Пиши в личку

Благодарю за внимание, но мне нужна теория, а с практикой я сам предпочитаю справляться. )))))))))))))

 

Здавствуйте! Появился такой вопрос:

Как заставить советник совершить только одну сделку в указанное время? Т.е. например, каждый торговый день заключать только один ордер на покупку ровно в 15 часов? Пробовал сделать так:

int ct = Hour();
int cm = Minute();
int sd = Seconds();

if(ct == 15 && cm == 0 && sd == 0)
{
int tick = OrderSend(Symbol(),OP_BUY,A_lot,Ask,5,Ask-A_sl*Point,Ask+A_tp*Point,"Покупка.",3,0,CLR_NONE);
}

в принципе работает, но только советник совершает сразу много покупок, т.к. в первую секунду 16-го часа приходит несколько тиков (так же зависит от деппозита и лота).

Пробовал проверять по магику и дню совершения сделки, но все равно в итоге каша получается:

int ct = Hour();
int cm = Minute();
int sd = Seconds();

if(ct == 15 && cm == 0 && sd == 0)
{
for (int i=1; i<=OrdersTotal(); i++)
{
if(OrderSelect(i-1, SELECT_BY_POS, MODE_TRADES)==true)
{
if(OrderMagicNumber() == 3 && OrderOpenTime() == Day())
{
bool A_order = true; break;
}
A_order = false;

}
}

if(A_order == false)
int tick = OrderSend(Symbol(),OP_BUY,A_lot,Ask,5,Ask-A_sl*Point,Ask+A_tp*Point,"Покупка.",3,0,CLR_NONE);
}

Если кто знает, подскажите пожалуйста! Спасибо!

 
JackaLrus >>:

Здавствуйте! Появился такой вопрос:

Как заставить советник совершить только одну сделку в указанное время? Т.е. например, каждый торговый день заключать только один ордер на покупку ровно в 15 часов? Пробовал сделать так:

   

Если кто знает, подскажите пожалуйста! Спасибо!

Попробуйте глянуть в ветку И.Кима - 

Функция isTradeToDay(). Стр 21

Эта функция возвращает флаг торгов сегодня. Флаг поднят - True - сегодня открывались позиции. Флаг опущен - False - сегодня не открывалось ни одной позиции

https://www.mql5.com/ru/forum/107476/page21

//-

С помщью этой функции вы легко напишите условие открытия:

if (isTradeToDay(NULL,-1,Magic)<1 ) {//  если сегодня не было сделок
//- то торговля разрешена

Ну а время открытия, задать совсем просто.

Кроме того, там у Игоря есть и аналогичные временные функции.

 

Спасибо за ссылку! Я разобрался!

Нужно использовать в сравнении функцию TimeDay (OrderOpenTime())==Day(), тогда все работает как нужно!

 

Нужна помощь. В инклюде  Criterion советника MACD_Simple из документации изменяю торговые критерии (по правилу 4-х недель, поиск 20-ти и 10-ти дневных минимумов и максимумов - подробности в закомментированном коде) при этом советник при запуске на истории в тестере не открывает ордера.

Понимаю, что заблудился в трех соснах, тем не менне, если будет время и возможность - подскажите...

//--------------------------------------------------------------------
// Criterion.mqh
// Правило 4-х недель
//--------------------------------------------------------------- 1 --
// Функция вычисления торговых критериев.
// Возвращаемые значения:
// 10 - открытие Buy  цена закрытия выше максим-ой за последние 20 дней
// 20 - открытие Sell цена закрытия ниже минимальной за последние 20 дней 
// 11 - закрытие Buy  цена закр ниже минимальной за последние 10 дней
// 21 - закрытие Sell цена закрытия выше максимальной за последние 10 дней
// 0  - значимых критериев нет
// -1 - используется другой финансовый инструмент
//--------------------------------------------------------------- 2 --
// Внешние переменные:
extern int                                 
       Counted_bars1=20,                         // Количество просчитанных баров 
       Counted_bars2=10;                         // Количество просчитанных баров 
       




//--------------------------------------------------------------- 3 --
int Criterion()                                                   // Пользовательская функция
  {
   double
        Max_20 = High [1], Min_20 = Low [1],                      // Присваиваем значения максимуму и  
        Max_10 = High [1], Min_10 = Low [1];                      // минимуму на 1-ом баре
   int i=0;                                                       // Индекс бара  
          
   
   //--------------------------------------------------------------- 4 --
   // Параметры торговых критериев:
   
  for(i = 2; i <= Counted_bars1+1;i++)                             // цикл для 20 дней 
         {                                        
         if (Low[i] <  Min_20)                               // Если текущее значение < известного   
               Min_20 = Low[i];                              // то оно и будет минимум   
         
         if (High[i] > Max_20)                               // Если > известного    
               Max_20 = High[i];                             // то оно и будет максимум  
           }   
  
  for(i = 2;  i <= Counted_bars2+1; i++)                     // цикл для 10 дней 
         {                                        
         if (Low[i]< Min_10)                                 // Если текущее значение < известного   
               Min_10=Low[i];                                // то оно и будет мин   
               
         if (High[i] > Max_10)                                   // Если > известного    
               Max_10=High[i];                                   // то оно и будет макс  
           }   

   
    //--------------------------------------------------------------- 5 --
   
    // Вычисление торговых критериев
    
   if(Close[0]>Max_20)
   return(10);                                           // Открытие Buy    
   
     
   if (Close[0]<Min_20)  
   return(20);                                           // Открытие Sell
     
   if(Close[0]<Min_10)
   return(11);                                           // Закрытие Buy    
  
   
   if(Close[0]> Max_10)
   return(21);                                           // Закрытие Sell    
   
     
   
  
      
       
//--------------------------------------------------------------- 6 --
   return(0);                          // Выход из пользов. функции
  }
//--------------------------------------------------------------- 7 --
 

Здравствуйте форумчане! Я начал изучать ТС совсем недавно и у меня к вам вопрос. На одном известном сайте я увидел советник с названием EURONIS. Поискав в Гугле я нашёл несколько положительных отзывов и ни одного отрицательного. В том же Гугле была ссылка на этот форум с обсуждаемой темой по этому советнику, где высказывались скептические мнения, но тема видимо была закрыта и стёрта (сейчас поиск по сайту ничего не дал).

Поэтому хочется узнать что собой представляет этот советник? Приносит ли он стабильно прибыль? Есть ли среди вас те кто торговал им на реале? В общем жду ваших комментариев.

Заранее спасибо.

 
Roman. >>:

Нужна помощь. В инклюде Criterion советника MACD_Simple из документации изменяю торговые критерии (по правилу 4-х недель, поиск 20-ти и 10-ти дневных минимумов и максимумов - подробности в закомментированном коде) при этом советник при запуске на истории в тестере не открывает ордера.

Понимаю, что заблудился в трех соснах, тем не менне, если будет время и возможность - подскажите...

Добавьте полный код, если не хотите показывать свою идею измените критерий, например:

if(Close[0]>Open[1])
   return(10);                                           // Открытие Buy    
   
     
   if (Close[0]<Open[1])  
   return(20);                                           // Открытие Sell
     
   if(Close[0]<Open[1])
   return(11);                                           // Закрытие Buy    
  
   
   if(Close[0]> Open[1])
   return(21);                                           // Закрытие Sell    

Но не видя картины целиком невозможно сказать где художник оплошал.

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