Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1728

 
Snajper007 #:

Этот код показывает сигнал на 10й свече.  А мне надо что бы шла проверка  сигнала на каждой свече с 1й по Nю.

измените порядок перебора.

вы пока перебираете из глубины времён к настоящему времени и потому находите "самый старый сигнал".

судя по iCustom - у вас 4-ка и соотв. нумерация. 

цикл должен быть от 0 (скорее даже 1-2) и до N

for(int i=0;i<n;i++)

 
Snajper007 #:
int n=10;
   datetime bar_sig_buy, bar_sig_sell;

   for(int i=n;i>=0;i--)
     {
     // для покупок
   double a1 = iCustom(NULL, 0, "FL11", 4, i);
   // для продаж 
   double a2 = iCustom(NULL, 0, "FL11", 5, i);


      if(a1 > 0)
         bar_sig_buy=Time[i];
         
      if(a2 > 0)
        bar_sig_sell = Time[i];
     Comment("bar_sig_sell = " + DoubleToString(bar_sig_sell)+ "\n" +
     "bar_sig_buy = " + DoubleToString(bar_sig_buy));

     }
 
На сколько я помню этот индикатор FL11 он кривущий и нормально на нем работать не получится. Перерисовка.. Цикл нужно вести от 0 влево и прерывать если сигнал найден.. Либо обнулять время сигнала в теле цикла и распечатывать результат каждого бара. Но с этим индикатором вы ничему не научитесь, возьмите нормальный. 
 
MakarFX #:
int n=10;
   datetime bar_sig_buy, bar_sig_sell;

   for(int i=n;i>=0;i--)
     {
     // для покупок
   double a1 = iCustom(NULL, 0, "FL11", 4, i);
   // для продаж 
   double a2 = iCustom(NULL, 0, "FL11", 5, i);


      if(a1 > 0)
         bar_sig_buy=Time[i];
         
      if(a2 > 0)
        bar_sig_sell = Time[i];
     Comment("bar_sig_sell = " + DoubleToString(bar_sig_sell)+ "\n" +
     "bar_sig_buy = " + DoubleToString(bar_sig_buy));

     }
Ничего не изменилось. Сигнал так же показывается на 10й свече
 
Snajper007 #:
Ничего не изменилось. Сигнал так же показывается на 10й свече
2021.11.08 18:44:44.620 2021.10.15 17:10:00  BAG GBPUSD,H1: 0/sell: 2021.10.15 17:00:00
2021.11.08 18:44:44.571 2021.10.15 17:07:30  BAG GBPUSD,H1: 0/sell: 2021.10.15 17:00:00
2021.11.08 18:44:44.530 2021.10.15 17:05:00  BAG GBPUSD,H1: 3/sell: 2021.10.15 14:00:00
2021.11.08 18:44:44.480 2021.10.15 17:02:30  BAG GBPUSD,H1: 3/sell: 2021.10.15 14:00:00
2021.11.08 18:44:44.432 2021.10.15 17:00:00  BAG GBPUSD,H1: 3/sell: 2021.10.15 14:00:00
2021.11.08 18:44:44.385 2021.10.15 16:59:59  BAG GBPUSD,H1: 2/sell: 2021.10.15 14:00:00
2021.11.08 18:44:44.339 2021.10.15 16:57:30  BAG GBPUSD,H1: 2/sell: 2021.10.15 14:00:00
 
Snajper007 #:
Ничего не изменилось. Сигнал так же показывается на 10й свече

 вот функция анализа этого сигнала этого индикатора из моего старого архива, сами уж подправте под свои нужды..

Возвращает последний сигнал. 1- верхнее солнце, 0 - нижнее солнце. -1 - нет сигнала/ошибка

int gsun(ENUM_TIMEFRAMES tf)
{
double up=0.0,dw=0.0;
for(int i=1;i<iBars(Symbol(),tf);i++)
  {
  up=iCustom(Symbol(),tf,"FL11",Period1,Period2,Period3,Deviat1,Deviat2,Deviat3,5,i);
  dw=iCustom(Symbol(),tf,"FL11",Period1,Period2,Period3,Deviat1,Deviat2,Deviat3,4,i);
  if(up!=0.0&&up!=EMPTY_VALUE)return(1);
  if(dw!=0.0&&dw!=EMPTY_VALUE)return(0);
  }
return(-1);
}
//---
 

MakarFX 

Спасибо! Заработало!

 
Nikolay Ivanov #:
На сколько я помню этот индикатор FL11 он кривущий и нормально на нем работать не получится. Перерисовка.. Цикл нужно вести от 0 влево и прерывать если сигнал найден.. Либо обнулять время сигнала в теле цикла и распечатывать результат каждого бара. Но с этим индикатором вы ничему не научитесь, возьмите нормальный. 
А какой индикатор нормальный?
 
Snajper007 #:


Картинку следует вставлять при помощи кнопки  Image или прикреплять при помощи кнопки  Attach file

 
Snajper007 #:
А какой индикатор нормальный?

любой, который не перерисовывает больше чем заложено логикой, обычно 0 бар, для фракталов 2ой.

Я сужу с точки зрения корректной работы.

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