Ayuda a la codificación - página 31

 

Trabajando en Array Multidimensionales, me bloqueo en una cosa tan simple..

Hola señores,

Solo trato de obtener una celda de un Array en una línea de pantalla ( mismo resultado mensaje de Alerta), se pierde algo es seguro, pero todo el día en él y no entiendo por qué..

Ayuda sería tan bueno ... ..

esto es :

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

//| !XTEST sur arrays.mq4 |

//| |

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

#propiedad copyright ""

#propiedad link ""

#property ventana_gráfica_del_indicador

extern int Moneda = 1 ;

extern int X_Col = 700 ;

extern int Y_Ligne = 30 ;

extern string FontCar = "Arial" ;

extern int TailCar = 14 ;

extern color Couleur = Lime ;

extern int X = 1;

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

//| Función de inicialización de los indicadores personalizados ||.

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

string Tab1dim[2];

string Tab2dim[2,2];

string Tab3dim[2,2,2];

string Tab4dim[2,2,2,2];

// 5eme Dimension de tableau non autorisée . int Tab5dim[20,20,20,80,2];

int init()

{

//---- indicadores

string Tab1dim[2]={"tab1-c0","tab1C1"};

//----

return(0);

}

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

//| Función de desinicialización del indicador personalizada ||

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

int deinit()

{

//----

ObjectDelete("R");

//----

return(0);

}

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

//| Función de iteración de indicadores personalizada ||.

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

int inicio()

{

//----

Tab1dim[2]={"tab1-c0","tab1C1"};

string affich=Tab1dim[0];

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//

ObjectCreate ("A1", OBJ_LABEL, 0, 0, 0 );

ObjectSet ("A1", OBJPROP_CORNER,Coin );

ObjectSet ("A1", OBJPROP_XDISTANCE,X_Col );

ObjectSet ("A1", OBJPROP_YDISTANCE,Y_Ligne );

ObjectSetText("A1",affich,TailCar, FontCar , Couleur );

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//

Alert(affich);

//----

return(0);

}

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

Gracias de antemano.

 

...

Pruebe así(la inicialización de la matriz se hace de manera diferente) :

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

//| !XTEST sur arrays.mq4 |

//| |

//| |

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

#property copyright ""

#property link ""

#property indicator_chart_window

extern int Coin = 1 ;

extern int X_Col = 10 ;

extern int Y_Ligne = 10 ;

extern string FontCar = "Arial" ;

extern int TailCar = 14 ;

extern color Couleur = Lime ;

extern int X = 1;

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

//| Custom indicator initialization function |

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

string Tab1dim[] = {"tab1-c0","tab1C1"};

string Tab2dim[2,2];

string Tab3dim[2,2,2];

string Tab4dim[2,2,2,2];

// 5eme Dimension de tableau non autorisée . int Tab5dim[20,20,20,80,2];

int init()

{

//---- indicators

string Tab1dim[2]={"tab1-c0","tab1C1"};

//----

return(0);

}

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

//| Custom indicator deinitialization function |

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

int deinit()

{

//----

ObjectDelete("A1");

//----

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

//----

string affich=Tab1dim[0];

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//

ObjectCreate ("A1", OBJ_LABEL, 0, 0, 0 );

ObjectSet ("A1", OBJPROP_CORNER,Coin );

ObjectSet ("A1", OBJPROP_XDISTANCE,X_Col );

ObjectSet ("A1", OBJPROP_YDISTANCE,Y_Ligne );

ObjectSetText("A1",affich,TailCar, FontCar , Couleur );

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//

//----

return(0);

}

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

Ilevna:
Hola señores,

Sólo tratando de obtener una celda de un Array en una línea de la pantalla ( mismo resultado mensaje de alerta), se pierda algo que es seguro, pero todo el día en él y no entiendo por qué ..

Ayuda sería tan bueno ... ..

esto es :

Gracias de antemano.
 
mladen:
Inténtalo así (la inicialización del array se hace de forma diferente) :

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

//| !XTEST sur arrays.mq4 ||

//| |**************

Muchas gracias, eso funciona bien, pero no entiendo por qué es necesario ya que normalmente podríamos declarar, o en ámbito global, o dentro de una función, algo como lo que escriben en el manual: double Tab2Dim[2*n-3]; o bien

int [] valores =nuevo int[3];

valores[0]=5;

values[1]=values[0]*2;

values[2]=values[1]*2;

pero me viene bien para el día de hoy, gracias señor.

 

...

Puedes superar parcialmente ese problema con la función ArrayResize() (de esa manera puedes tener arrays de tamaño dinámico)

El problema es que ArrayResize() funciona sólo para los arrays de una sola dimensión y la primera dimensión de un array (por ejemplo, si tienes array[][2], puedes redimensionarlo con ArrayResize() a algo así array[anySize][2]). Cualquier otra dimensión (a partir de la segunda dimensión de los arrays) debe tener un tamaño constante conocido en tiempo de compilación

Ilevna:
Muchas gracias, eso funciona bien, pero no entiendo por qué es necesario ya que normalmente podríamos declarar, o en ámbito global, o dentro de una función, algo como lo que escriben en el manual: double Tab2Dim[2*n-3]; o bien

int [] valores =nuevo int[3];

valores[0]=5;

values[1]=values[0]*2;

values[2]=values[1]*2;

pero me viene bien para el día de hoy, gracias señor.
 

Ayuda para mi indicador de banda

Hola a todos,

después de probar muchos indicadores de banda, como jband, tmaband etc.. Finalmente tomé la decisión de escribir mi propio indicador de banda,

el adjunto se encuentra el mi indicador de la banda, pero cuando EA llamar a la línea de banda baja da una división de cero, miré a mi código no hay divisor zeor allí,

Si usted tiene una idea o la experiencia como este, por favor déjame helpto resolver el problema.

gracias de antemano....

Archivos adjuntos:
aband.gif  20 kb
 

...

Sin la fuente (o sin el código para llamar al indicador personalizado) es imposible decir nada. Si su indicador funciona, entonces el error está en su EA

kemal44:
Hola a todos,

Después de probar muchos indicadores de banda, como jband, tmaband, etc.. Finalmente tomé la decisión de escribir mi propio indicador de banda,

El adjunto es mi indicador de banda, pero cuando el EA lo llama la línea de banda baja da una división de cero, miré mi código no hay divisor zeor en allí,

Si usted tiene una idea o experiencia como esta, por favor déjeme ayudar a resolver el problema.

gracias de antemano....
 

Necesito ayuda para codificar un EA de cruce de MA

Hola chicos,

Me pregunto si alguien podría ayudarme a codificar un MA crossover ea para que pueda utilizarlo cuando el tiempo que estoy lejos de la computadora.

La idea es la siguiente

Gráfico de 1 minuto - 3 EMA y 8 SMA

Si 3 EMA cruza por debajo de 8 SMA, vender el par de divisas con TP y SL preestablecidos en los parámetros.

Si 3 EMA cruza por encima de 8 SMA, comprar el par de divisas con TP y SL preestablecido en los parámetros.

No sé si es posible codificar un MA ea tan simple, pero agradecería mucho si alguien pudiera darme una mano.

Gracias de antemano.

 

...

¿Has visto este hilo : https://www.mql5.com/en/forum/general?

jacktrader:
Hola chicos,

Me pregunto si alguien podría ayudarme a codificar un MA crossover ea para que pueda utilizarlo cuando el tiempo que estoy lejos de la computadora.

La idea es la siguiente.

Gráfico de 1 minuto - 3 EMA y 8 SMA

Si 3 EMA cruza por debajo de 8 SMA, vender el par de divisas con TP y SL preestablecidos en los parámetros.

Si 3 EMA cruza por encima de 8 SMA, comprar el par de divisas con TP y SL preestablecido en los parámetros.

No sé si es posible codificar un MA ea tan simple, pero agradecería mucho si alguien pudiera darme una mano.

Gracias de antemano.
 
kemal44:
Hola a todos,

Después de probar muchos indicadores de banda, como jband, tmaband, etc.. Finalmente tomé la decisión de escribir mi propio indicador de banda,

el adjunto es mi indicador de banda, pero cuando EA lo llama la línea de banda baja da una división de cero, miré mi código no hay divisor zeor en allí,

Si usted tiene una idea o experiencia como esta, por favor déjeme ayudar a resolver el problema.

gracias de antemano....

AQUÍ está el código para la banda ind.

EA llama a la señal media y alta, pero la banda baja es el problema para mí,

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

//| Copyright © 2007, MetaQuotes Software Corp. |

//| Plataforma comercial MetaTrader 5 / MetaQuotes Software Corp.

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

#property copyright "Copyright © 2007, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net/"

//---- dibujar el indicador en la ventana principal

#property ventana_del_gráfico

//---- número de buffers del indicador

#property indicator_buffers 3

//---- color del indicador

#property indicador_color1 Oro

#property indicator_color2 Magenta

#propiedad indicador_color3 AzulVioleta

//---- PARÁMETROS DE ENTRADA DEL INDICADOR

extern int MBand_Period = 15;

extern int UpBand_Period = 15;

extern int DnBand_Period = 15;

extern int ABand_Timeframe =15;

extern int shift =0;

//---- buffers de indicadores

double Ind_Buffer0[];

double Ind_Buffer1[];

double Ind_Buffer2[];

double Ind_Buffer3[];

double Ind_Buffer4[];

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

//| Función de inicialización de los indicadores personalizados ||.

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

int init()

{

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));

IndicatorShortName("ABand "+ABand_Timeframe);

//---- definir el estilo de ejecución del gráfico

SetIndexStyle(0, DRAW_LINE);

SetIndexLabel(0, "MBand "+MBand_Period);

SetIndexStyle(2, DRAW_LINE);

SetIndexLabel(2, "UpBand "+UpBand_Period);

SetIndexStyle(1, DRAW_LINE);

SetIndexLabel(1, "DnBand "+DnBand_Period);

//---- Se utilizan 3 buffers de indicadores para el cálculo

IndicatorBuffers(5);

SetIndexBuffer(0, Ind_Buffer0);

SetIndexBuffer(1, Ind_Buffer1);

SetIndexBuffer(2, Ind_Buffer2);

SetIndexBuffer(3, Ind_Buffer3);

SetIndexBuffer(4, Ind_Buffer4);

//---- óñòàíîâêà íîìåğà áàğà, íà÷èíàÿ ñ êîòîğîãî áóäåò îòğèñîâûâàòüñÿ èíäèêàòîğ

//---- Óñòàíîâêà ôîğìàòà òî÷íîñòè îòîáğàæåíèÿ èíäèêàòîğà

IndicadorDígitos(Dígitos);

//---- ğàçìåğ êàíàëà â ïóíêòàõ

//---- fin de la inicialización

return(0);

}

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

//| Función de iteración del indicador personalizada ||.

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

int inicio()

{

//---- Ïğîâåğêà êîëè÷åñòâà áàğîâ íà äîñòàòî÷íîñòü äëÿ äëíåéøåãî ğàñ÷¸òà

if(Bars < MBand_Period + UpBand_Period + DnBand_Period)

return(0);

//---- İÌÓËßÖÈß ÈÍÄÈÊÀÒÎĞÍÛÕ ÁÓÔÅĞÎÂ

if(ArraySize(Ind_Buffer0) < Bars)

{

ArraySetAsSeries(Ind_Buffer0, false);

ArraySetAsSeries(Ind_Buffer1, false);

ArraySetAsSeries(Ind_Buffer2, false);

ArraySetAsSeries(Ind_Buffer3, false);

ArraySetAsSeries(Ind_Buffer4, false);

//----

ArrayResize(Ind_Buffer0, Bars);

ArrayResize(Ind_Buffer1, Bars);

ArrayResize(Ind_Buffer2, Bars);

ArrayResize(Ind_Buffer3, Bars);

ArrayResize(Ind_Buffer4, Bars);

//----

ArraySetAsSeries(Ind_Buffer0, true);

ArraySetAsSeries(Ind_Buffer1, true);

ArraySetAsSeries(Ind_Buffer2, true);

ArraySetAsSeries(Ind_Buffer3, true);

ArraySetAsSeries(Ind_Buffer4, true);

}

//----+ ÂÂÅÄÅÍÈÅ ÑÒÀÒÈ×ÅÑÊÎÉ ÖÅËÎÉ ÏÅĞÅÌÅÍÍÎÉ ÏÀÌßÒÈ

static int IndCounted;

//----+ Inserción de variables con coma flotante

double Resalt0, Resalt1, Resalt2;

double precio;

//----+ Inserción de variables enteras y obtención de barras calculadas

int limit, MaxBar,bar, counted_bars = IndicatorCounted();

int i,k;

//---- comprobación de posibles errores

if(counted_bars < 0)

return(-1);

//---- la última barra calculada debe ser recalculada

if(barras_contadas > 0)

counted_bars--;

//---- definiendo el número de la barra más antigua

// a partir del cual se recalcularán las nuevas barras

limit = Bares - counted_bars - 1;

//---- definiendo el número de la barra más antigua,

// a partir del cual se recalcularán las nuevas barras

MaxBar = Bars - 1 - (MBand_Period + UpBand_Period + DnBand_Period);

//---- inicialización de cero

if(limit > MaxBar)

{

limit = MaxBar;

for(bar = Bars - 1; bar >= MaxBar; bar--)

{

Ind_Buffer0 = 0.0;

Ind_Buffer1 = 0.0

Ind_Buffer2 = 0.0

Ind_Buffer3 = 0.0

Ind_Buffer4 = 0.0;

}

}

//----+ EL PRIMER CICLO DE CÁLCULO DEL INDICADOR

i=Barras-DnBand_Period;

if(counted_bars>DnBand_Period) i=Bars-counted_bars-1;

while(i>=0)

{

i=Bars-DnBand_Period;

if(counted_bars>DnBand_Period) i=Bars-counted_bars-1;

while(i>=0)

{

double min=1000000;

k=i+DnBand_Period-1;

while(k>=i)

{

precio=Resalto1[k];

if(min>precio) min=precio;

k--;

}

Ind_Buffer1=min;

i--;

}

}

for(i=0; i<limit; i++)

{

// Aquí el código del cálculo de la variable Resalt0

// basado en los valores del buffer UpBand[]

// y la variable externa0

Ind_Buffer3 =iMAOnArray(Ind_Buffer1,limit,DnBand_Period ,shift, ma_method,i);

}

//----+ EL SEGUNDO CICLO DE CÁLCULO DEL INDICADOR

{

i=Barras_Periodo_de_subida;

if(counted_bars>UpBand_Period) i=Bars-counted_bars-1;

while(i>=0)

{

double max=-1000000;

k=i+Periodo_de_la_banda_de_subida-1;

while(k>=i)

{

precio=Resalto2[k];

if(max<precio) max=precio;

k--;

}

Ind_Buffer2=max;

i--;

}

}

//---- la línea de señal es un simple promedio de movimiento

for(i=0; i<limit; i++)

{

// Aquí el código del cálculo de la variable Resalt0

// basado en los valores del buffer UpBand[]

// y la variable externa0

Ind_Buffer4 =iMAOnArray(Ind_Buffer2,limit,UpBand_Period,shift, ma_method,i);

}

//----+ EL CICLO PRINCIPAL DE CÁLCULO DEL INDICADOR

//---- la línea de señal es la media móvil simple

for(i=0; i<limit; i++)

{

// Aquí el código del cálculo de la variable Resalt0

// basado en los valores del buffer UpBand[]

// y la variable externa0

Ind_Buffer0 =(Ind_Buffer2+Ind_Buffer1)/2;

}

return(0);

}

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

 

...

¿Puedes publicar cómo estás usando la llamada iCustom()?

kemal44:
AQUÍ está el código para la banda ind.

EA llama a la señal media y alta , pero la banda baja es el problema para mí ,

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

//| IndicatorPlan.mq4 ||||

//| Copyright © 2007, MetaQuotes Software Corp. |

//| Plataforma comercial MetaTrader 5 / MetaQuotes Software Corp.

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

#property copyright "Copyright © 2007, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net/"

//---- dibujar el indicador en la ventana principal

#property ventana_del_gráfico

//---- número de buffers del indicador

#property indicator_buffers 3

//---- color del indicador

#property indicador_color1 Oro

#property indicator_color2 Magenta

#propiedad indicador_color3 AzulVioleta

//---- PARÁMETROS DE ENTRADA DEL INDICADOR

extern int MBand_Period = 15;

extern int UpBand_Period = 15;

extern int DnBand_Period = 15;

extern int ABand_Timeframe =15;

extern int shift =0;

//---- buffers de indicadores

double Ind_Buffer0[];

double Ind_Buffer1[];

double Ind_Buffer2[];

double Ind_Buffer3[];

double Ind_Buffer4[];

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

//| Función de inicialización de los indicadores personalizados ||.

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

int init()

{

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));

IndicatorShortName("ABand "+ABand_Timeframe);

//---- definir el estilo de ejecución del gráfico

SetIndexStyle(0, DRAW_LINE);

SetIndexLabel(0, "MBand "+MBand_Period);

SetIndexStyle(2, DRAW_LINE);

SetIndexLabel(2, "UpBand "+UpBand_Period);

SetIndexStyle(1, DRAW_LINE);

SetIndexLabel(1, "DnBand "+DnBand_Period);

//---- Se utilizan 3 buffers de indicadores para el cálculo

IndicatorBuffers(5);

SetIndexBuffer(0, Ind_Buffer0);

SetIndexBuffer(1, Ind_Buffer1);

SetIndexBuffer(2, Ind_Buffer2);

SetIndexBuffer(3, Ind_Buffer3);

SetIndexBuffer(4, Ind_Buffer4);

//---- óñòàíîâêà íîìåğà áàğà, íà÷èíàÿ ñ êîòîğîãî áóäåò îòğèñîâûâàòüñÿ èíäèêàòîğ

//---- Óñòàíîâêà ôîğìàòà òî÷íîñòè îòîáğàæåíèÿ èíäèêàòîğà

IndicadorDígitos(Dígitos);

//---- ğàçìåğ êàíàëà â ïóíêòàõ

//---- fin de la inicialización

return(0);

}

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

//| Función de iteración del indicador personalizada ||.

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

int inicio()

{

//---- Ïğîâåğêà êîëè÷åñòâà áàğîâ íà äîñòàòî÷íîñòü äëÿ äëíåéøåãî ğàñ÷¸òà

if(Bars < MBand_Period + UpBand_Period + DnBand_Period)

return(0);

//---- İÌÓËßÖÈß ÈÍÄÈÊÀÒÎĞÍÛÕ ÁÓÔÅĞÎÂ

if(ArraySize(Ind_Buffer0) < Bars)

{

ArraySetAsSeries(Ind_Buffer0, false);

ArraySetAsSeries(Ind_Buffer1, false);

ArraySetAsSeries(Ind_Buffer2, false);

ArraySetAsSeries(Ind_Buffer3, false);

ArraySetAsSeries(Ind_Buffer4, false);

//----

ArrayResize(Ind_Buffer0, Bars);

ArrayResize(Ind_Buffer1, Bars);

ArrayResize(Ind_Buffer2, Bars);

ArrayResize(Ind_Buffer3, Bars);

ArrayResize(Ind_Buffer4, Bars);

//----

ArraySetAsSeries(Ind_Buffer0, true);

ArraySetAsSeries(Ind_Buffer1, true);

ArraySetAsSeries(Ind_Buffer2, true);

ArraySetAsSeries(Ind_Buffer3, true);

ArraySetAsSeries(Ind_Buffer4, true);

}

//----+ ÂÂÅÄÅÍÈÅ ÑÒÀÒÈ×ÅÑÊÎÉ ÖÅËÎÉ ÏÅĞÅÌÅÍÍÎÉ ÏÀÌßÒÈ

static int IndCounted;

//----+ Inserción de variables con coma flotante

double Resalt0, Resalt1, Resalt2;

double precio;

//----+ Inserción de variables enteras y obtención de barras calculadas

int limit, MaxBar,bar, counted_bars = IndicatorCounted();

int i,k;

//---- comprobación de posibles errores

if(counted_bars < 0)

return(-1);

//---- la última barra calculada debe ser recalculada

if(barras_contadas > 0)

counted_bars--;

//---- definiendo el número de la barra más antigua

// a partir del cual se recalcularán las nuevas barras

limit = Bares - counted_bars - 1;

//---- definiendo el número de la barra más antigua,

// a partir del cual se recalcularán las nuevas barras

MaxBar = Bars - 1 - (MBand_Period + UpBand_Period + DnBand_Period);

//---- inicialización de cero

if(limit > MaxBar)

{

limit = MaxBar;

for(bar = Bars - 1; bar >= MaxBar; bar--)

{

Ind_Buffer0 = 0.0;

Ind_Buffer1 = 0.0

Ind_Buffer2 = 0.0

Ind_Buffer3 = 0.0

Ind_Buffer4 = 0.0;

}

}

//----+ EL PRIMER CICLO DE CÁLCULO DEL INDICADOR

i=Barras-DnBand_Period;

if(counted_bars>DnBand_Period) i=Bars-counted_bars-1;

while(i>=0)

{

i=Bars-DnBand_Period;

if(counted_bars>DnBand_Period) i=Bars-counted_bars-1;

while(i>=0)

{

double min=1000000;

k=i+DnBand_Period-1;

while(k>=i)

{

precio=Resalto1[k];

if(min>precio) min=precio;

k--;

}

Ind_Buffer1=min;

i--;

}

}

for(i=0; i<limit; i++)

{

// Aquí el código del cálculo de la variable Resalt0

// basado en los valores del buffer UpBand[]

// y la variable externa0

Ind_Buffer3 =iMAOnArray(Ind_Buffer1,limit,DnBand_Period ,shift, ma_method,i);

}

//----+ EL SEGUNDO CICLO DE CÁLCULO DEL INDICADOR

{

i=Barras_Periodo_de_subida;

if(counted_bars>UpBand_Period) i=Bars-counted_bars-1;

while(i>=0)

{

double max=-1000000;

k=i+Periodo_de_la_banda_de_subida-1;

while(k>=i)

{

precio=Resalto2[k];

if(max<precio) max=precio;

k--;

}

Ind_Buffer2=max;

i--;

}

}

//---- la línea de señal es un simple promedio de movimiento

for(i=0; i<limit; i++)

{

// Aquí el código del cálculo de la variable Resalt0

// basado en los valores del buffer UpBand[]

// y la variable externa0

Ind_Buffer4 =iMAOnArray(Ind_Buffer2,limit,UpBand_Period,shift, ma_method,i);

}

//----+ EL CICLO PRINCIPAL DE CÁLCULO DEL INDICADOR

//---- la línea de señal es la media móvil simple

for(i=0; i<limit; i++)

{

// Aquí el código del cálculo de la variable Resalt0

// basado en los valores del buffer UpBand[]

// y la variable externa0

Ind_Buffer0 =(Ind_Buffer2+Ind_Buffer1)/2;

}

return(0);

}

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