[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 272

 

Boa tarde Cavalheiros Programadores! Por favor, dê uma olhada neste Expert Advisor muito interessante! Eu quero consertar algo, a saber: eu realmente quero anexar a ela (de preferência comutável) uma rede de arrasto personalizável no take profit. Eu acho (e espero) que não será muito difícil para um especialista fazer!

/* A descompilação neste fórum é contra a lei. primeira vez aviso. repetição - proibição eterna (FAQ)*/

 
Andrew1001:

Boa tarde Cavalheiros Programadores! Por favor, dê uma olhada neste Expert Advisor muito interessante! Eu quero consertar algo, a saber: eu realmente quero anexar a ela (de preferência comutável) uma rede de arrasto personalizável no take profit. Eu acho (e espero) que não será muito difícil para um especialista fazer!

/* A descompilação neste fórum é contra a lei. primeira vez aviso. repetição - proibição eterna (FAQ)*/



Aí está! E como então, como se poderia ver e melhorar o código? (pergunta aos moderadores)
 
ANG3110:

Bem, escrevi lá um exemplo mais simples.

***

E se você não quiser desenhar todos os dias, apenas o último, isso é feito um pouco diferente. Eu estou apenas sugerindo uma abordagem mais profissional.

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Blue
#property indicator_width1 2
//==============================
extern int    hour = 5;
extern int    hrma = 24;
//==============================
double fx[];
double hm;
int p,hr,hrp;
//************************************************************
int init()  
{   
   SetIndexBuffer(0,fx); SetIndexEmptyValue(0,EMPTY); 
   
   p=hrma*60/Period();
   
   return(0);
}
//************************************************************
int start()
{
   int cbi=Bars-IndicatorCounted()-1; if (cbi<0) return(-1);
   if (cbi==1) cbi--;
   if (cbi>1) cbi=Bars-p-1;
   //-------------------------------
   for(int i=cbi; i>=0; i--)
   {
      hrp=TimeHour(Time[i+1]); 
      hr=TimeHour(Time[i]);
      
      if (hr==hour && hrp!=hr) 
      {
         fx[i+1]=EMPTY;
         hm=Close[i]; // я вставил закрытие оно работает на нижних таймфремах

//КАК ТУТ вставить High Low для  hour = 5 для ВСЕХ таймфремов ниже ограниченного таймфрема???????????

      }
      
      fx[i]=hm; 
   }
  
   return(0);
}
//***************************************************************

SOMENTE NÃO é claro como inserir iHigh e iLow por uma hora em particular, a mesma hora = 5; ??????????? você recebe novamente os mesmos ovos...

PROFISSIONALMENTE eu estava usando iClose iHigh iLow, mas esqueci como o código foi escrito para esta variante... Eu me lembro do princípio, mas esqueci os detalhes.

int start()
  {
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(Period() > 240)  return(-1);

int LastPrevDay = iBars(Symbol(), PERIOD_D1);
int barnH= iBars(Symbol(),PERIOD_H1);

for (int i = LastPrevDay-1; i >= 0; i--)
{
datetime NowDay = iTime(Symbol(), PERIOD_D1, i);
int PrevDay = iBarShift(Symbol(), PERIOD_D1, NowDay);
datetime LastD =  iTime(Symbol(), PERIOD_D1, i-1); 
int LastDay = iBarShift(Symbol(), PERIOD_D1, LastD);

if(PrevDay>LastDay)  /// что было дальше НЕПОМНЮ!!!!, НО вариант ЛУЧШЕ, можно непарясь ставить уровни iHigh iLow iClose iOpen
{ 
datetime x_time= StrToTime(TimeToStr(NowDay, TIME_DATE)+" "+shift_time); 
int x_shift= iBarShift(Symbol(),PERIOD_H1,x_time);
double CL= iClose(Symbol(),PERIOD_H1,x_shift);
}

buffer[i]= CL;
}

return(0);
}

por favor, me ajude a entender como fazer isso???????????????????

 

Mais uma vez, por favor, ajude POR FAVOR!!!!

Como colocar corretamente iHigh iLow iClose???? de um período de tempo específico (H1) no buffer, para que ele leia corretamente nos gráficos abaixo????

int start()
  {
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(Period() > 240)  return(-1);

int LastPrevDay = iBars(Symbol(), PERIOD_D1);
int barnH= iBars(Symbol(),PERIOD_H1);

for (int i = LastPrevDay-1; i >= 0; i--)
{
datetime NowDay = iTime(Symbol(), PERIOD_D1, i);
int PrevDay = iBarShift(Symbol(), PERIOD_D1, NowDay);
datetime LastD =  iTime(Symbol(), PERIOD_D1, i-1); 
int LastDay = iBarShift(Symbol(), PERIOD_D1, LastD);

if(PrevDay>LastDay)  
/// что было дальше НЕПОМНЮ!!!!, НО вариант ЛУЧШЕ, можно непарясь ставить уровни iHigh iLow iClose iOpen
{ 
datetime x_time= StrToTime(TimeToStr(NowDay, TIME_DATE)+" "+shift_time); 
int x_shift= iBarShift(Symbol(),PERIOD_H1,x_time);
double CL= iClose(Symbol(),PERIOD_H1,x_shift);
}

buffer[i]= CL;
}

return(0);
}
 

Olá, você poderia me dizer como escrever corretamente?

O problema é que o ObjectSetText não faz nada, então recebo texto em vez de legenda de vértices.

ObjectCreate( "вершина",  OBJ_TEXT , WindowOnDropped( ) , Time[бар_вершина],  вершина+(10*Point)) ;  
       ObjectSet(  "вершина",  OBJPROP_COLOR, Crimson) ;
    ObjectSetText( "вершина", "вершина", 5, NULL, CLR_NONE) ;   
 
orb:

Não consigo entender porque no arquivo que está sendo criado Open=Close=High=Low - sem diferença, todos os preços são os mesmos, quatro colunas dos mesmos preços. Abaixo está o código do Expert Advisor que descarrega os dados.


Nenhum dado relevante para o instrumento e o cronograma -- abra os gráficos corretos.

Entrada não corrigida no código:

FileWrite(h,Wtime,Wday,DoubleToStr(iClose("GBPUSD",0,0),MarketInfo(Symbol(),MODE_DIGITS)),..

Correto:

FileWrite(h,Wtime,Wday,DoubleToStr(iClose("GBPUSD",0,0),MarketInfo("GBPUSD",MODE_DIGITS)),..

O código funciona se as condições forem cumpridas.

 
Roll:


Nenhum dado relevante para o instrumento e o cronograma -- abra os gráficos corretos.

Entrada incorreta no código:

Correto:

Desde que as condições sejam cumpridas, o código funciona.

OK, eu vou tentar!)
 
nlp2311:

SOMENTE NÃO é claro como inserir iHigh e iLow por uma hora específica, a mesma hora = 5; ??????????? volta a sair os mesmos ovos...

PROFISSIONALMENTE eu estava usando iClose iHigh iLow, mas esqueci como o código foi escrito para esta variante... Eu me lembro do princípio, mas esqueci os detalhes.

me ajude a entender como fazer isso???????????????????


Você pode desenhar barras de horário em gráficos de horário e abaixo sem tirar preços de outro horário. A ligação com iHigh etc. não é muito útil, pois retarda o indicador e precisa bater o outro cronograma.

Se for possível fazer tudo em um único período de tempo, isso é preferível.

E como você praticamente traça linhas com dados de hora em hora em um período de tempo menor? É mais ou menos assim.

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Gold
#property indicator_color4 Lime
//==============================
double H[],L[],O[],C[];
double hm,lm,om,cm;
int hr,hrp,di,f=0;
//************************************************************
int init()  
{   
   SetIndexBuffer(0,H);
   SetIndexBuffer(1,L);
   SetIndexBuffer(2,O);
   SetIndexBuffer(3,C);
   
   if (Period()>1440) f=1;
   
   di=60/Period();
   
   return(0);
}
//************************************************************
int start()
{
   if (f==1) {Comment("Период больше H1!"); return(0);}
   //-------------------------------
   int cbi=Bars-IndicatorCounted()-1; if (cbi<0) return(-1);
   if (cbi==1) cbi--;
   if (cbi>1) 
   {
      cbi=Bars-1;
      hm=High[cbi]; 
      lm=Low[cbi]; 
      om=Open[cbi]; 
      cm=Close[cbi]; 
   }
   //-------------------------------
   for(int i=cbi; i>=0; i--)
   {
      hrp=TimeHour(Time[i+1]); 
      hr=TimeHour(Time[i]);
      
      if (hrp!=hr) 
      {
         for (int j=i+1; j<=i+di; j++)
         {
            H[j]=hm;
            L[j]=lm;
            O[j]=om;
            C[j]=cm;
         }
         
         hm=High[i];
         lm=Low[i];
         om=Open[i];
         cm=Close[i];
      }
      else
      {
         if (High[i]>hm) hm=High[i];
         if (Low[i]<lm) lm=Low[i];
         cm=Close[i];
      }
      
      H[i]=hm;
      L[i]=lm;
      O[i]=om;
      C[i]=cm;
   }
   
   return(0);
}
//***************************************************************
 
ANG3110:


Em gráficos horários e abaixo, você pode desenhar barras de tempo por hora e sem tirar preços de outro cronograma. A ligação com iHigh, etc. não é muito útil, pois retarda o indicador e precisa bater o outro cronograma.

Se for possível fazer tudo de uma só vez, isto é preferível.

E como você praticamente extrai dados de hora em hora em um período de tempo menor? Bem, é mais ou menos assim:


OBRIGADO pela dica):
 
Andrew1001:

Aí está! Como você coloca o código lá fora para que você possa olhar para ele, para refiná-lo?
Peça o código fonte ao autor da EA e poste-o com sua permissão.