[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 132

 
MK07:

Correção técnica - use o botão SRC no painel superior para inserir o código, como fazem seus assessores. Será muito mais fácil de ler.

P.S.
para limpar a linha Comentário, insira Comentário(") em deinit();
 
granit77:
Correção técnica - use o botão SRC no painel superior para inserir o código, como fazem seus assessores. Será muito mais fácil de ler.

P.S.
Para limpar a linha Comentário, insira Comentário(") em deinit();
Obrigado pela informação. Esta é minha primeira vez nos fóruns. Um OBRIGADO especial pelo trecho de código.
 
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
double ExtMapBuffer1[],ExtMapBuffer2[];
int init(){SetIndexStyle(0,DRAW_LINE);SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(1,DRAW_LINE);SetIndexBuffer(1,ExtMapBuffer2);
IndicatorShortName("MACD_max-min");return(0);}
int deinit(){Comment("");return(0);}
//+------------------------------------------------------------------+
int start(){int counted_bars=IndicatorCounted(),limit,win_idx;double top;
if(counted_bars>0)counted_bars--;limit=Bars-counted_bars;win_idx=WindowFind("MACD_max-min");
for(int i=0;i<limit;i++){ExtMapBuffer1[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
  ExtMapBuffer2[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i);}
  top=WindowPriceMax(win_idx);ObjectDelete("max");
  if(ObjectFind("max")!=win_idx){ObjectCreate("max",OBJ_HLINE,win_idx,Time[0],top);
  ObjectSet("max",OBJPROP_COLOR,Yellow);ObjectSet("max",OBJPROP_WIDTH,0);}
  Comment( "\n"," top = ",DoubleToStr(top,5));return(0);}
//+------------------------------------------------------------------+
 
https://docs.mql4.com/ru/common/Comment
Comentário nulo(. ...)
A função imprime um comentário definido pelo usuário no canto superior esquerdo do gráfico. Os parâmetros podem ser de qualquer tipo. O número de parâmetros não pode exceder 64.
Arrays não podem ser passados para Comentário(). As arrays devem ser impressas elemento por elemento.
Os dados do tipo duplo são impressos com 4 dígitos decimais após o ponto. Para números de saída com maior precisão, use DoubleToStr().
O bool, data e tipos de cores serão impressos como números.
Para emitir dados de data e hora como uma string, use a função TimeToStr().

Para dividir a saída em várias linhas, você pode usar o caractere de alimentação de linha "\n" ou "\r\n".
Veja também Alerta() e Impressão().
 
Você pode me dizer como escrever:
O preço cruzou a linha horizontal acima....
E como esta linha deve ser descrita?
 
Roll:
Obrigado pela ciência.
 

Olá,

Aqui está o problema que estou tendo.

Trabalhando em PERÍODO_H1.

Para fechar no final da hora eu faço isso:

   for(j = OrdersTotal()-1; j >= 0; j--){ 
       if(OrderSelect(j, SELECT_BY_POS, MODE_TRADES))
          if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber){
            OpenTime= OrderOpenTime();          
          if(OrderType() == OP_BUY){
            if(TimeCurrent()>Time[0]+3580){ 
             OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),0,Red);}
             }
           else 
          if(OrderType() == OP_SELL){
            if(TimeCurrent()>Time[0]+3580){
             OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),0,Blue);}
             }
           }
         }
Para abrir uma posição no início da hora eu faço o seguinte
   if(TimeCurrent()<Time[0]+3500 && HaveBuy==false && HaveSell==false)
     if(Ask <= EnBuy && IsFreeLevel==true){
          ticket = OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),0,0,forecast-5*MyPoint,"",MagicNumber,0,Blue);
         }
     if(Bid >= EnSel && IsFreeLevel==true){
          ticket = OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),0,0,forecast+5*MyPoint,"",MagicNumber,0,Red);
         }

Mas, para o teste, é assim

Eu não consigo descobrir onde estou errado.

Nem sempre funciona desta maneira, mas tem tais momentos.

Obrigado quem vai responder :).

 
alsu:
Não estou dizendo isso, estou dizendo que diferença faz onde a EA está anexada? Se for escrito corretamente, não importa onde é colocado - basta colocá-lo em um gráfico de câmbio mongol, mas se estiver configurado para operar em EURUSD 1 minuto, ele o fará. E não é difícil programá-lo, basta mudar algumas linhas.

Muito obrigado pelo esclarecimento!

Só estou preocupado com o testador simulando barras de um minuto para modificações na abertura de cada barra de um minuto.

Vou tentar mudar Open[0] para iOpen(NULL,1,0) e acrescentar uma função para verificar a abertura da barra de um minuto.

Passaram-se alguns minutos, durante os quais eu afinei o código e o experimentei com o testador no M5 e me certifiquei de que neste caso o testador não abre barras de 1 minuto, embora prescrito, e o modifica apenas a cada 5 minutos, o que eu temia. Em todos os ticks é um pouco melhor, porque se modifica com mais freqüência. Mas na M1 apenas na abertura do bar funciona o mesmo, tanto com Open[0] como com iOpen(NULL,1,0), pelo qual ainda sou grato!

Agora usarei sempre iOpen verde, pois vejo que posso passar sem Open vermelho. O lucro verde é mais agradável do que o vermelho. (:))

 
mario065:

Olá,

Aqui está o problema que estou tendo.

Trabalhando em PERÍODO_H1.

Para fechar no final da hora eu faço isso:

Para abrir uma posição no início da hora, eu faço isto
Mas, para o teste, é assim

Eu não consigo descobrir onde estou errado.

Nem sempre funciona desta maneira, mas tem tais momentos.

Obrigado, quem responde :)


Um amigo me deu uma dica:
Ao invés de TimeCurrent()

TimeSeconds(TimeCurrent())

E funcionou.

 
russcand:
Você pode me dizer como escrever:
O preço cruzou a linha horizontal acima....
E como esta linha deve ser descrita?
Se o valor do indicador na primeira barra for maior do que o valor da linha horizontal, E, o valor do indicador na segunda barra for menor do que o valor da linha horizontal, então a linha do indicador cruzou a linha horizontal para cima.
A descrição da linha horizontal é um número constante, ou seja, seu valor na dimensão da janela indicadora. Vamos colocar o cursor do mouse sobre ele e ver este valor.
Razão: