Ajuda na codificação - página 775

 

Por gentileza, ajude-me nesta questão.

Abaixo está o alerta cruzado de MA, mas recebi muitas mensagens por 1 mesma notificação.

Só quero receber 1 notificação por 2 barras consecutivas, o que significa que onúmero de barras é 2 para pular antes do próximo alerta.

Como posso fazer, por favor, me ajude. Muito obrigado.



//+------------------------------------------------------------------+

//|                MA Cross Arrows.mq4                               |

//|                Copyright © 2006  Scorpion@fxfisherman.com        |

//+------------------------------------------------------------------+

#property copyright "FxFisherman.com"

#property link      "http://www.fxfisherman.com"



#property indicator_chart_window

#property indicator_buffers 3

#property indicator_color1 Blue

#property indicator_color2 White

#property indicator_color3 Red



extern int Crossed_Pips = 0;

extern int MA_Period = 21;

extern int MA_Type = MODE_SMA;

extern int Shift_Bars=0;

extern int Bars_Count= 1000;

int state;

  

//---- buffers

double v1[];

double v2[];

double v3[];

  





int start()

 {

  double ma;

  int previous;

  int i;

  int shift;

  bool crossed_up, crossed_down;

  int totalBars = Bars - (MA_Period * 2);

  

  if (Bars_Count > 0 && Bars_Count <= totalBars)

  {

    i = Bars_Count;

  }else if(totalBars <= 0 ) {

    return(0);

  }else{

    i = totalBars;

  }

  

  while(i>=0)

   {

    shift = i + Shift_Bars;

    ma = iMA(Symbol(), Period(), MA_Period, 0, MA_Type, PRICE_CLOSE, shift);

    crossed_up = High[shift] >= (ma + (Crossed_Pips * Point));

    crossed_down = Low[shift] <= (ma - (Crossed_Pips * Point));



    v1[i] = NULL;

    v2[i] = NULL;    

    v3[i] = ma;

    if (crossed_up && previous != 1) {

      v1[i] = ma + (Crossed_Pips * Point);

      previous = 1;

    }else if(crossed_down && previous != 2){

      v2[i] = ma - (Crossed_Pips * Point);

      previous = 2;

    }

 

    i--;

   }

   

   ma = iMA(Symbol(), Period(), MA_Period, 0, MA_Type, PRICE_CLOSE, 0);

   if (Close[0] >= ma + (Crossed_Pips * Point) && state != 1) { 

      state = 1;

      SendNotification(Symbol() + "M"+_Period + " Price crossed UP EMA21.");

   }else if (Close[0] <= ma - (Crossed_Pips * Point) && state != -1) {

      state = -1;

      SendNotification(Symbol() + "M"+_Period + " Price cross DOWN the EMA21.");

   }



   return(0);

 }
 

Quando declaro uma variável externa, recebo uma mensagem de erro "token externo esperado".

Por favor, ajude

Arquivos anexados:
error1.zip  116 kb
 
Ricardo Schuller:

Quando declaro uma variável externa, recebo uma mensagem de erro "token externo esperado".

Por favor, ajude

não se pode usar o exterior dentro de um método ou função.

 

como corrigir o erro ??

 
Mo3tasemovic:

como corrigir o erro ??

" GBPUSD

 
Keith Watford:

" GBPUSD

obrigado

 
pivboll:

Ajuda para modificar um indicador

Estou tentando modificar um indicador MACD para transformá-lo em um Indicador de Tendência de Impulso, como descrito no livro Buff Dormeier Investindo com análise de volume.

Tenho problemas com a variável e não consigo alcançar um resultado decente. Estou anexando o volWMA e o VW MACD que estão funcionando

Aqui está a descrição

Indicador de impulso de tendência

O indicador de impulso de tendência (Tti), uma versão melhorada do indicador de convergência/divergência média móvel ponderada por volume (VW-Macd), foi introduzido no meu livro Investing With Volume Analysis. O Tti usa um multiplicador de volume de formas únicas para exagerar o impacto do volume sobre as médias móveis ponderadas por volume. Como o VW-Macd, o Tti usa médias móveis ponderadas por volume em oposição às médias móveis exponenciais. As médias ponderadas por volume pesam os preços de fechamento proporcionalmente ao volume negociado durante cada período de tempo, portanto o Tti dá maior ênfase às tendências de preços com maior volume e menos ênfase aos períodos de tempo com volume mais leve. Na edição de fevereiro de 2001 do Stock & Commodities, mostrei que as médias móveis ponderadas por volume (Buff averages, ou Vwmas) melhoram a capacidade de resposta enquanto aumentam a confiabilidade das médias móveis simples.

Como o Macd e o VW-Macd, o Tti calcula um spread subtraindo a média curta (rápida) da média longa (lenta). Este spread combinado com um multiplicador de volume cria o Buff spread

Os cálculos são os seguintes

multiplicador de volume = VolWMA rápido / VolWMA lento

o multiplicador de volume é levado para a segunda potência e depois multiplicado pelo rápido VolWMA para dar uma média rápida de aumento de volume

o multiplicador de volume é levado à segunda potência e depois multiplicado pelo SLOW VolWMA para dar uma média lenta de aumento de volume

TTi = melhorar a média rápida - melhorar a média lenta

Obrigado por sua ajuda

link indicador: https://www.sendspace.com/file/rfy2dv

Olá, meu amigo. Você já conseguiu resolver o TTI? Você pode compartilhar aqui ou me enviar via PM? Obrigado

 
Hi
Você poderia me ajudar com este problema?
Preciso de uma EA queenvie uma notificação de empurrão sempre que a diferença de preço da oferta do kinjun sen (em ichimoku) for maior que 3 pips (30 pontos) em 1 minuto de tempo fream
 

hai,


pls adicionar alerta sonoro, alerta de mensagem e opção de notificação móvel para este indicador.

obrigado

Arquivos anexados:
 

Hi

Encontrei tópicos como "iCustom retorna valores errados", mas isto é um pouco diferente.

Tento criar um indicador que compara o tamanho de barras do mesmo tipo (tipo touro/urso) em uma seqüência.

e mostra os valores máximos de comparação em histograma.

como este.

max_value

//-----------------------------

com o ArrayMaximum o resultado é mais rápido. mas há algo errado com meu código.exemplo:

iCustom_diff

aqui está o código que compara os valores iCustom e retorna valores errados:

#property indicator_separate_window
#property indicator_buffers 4


#property indicator_color1 DeepSkyBlue
#property indicator_width1 10


#property indicator_color2 Red
#property indicator_width2 10



#property indicator_color3 DodgerBlue
#property indicator_width3 4


#property indicator_color4 Crimson
#property indicator_width4 4


#property indicator_level1 0
#property indicator_levelcolor White
#property indicator_levelstyle 0


string LF = "\n";  // use this in custom or utility blocks where you need line feeds
int ObjCount = 0;  // count of all objects created on the chart, allows creation of objects with unique names
int current = 0; // variable points to current bar


double Buffer1[];
double Buffer2[];

double Buffer3[];
double Buffer4[];


double bar_0;
double bar_1;
double bar_2;
double bar_3;
double bar_4;
double bar_5;
double bar_6;
double bar_7;
double bar_8;
double bar_9;
double bar_10;
double bar_11;


//+------------------------------------------------------------------+
int init()
{
    if (false) ObjectsDeleteAll();      // clear the chart

    IndicatorDigits(Digits-5);
    IndicatorBuffers(4);
    
    SetIndexBuffer(0, Buffer1);
    SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID);
    
    SetIndexBuffer(1, Buffer2);
    SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID);
    
    
    
    
    SetIndexBuffer(2, Buffer3);
    SetIndexStyle(2, DRAW_HISTOGRAM, STYLE_SOLID);
    
    SetIndexBuffer(3, Buffer4);
    SetIndexStyle(3, DRAW_HISTOGRAM, STYLE_SOLID);
    
    
    return(0);
}


//+------------------------------------------------------------------+
int deinit()
{
if (false) ObjectsDeleteAll();

return(0);
}


//+------------------------------------------------------------------+
int start()
{
OnEveryTick1();

return(0);
}
//+------------------------------------------------------------------+
void OnEveryTick1()
{
    
    int i;
    int counted_bars = IndicatorCounted();
    if(counted_bars < 0) return(-1);
    if(counted_bars > 0) counted_bars--;
    i = Bars - counted_bars - 1;
    // main calculation loop
    while (i >= 0)
    
{
current = i;
        
//current  >0
//current+1=0
TechnicalAnalysis00();

//current  >0
//current+1>0
//current+2=0
TechnicalAnalysis01();

//current  >0
//current+1>0
//current+2>0
//current+3=0
TechnicalAnalysis02();


i--;
}
}

//-----------------------------------------------------
//---------bar_0-------------------------------
//-----------------------------------------------------
void TechnicalAnalysis00()
{

bar_0 = iCustom(NULL, NULL, "candles_from_chart-celi_masivi",0,current);
bar_1 = iCustom(NULL, NULL, "candles_from_chart-celi_masivi",0,current+1);

if
(
bar_0 > 0
&&
bar_1 == 0
)

{
Histogram00();
}

}

void Histogram00()
{
Buffer1[current]= bar_0;
}
//-----------------------------------------------------
//---------bar_1-------------------------------
//-----------------------------------------------------
void TechnicalAnalysis01()
{

bar_0 = iCustom(NULL, NULL, "candles_from_chart-celi_masivi",0,current);
bar_1 = iCustom(NULL, NULL, "candles_from_chart-celi_masivi",0,current+1);
bar_2 = iCustom(NULL, NULL, "candles_from_chart-celi_masivi",0,current+2);

if
(
bar_0 > 0
&&
bar_1 > 0
&&
bar_2 == 0
)

{
Histogram01();
}

}

void Histogram01()
{
int x_up_01[] = {0,0};

x_up_01[0] = bar_0;
x_up_01[1] = bar_1;

int maxValue_01 = ArrayMaximum(x_up_01);

Buffer1[current]= x_up_01[maxValue_01];
}
//-----------------------------------------------------
//---------bar_2-------------------------------
//-----------------------------------------------------
void TechnicalAnalysis02()
{

bar_0 = iCustom(NULL, NULL, "candles_from_chart-celi_masivi",0,current);
bar_1 = iCustom(NULL, NULL, "candles_from_chart-celi_masivi",0,current+1);
bar_2 = iCustom(NULL, NULL, "candles_from_chart-celi_masivi",0,current+2);
bar_3 = iCustom(NULL, NULL, "candles_from_chart-celi_masivi",0,current+3);

if
(
bar_0 > 0
&&
bar_1 > 0
&&
bar_2 > 0
&&
bar_3 == 0
)

{
Histogram02();
}

}

void Histogram02()
{
int x_up_02[] = {0,0,0};

x_up_02[0] = bar_0;
x_up_02[1] = bar_1;
x_up_02[2] = bar_2;

int maxValue_02 = ArrayMaximum(x_up_02);

Buffer1[current]= x_up_02[maxValue_02];
}
//-----------------------------------------------------
//---------bar_3--------and so on-----------------------
//-----------------------------------------------------

onde está o meu erro? como posso corrigi-lo?
Eu tentei chamar o iCustom com todos os param. externos - mesmo resultado errado. Tentei sem param. externos iCustom - o mesmo resultado errado.

obrigado pela ajuda

código principal (primeiro histograma) e segundo código (segundo histograma) com base nele :