Pergunta do assessor multimoedas - página 7

 
Certo! Vou analisar isso agora. Mas o testador não sabe a que instrumento a EA está ligada.
 

datetime iTime(símbolo de string, int timeframe, int shift)

Retorna o valor do tempo da barra aberta a partir do gráfico correspondente (símbolo, período de tempo). Em caso de erro a função retorna 0. Para mais informações sobre o erro chame GetLastError(). Para o gráfico atual, as informações sobre o tempo aberto de cada barra estão localizadas na matriz de tempo pré-definida[]. Parâmetros: símbolo - nome do símbolo do instrumento. NULL significa símbolo atual. prazo - Período. Pode ser um dos períodos do gráfico. 0 significa período do gráfico atual. shift - Índice do valor do intervalo de tempo (shift em relação à barra atual por número especificado de períodos de volta).

---------------------------------------------------------------------------------------------------------------------

Tanto quanto eu entendo, você deveria primeiro definir, por exemplo:

estática int prevtimeEURUSD = 0;

então insira-o no código do par necessário

double TTTTTT=iTime("EURUSD",60,0); 
if(TTTTTT == prevtimeEURUSD) 
       return(0);
   prevtimeEURUSD = TTTTTT
 
rid:

...

Tanto quanto sei, a primeira coisa a fazer é definir, por exemplo:

estática int prevtimeEURUSD = 0;

então insira-o no código do par que precisamos

double TTTTTT=iTime("EURUSD",60,0); 
if(TTTTTT == prevtimeEURUSD) 
       return(0);
   prevtimeEURUSD = TTTTTT

Sim. Veja como é feito no ProtoType (Rosh). Tentei inserir um link, algo não passou (encontre-o procurando no CodeBase). A função isNewBar() tem uma matriz bidimensional para isso - a ordem é uma grande potência!
 
Obrigado! Eu tenho este especialista. Vou dar uma olhada agora.
 
Caro Klerk!
Quero fazer um indicador de múltiplas moedas, por exemplo, dois pares. Primeiro, as citações destes pares devem ser trazidas a uma única forma (por exemplo, para convertê-los em mudança percentual, ou seja, (Fechar[i]-Fechar[i+1])/100% - está certo?), e depois, se eu quiser ver a dinâmica da diferença entre eles, eu deveria introduzi-los no indicador. Como fazer isso?
 

Se você quer a dinâmica da diferença, não precisa convertê-la em uma porcentagem, você pode fazê-lo assim:

int start(){
 
 double Point1 = MarketInfo("GBPUSD",MODE_POINT);
 double Point2 = MarketInfo("USDJPY",MODE_POINT);
 
 
 MacdBuffer[0] = iMACD("GBPUSD",0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)/Point1
              + iMACD("USDJPY",0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)/Point2;
     Comment("MACD "+MacdBuffer[0]);         
 
return(0);
}
 
Muito obrigado, Xeon!!!! Vou tentar!
 
Xeon! Se você não se importa de deixar cair o que você precisa no topo desde o início.... Porque, eu ainda sou um boneco!!!
 
nido:
Xeon! Se não for difícil, deixe cair o que você precisa desde o início. Porque eu ainda sou um boneco!!!


Na verdade, isto foi escrito em alguns minutos em um roteiro de teste (para testar blocos de código)

Tinha que esboçar um indicador para você :-)

//+------------------------------------------------------------------+
//|                                                    MultyMACD.mq4 |
//|                                           Copyright © 2007, xeon |
//|                                                       xeon@nm.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, xeon"
#property link      "xeon@nm.ru"
 
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
#property indicator_width1  2
//---- buffers
double MacdBuffer[];
double SignalBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init(){
   IndicatorBuffers(2);
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,MacdBuffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,SignalBuffer);
   SetIndexEmptyValue(0,0.0);
   SetIndexEmptyValue(1,0.0);
   SetIndexLabel(0,"MACD");
   SetIndexLabel(1,"Signal");
   IndicatorShortName("MultyMACD");
     
 
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start(){
 
   if(IsOptimization()==true || IsTesting()==true){Comment("В тестере будет ошибка деления на 0. описано - в справке по MarketInfo");return(0);}
//----
 double Point1 = MarketInfo("GBPUSD",MODE_POINT);
 double Point2 = MarketInfo("USDJPY",MODE_POINT);
 
 
 MacdBuffer[0] = iMACD("GBPUSD",0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)/Point1
              + iMACD("USDJPY",0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)/Point2;
 
 for(int i=9;i>=0;i--){
     SignalBuffer[0]=iMAOnArray(MacdBuffer,0,9,0,MODE_SMA,i);
 }
  
//----
   return(0);
  }
//+------------------------------------------------------------------+

Espero que você descubra

p.s. tenha em mente que este indicador só funcionará online, sobre o histórico que você precisará para criar um loop

 
xeon:
nido:
Xeon! Se não for difícil, deixe cair o que você precisa desde o início. Porque eu ainda sou um boneco!!!


Na verdade, isto foi escrito em alguns minutos em um roteiro de teste (para testar blocos de código)

Tinha que esboçar um indicador para você :-)

//+------------------------------------------------------------------+
//|                                                    MultyMACD.mq4 |
//|                                           Copyright © 2007, xeon |
//|                                                       xeon@nm.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, xeon"
#property link      "xeon@nm.ru"
 
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
#property indicator_width1  2
//---- buffers
double MacdBuffer[];
double SignalBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init(){
   IndicatorBuffers(2);
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,MacdBuffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,SignalBuffer);
   SetIndexEmptyValue(0,0.0);
   SetIndexEmptyValue(1,0.0);
   SetIndexLabel(0,"MACD");
   SetIndexLabel(1,"Signal");
   IndicatorShortName("MultyMACD");
     
 
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start(){
 
   if(IsOptimization()==true || IsTesting()==true){Comment("В тестере будет ошибка деления на 0. описано - в справке по MarketInfo");return(0);}
//----
 double Point1 = MarketInfo("GBPUSD",MODE_POINT);
 double Point2 = MarketInfo("USDJPY",MODE_POINT);
 
 
 MacdBuffer[0] = iMACD("GBPUSD",0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)/Point1
              + iMACD("USDJPY",0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)/Point2;
 
 for(int i=9;i>=0;i--){
     SignalBuffer[0]=iMAOnArray(MacdBuffer,0,9,0,MODE_SMA,i);
 }
  
//----
   return(0);
  }
//+------------------------------------------------------------------+

Espero que você descubra

p.s. Tenha em mente que este indicador só funcionará online, sobre o histórico que você precisará para criar um loop

OBRIGADO, Xeon!!! Posso escrever-lhes uma mensagem privada a respeito da idéia de uma EA? Meu e-mail: ni_do@mail.ru
Razão: