Aiuto per la codifica - pagina 775

 

Gentilmente aiutatemi con questo problema.

Sotto c'è l'allarme MA cross, ma ho ricevuto troppi messaggi per 1 stessa notifica.

Voglio solo ottenere 1 notifica per 2 barre consecutive, significa cheilnumero di barre è 2 da saltare prima del prossimo allarme.

Come posso fare, gentilmente aiutatemi. Grazie mille



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

//|                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 dichiaro una variabile extern ottengo un messaggio di errore "extern-unexpected token"

Per favore aiutatemi

File:
error1.zip  116 kb
 
Ricardo Schuller:

Quando dichiaro una variabile extern ottengo un messaggio di errore "extern-unexpected token"

Per favore aiutatemi

non puoi usare extern dentro un metodo o una funzione.

 

come risolvere l'errore?

 
Mo3tasemovic:

come risolvere l'errore?

" GBPUSD"

 
Keith Watford:

" GBPUSD"

grazie

 
pivboll:

Aiuto necessario per modificare un indicatore

Sto cercando di modificare un indicatore MACD per trasformarlo in un indicatore di tendenza come descritto nel libro di Buff Dormeier Investire con l'analisi del volume.

Ho problemi con la variabile e non riesco ad ottenere un risultato decente. Sto allegando il volWMA e il VW MACD che funzionano

Ecco la descrizione

Indicatore di spinta del trend

L'indicatore di spinta di tendenza (Tti), una versione migliorata dell'indicatore di convergenza/divergenza della media mobile pesata sul volume (VW-Macd), è stato introdotto nel mio libro Investire con l'analisi del volume. Il Tti usa un moltiplicatore di volume in modi unici per esagerare l'impatto del volume sulle medie mobili ponderate per il volume. Come il VW-Macd, il Tti usa le medie mobili ponderate in base al volume invece delle medie mobili esponenziali. Le medie ponderate in base al volume pesano i prezzi di chiusura proporzionalmente al volume scambiato durante ogni periodo di tempo, quindi la Tti dà maggiore enfasi a quelle tendenze di prezzo con maggiore volume e meno enfasi ai periodi di tempo con volume più leggero. Nel numero di febbraio 2001 di Stocks & Commodities, ho mostrato che le medie mobili ponderate in base al volume (Buff averages, o Vwmas) migliorano la reattività mentre aumentano l'affidabilità delle medie mobili semplici.

Come il Macd e il VW-Macd, il Tti calcola uno spread sottraendo la media corta (veloce) dalla media lunga (lenta). Questo spread combinato con un moltiplicatore di volume crea lo spread Buff

Il calcolo è il seguente

moltiplicatore di volume = VolWMA veloce / VolWMA lento

il moltiplicatore di volume viene portato alla seconda potenza e poi moltiplicato per il VolWMA veloce per dare Volume enhance fast average

il moltiplicatore di volume viene portato alla seconda potenza e poi moltiplicato per il VolWMA lento per dare Volume enhance slow average

TTi = migliorare la media veloce - migliorare la media lenta

Grazie per il vostro aiuto

link dell'indicatore: https://www.sendspace.com/file/rfy2dv

Ciao amico mio. Hai mai risolto il TTI? Puoi condividere qui o mandarmi via PM? Grazie

 
Hi
Potreste aiutarmi con questo problema
Ho bisogno di un EA cheinvii una notifica push ogni volta che la differenza di prezzo di offerta da kinjun sen (in ichimoku) è più grande di 3 pips (30 punti) in 1 minuto di tempo fream
 

hai,


pls aggiungere l'allarme sonoro, l'allarme del messaggio e l'opzione di notifica mobile per questo indicatore.

grazie

File:
 

Ciao

Ho trovato degli argomenti come "iCustom restituisce valori sbagliati" ma questo è un po' diverso.

Cerco di creare un indicatore che confronti le dimensioni di barre di tipo identico (tipo toro/orso) in una sequenza.

e mostra i valori massimi del confronto nell'istogramma.

come questo.

valore_massimo

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

con ArrayMaximum il risultato è più veloce. ma c'è qualcosa di sbagliato nel mio codice:

iCustom_diff

ecco il codice che confronta i valori iCustom e restituisce valori sbagliati:

#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-----------------------
//-----------------------------------------------------

Dov'è il mio errore? Come posso risolverlo?
Ho provato a chiamare iCustom con tutti i parametri esterni - stesso risultato sbagliato. Ho provato con nessun param. extern iCustom - stesso risultato sbagliato.

grazie per l'aiuto

codice principale (primo istogramma) e secondo codice (secondo istogramma) basato su di esso: