Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 1043

 

Descrevê-lo-ei bem com mais detalhes.

O indicador principal está localizado no par euro-dólar. Este indicador chama indicadores de outros pares de ouro, índice do dólar e moeda do euro. Este indicador funciona em pares de 1 minuto e às vezes não há citações no índice do dólar, por exemplo, o euro tem um castiçal de 15 minutos, mas o índice do dólar não tem tal castiçal, o índice é congelado e não faz tic-tac. Então, após algum tempo, o castiçal de 16 minutos aparece no EUR e o castiçal de 16 minutos aparece no índice do USD. Qual é a pergunta? Como sincronizar o cálculo do indicador, assim ele só é contado quando as barras em todos os símbolos chamados coincidem no tempo????

Eu tentei esta construção

if((iTime(NULL,0,i)==iTime("XAUUSD",0,i))&&(iTime(NULL,0,i)==iTime("EURJPY",0,i))){

Parece ser legal, mas o cálculo é realizado apenas para o dia atual, não há sinais para os dias anteriores. Talvez haja soluções padrão para sincronização de símbolos????

 
nikelodeon:

Descrevê-lo-ei bem com mais detalhes.

O indicador principal está localizado no par euro-dólar. Este indicador chama indicadores de outros pares de ouro, índice do dólar e moeda do euro. Este indicador funciona em pares de 1 minuto e às vezes não há citações no índice do dólar, por exemplo, o euro tem um castiçal de 15 minutos, mas o índice do dólar não tem tal castiçal, o índice está congelado e não faz tic-tac. Então, após algum tempo, o castiçal de 16 minutos aparece no EUR e o castiçal de 16 minutos aparece no índice do USD. Qual é a pergunta? Como sincronizar o cálculo do indicador, assim ele só é contado quando as barras em todos os símbolos chamados coincidem no tempo????

Eu tentei esta construção

Parece ser legal, mas o cálculo é realizado apenas para o dia atual, não há sinais para os dias anteriores. Talvez haja uma solução padrão para sincronização de símbolos????

Tente em um temporizador no loop SymbolInfoTick() para obter dados sobre os símbolos. E já existe a sincronização que você precisa.

O problema é que, no símbolo atual, o programa começa apenas com a chegada do tick para este símbolo. Portanto, você não poderá obter os carrapatos dos outros símbolos a tempo. Mas em um temporizador que funciona independentemente dos carrapatos, você poderá obter carrapatos de outros símbolos.

O temporizador pode ser ajustado para milissegundo se você precisar de uma resposta rápida a um sinal que não seja seu próprio.

 
artmedia70:
E você tem uma pergunta terrivelmente desfocada e só você pode entendê-la.

VOCÊ TERÁ!!! OBRIGADO! FESTAS FELIZES!

Mais 2 pontos, querida. 1) você pode remover o indicador de uma janela separada?

2)adicionar uma função, se o ATR atual for superior ao ATR (para o período H), então o ATR acima da barra, seria destacado em uma cor diferente? ou o valor seria escrito somente acima desta barra?

 
kocunyc89:

VOCÊ TERÁ!!! OBRIGADO! FESTAS FELIZES!

Mais 2 pontos, querida. 1) Você pode remover o indicador de uma janela separada?

2)adicionar uma função, se o ATR atual for mais do que ATR (para o período H), então o ATR acima da barra seria destacado em uma cor diferente? ou o valor seria escrito somente acima desta barra?

Oh, querida... Aqui, edite-o você mesmo:

//+------------------------------------------------------------------+
//|                                                 iATRwithData.mq4 |
//|              Copyright 2016, Artem A. Trishkin, Skype artmedia70 |
//|                       https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Artem A. Trishkin, Skype artmedia70"
#property link      "https://login.mql5.com/ru/users/artmedia70"
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot ATR
#property  indicator_label1  "ATR"
#property  indicator_type1   DRAW_LINE
#property  indicator_color1  clrDodgerBlue
#property  indicator_style1  STYLE_SOLID
#property  indicator_width1  1
//+------------------------------------------------------------------+
//| enums                                                          |
//+------------------------------------------------------------------+
enum enumYN
  {
   enYes=1, // Yes
   enNo=0,  // No
  };
//+------------------------------------------------------------------+
//| input parameters                                                 |
//+------------------------------------------------------------------+
input int      PeriodATR=14;           // ATRs calculation period
int periodATR=(PeriodATR<1)?1:PeriodATR;
sinput enumYN DrawGraphic=enYes;       // Drawing ATR data over the candles
sinput int StartDrawingBar=100;        // Max bar for drawing ATRs data
int startDrawingBar;
sinput int TextSize=5;                 // Text size
sinput color TextColor=clrDodgerBlue;  // Text color
//--- indicator buffers
double         BufferATR[];
string Prefix;
//+------------------------------------------------------------------+
//| Classes                                                          |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,BufferATR);
   
   Prefix="iATRwd("+IntegerToString(periodATR)+")";
   IndicatorSetString(INDICATOR_SHORTNAME,Prefix);
   int bars=Bars(Symbol(),Period());
   startDrawingBar=(StartDrawingBar<1)?1:(StartDrawingBar>bars)?bars:StartDrawingBar;
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- delete graphics
   ObjectsDeleteAll(0,Prefix,0);
//---
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   if(rates_total<periodATR) return(0);
   int limit=rates_total-prev_calculated;
   if(limit>1) limit=rates_total-periodATR-1;
   //---
   for(int i=limit; i>=0; i--) {
      BufferATR[i]=iATR(Symbol(),Period(),periodATR,i);
      if(DrawGraphic && i<startDrawingBar) {
         string tm_txt=TimeToString(time[i],TIME_DATE|TIME_MINUTES);
         string nm=Prefix+"_"+tm_txt;
         string text=IntegerToString(int(BufferATR[i]/Point()));
         string tooltip="ATRs period for candle on "+tm_txt+" is "+text;
         SetArrowText(0,nm,TextColor,text,0,ANCHOR_LOWER,time[i],high[i],"Arial",TextSize,tooltip);
         }
      }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
   
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Functions                                                        |
//+------------------------------------------------------------------+
void SetArrowText(long chart_id, string name, color text_color, string text, int sub_window, 
                  long text_anchor, long text_time1, double text_price1, string font="Arial", long font_size=5, 
                  string tooltip="\n", bool selection=false, bool hidden=true) {
   
   if(ObjectFind(chart_id,name)<0) ObjectCreate(chart_id,name,OBJ_TEXT,sub_window,text_time1,text_price1);
   ObjectSetInteger(chart_id,name,OBJPROP_ANCHOR,text_anchor);
   ObjectSetInteger(chart_id,name,OBJPROP_WIDTH,font_size);
   ObjectSetString(chart_id,name,OBJPROP_FONT,font);
   ObjectSetString(chart_id,name,OBJPROP_TEXT,text);
   ObjectSetInteger(chart_id,name,OBJPROP_COLOR,text_color);
   ObjectSetInteger(chart_id,name,OBJPROP_FONTSIZE,font_size);
   ObjectSetInteger(chart_id,name,OBJPROP_TIME1,text_time1);
   ObjectSetDouble(chart_id,name,OBJPROP_PRICE1,text_price1);
   ObjectSetInteger(chart_id,name,OBJPROP_SELECTED,selection);
   ObjectSetInteger(chart_id,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_id,name,OBJPROP_HIDDEN,hidden);
   ObjectSetString(chart_id,name,OBJPROP_TOOLTIP,tooltip);
}
//+------------------------------------------------------------------+

Ou você quer que eu faça tudo por você também?

 
artmedia70:

Oh, querida... Aqui, você mesmo o faz:

Ou eu deveria fazer isso por você também?

Muito obrigado! Bom homem!
 
kocunyc89:
Muito obrigado! caro amigo!
Seja bem-vindo.
 
Boa noite, é possível fazer o indicador exibir os dados do buffer em duas janelas, parte no gráfico principal e parte no sub-final? Em caso afirmativo, por favor, informe como ...
 
artmedia70:

Seja bem-vindo. Se não é segredo, por que você precisa de um carimbo da hora da última execução do seu programa - o tempo nele não mudará.

Apenas curiosidade ociosa...

É para a tabela de carrapatos offline.



 
Olá.

Que funções podem ser usadas para enviar variáveis entre dois terminais MT4? Se possível, por favor, acrescente um link à documentação.
 
abeiks Quais funções estão disponíveis para o envio de variáveis entre dois terminais MT4?

int Bandeiras=FILE_WRITE+FILE_TXT+FILE_COMMON;

int Info = FileOpen(fName,Flags);

FileWrite(Info,What's Up); No outro terminal, leia. Cursor em FileOpen e F1 - obtenha ajuda