[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 263

 
Run >> :

¿Puedes decirme cómo dibujar un cuadrado o rectángulo sin dibujarlo como fondo, y dibujarlo como un marco?

Gracias

En la lista de propiedades del objeto, establezca en falso la propiedad del rectángulo que se dibujará como fondo:

ObjectSet( string name, OBJPROP_BACK, false) ;

Pero el objeto se dibujará antes del gráfico.

 

editar | borrar

Me disculpo, quizás por una pregunta poco razonable...


Soy un poco lento con los topes indicadores.... O bien, no he descubierto el indicador en sí...


¿Podría aconsejarme, si es posible, cómo referirse al indicador BrainTrend2StopN?


Quiero comprobar si la apertura de la barra actual es superior/inferior a los valores del indicador.

Accedo al indicador desde el EA con la cadena:


iCustom(NULL,0, "BrainTrend2StopN",CountBars, 1,0)

o

iCustom(NULL,0, "BrainTrend2StopN",CountBars, 0,0)

para el cero y el primer búfer respectivamente....

Pero, el Asesor Experto no reacciona a esta cadena...


Muchas gracias de antemano.

Archivos adjuntos:
 
Morzh09 >> :

iCustom(NULL,0, "BrainTrend2StopN",CountBars,1,0)

o

iCustom(NULL,0, "BrainTrend2StopN",CountBars,0,0)

para el cero y el primer búfer respectivamente....

El Asesor Experto no reacciona a esta cadena...

Tenga en cuenta que tiene 2 parámetros externos en su indicador:

extern int Simbol =119;

extern intBars=500;

tienes que escribirlos todos en el iCustom:


iCustom(NULL,0,"BrainTrend2StopN", Simbol, CountBars, 0,0);

iCustom(NULL,0,"BrainTrend2StopN", Simbol, CountBars, 1,0);
 

alsu


Muchas gracias. Corregido el código, ahora paso ambos parámetros, pero desafortunadamente, cuando llamo a Alert con los valores del buffer del indicador, sólo obtengo ceros....


Si tienes la oportunidad, puedes decirme cómo tratarla.

Archivos adjuntos:
bt1_1.mq4  10 kb
 

Prueba con

Alert("Buy signal",
      "  ",
      DoubleToStr(iCustom(NULL,0,"BrainTrend1StopN", Simbol, CountBars, EnableAlerts, SignalID,1,0),8),
      "   ", 
      DoubleToStr(iCustom(NULL,0,"BrainTrend1StopN", Simbol, CountBars, EnableAlerts, SignalID,0,0),8)
      );
 
Por favor, ayúdenme, señores programadores. Llevo una semana luchando con esto, pero nada funciona, porque no tengo ni idea de cómo programar. ¿Puede escribir un indicador que cruce dos HMA y tenga punteros en forma de flechas?
Archivos adjuntos:
hma.mq4  4 kb
 

por alguna razón no entiende lo que es un turno y no quiere poner flechas

#propiedad ventana_del_gráfica_del_indicador
//#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Magenta // 12
#property indicator_color2 Azul // 26
#property indicator_color3 MediumBlue
#property indicator_color4 Tomate
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 1
#property indicator_width4 1
//---- parámetros del indicador
extern int FastHMA = 12;
extern int SlowHMA = 26;
extern inttern ExtmethodFastHMA=0; // MODE_SMA
extern int ExtmethodSlowHMA=0; // MODE_SMA
extern int ExtpriceFastHMA=0; // PRICE_CLOSE
extern int ExtpriceSlowHMA=0; // PRICE_CLOSE
extern int ExtsdvigFastHMA=0;
extern int ExtsdvigSlowHMA=0;
extern bool EnableAlert=true;
extern string ExtSoundFileName = "";
//---- búferes indicadores
doble PreHMA1[];
doble PreHMA2[];
doble CrossUp[];
doble CrossDown[];
static int bBuy = 0;
static int bSell = 0;

//+------------------------------------------------------------------+
int pF, pS;

//+------------------------------------------------------------------+
//| Función de inicialización de indicadores personalizada |
//+------------------------------------------------------------------+
int init()
{

/Medio
SetIndexStyle( 0, DRAW_LINE );
SetIndexStyle( 1, DRAW_LINE );
// Señales
SetIndexStyle( 2, DRAW_ARROW, EMPTY );
SetIndexArrow( 2, 233 );
SetIndexStyle( 3, DRAW_ARROW, EMPTY );
SetIndexArrow( 3, 234 );

//---- 5 indicadores de la asignación de buffers
SetIndexBuffer(0,PreHMA1);
SetIndexBuffer(1,PreHMA2);
SetIndexBuffer( 2,CrossUp );
SetIndexBuffer( 3,CrossDown );

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

//---- nombre para la etiqueta de la subventana DataWindow y del indicador
IndicatorShortName("HMA2("+FastHMA+", "+SlowHMA+")";
SetIndexLabel( 0, "HMA("+FastHMA + "," +SlowHMA +")" + FastHMA );
SetIndexLabel( 1, "HMA(" + FastHMA + "," + SlowHMA+")" + SlowHMA );
SetIndexLabel( 2, "Buy" );
SetIndexLabel( 3, "Sell" );

pF = MathSqrt(FastHMA);
pS = MathSqrt(SlowHMA);

//---- inicialización realizada
return(0);
}


//+------------------------------------------------------------------+
double WMA(int x, int p) {
return(iMA(NULL, 0, p, 0, MODE_SMA, PRICE_CLOSE, x+sdvig))
}


//+------------------------------------------------------------------+
//| Media móvil del oscilador |
//+------------------------------------------------------------------+
int inicio()
{

bool bConditionUp;
{ bConditionDown;
doble rango;
doble AvgRange;

int límite;
int contador;
int barras_contadas=IndicadorContado();

//---- la última barra contada se volverá a contar
if(counted_bars>0) counted_bars--;
limit=Barras_contabilizadas;

//---- preparar la HMA
for(int i=0; i<limit; i++) {
PreHMA1[i] = 2*WMA(i, FastHMA/2) - WMA(i, FastHMA);
PreHMA2[i] = 2*WMA(i, SlowHMA/2) - WMA(i, SlowHMA);

AvgRange = 0;
bConditionUp = 0;
bConditionDown = 0;
for ( counter = i; counter <= i + 9; counter++ ) {
AvgRange += MathAbs( Alto[ contador ] - Bajo[ contador ] );
}
Rango = AvgRange/10;
bConditionUp = (PreHMA1[i+1] >= PreHMA2[i+1] ) &&
(PreHMA1[i+2] <= PreHMA2[i+2] ) &&
(PreHMA1[i] >= PreHMA2[i] ); // cruce hacia arriba
bConditionDown = (PreHMA1[i+1] <= PreHMA2[i+1] ) &&
(PreHMA1[i+2] >= PreHMA2[i+2] ) &&
(PreHMA1[i] <= PreHMA2[i] ); // cruce hacia abajo
if ( bConditionUp) {//
CrossUp[i+1] = PreHMA2[i+1]-Rango * 0,75;
CrossDown[i+1] = EMPTY_VALUE;
bConditionDown = false;
}

if ( bConditionDown) {//
CrossDown[i+1] = PreHMA2[i+1]+Rango * 0,75;
CrossUp[i+1] = EMPTY_VALUE;
bConditionUp = false;
}

if (!bConditionUp && !bConditionDown) {
CrossDown[i+1] = EMPTY_VALUE;
CrossUp[i+1] = EMPTY_VALUE;
}

if (bConditionUp && !bBuy==1 && i==0 && EnableAlert){
bBuy = 1; // establecer la bandera de compra
bSell = 0; // restablecer la bandera para vender
Alerta (Symbol()," ",Period(), "M Achtung BUY "); // pitido
if ( ExtSoundFileName != "" ) PlaySound( ExtSoundFileName );
}
if (bConditionDown && !bSell==1 && i==0 && EnableAlert){
bBuy = 0; // establecer la bandera de compra
bSell = 1; // restablecer la bandera de venta
Alerta (Símbolo()," ",Periodo(), "M Achtung SELL "); // pitido
if ( ExtSoundFileName != "" ) PlaySound( ExtSoundFileName );
}
//Comentario ("Comprar-"+bComprar+"\Nvender-"+bVender);
} // para

//retorno ("0 );
}
//para comprar
// if (bBuy==0 && i < 1 && EnableAlert) {
///Alerta (Symbol()," ",Period(), "M Achtung BUY "); // pitido
// Alerta ("Comprar,",bCompra,",i,",ActivarAlerta);
// if ( ExtSoundFileName != "" ) PlaySound( ExtSoundFileName );
// }

// si (bSell==0 && i < 1 && EnableAlert) {
///Alerta (Symbol()," ",Period(), "M Achtung SELL ");
// Alerta ("Sell-",bSell," ",i," ",EnableAlert);
// if ( ExtSoundFileName != "" ) PlaySound( ExtSoundFileName );
// }

¿Podría alguien decirme cuál es mi error?

 
kurt >> :


¿alguien puede decirme cuál es mi error?

En primer lugar, ponga el código en una forma legible, utilizando pestañas que indiquen el nivel de anidamiento y el botón SRC

 

Hola.


Por favor, ayúdame a entender la función de información del tutorial https://book.mql4.com/ru/build/info no he entendido durante una semana, ¿por qué no aparecen señales de ella? Tomé el Asesor Experto exactamente del tutorial, la información está incluida dentro.


¿Tengo que añadir un indicador a mi gráfico? ¿Qué debo utilizar para rellenarla? El ejemplo tiene un indicador vacío y quiero llenarlo con lo que quiera... ¿Cómo hacer que muestre las señales de la función Inform()?

 

Parece que una semana para nosotros los novatos es la fecha límite después de la cual vamos a usted pros))))


Concluyendo con los últimos posts...