[¡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
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
¿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.
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.
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:
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.
Prueba con
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?
¿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...