Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 876
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
El tamaño de la matriz es cero. No te olvides de ArrayResize(), o simplemente establece el tamaño adecuado para el array
Hola,
El cuadro lo mostraba:
En la primera ventana del indicador de volumen, ponga el índice de flujo de dinero (10) en la parte superior.
Hice unindicador separado, donde nuevamente tomo el Volumen, recalculo el mouwing con el Volumen y trato de hacer como en la primera ventana - 25%, 50%, 75%.
Lo intenté de la forma en que lo hice, pero no quedó bien.
Si alguien ha tenido problemas con esto, por favor comparta sus sugerencias.
Gracias
#property indicator_separate_window #property indicator_buffers 2 #property indicator_minimum 0 #property indicator_width1 2 #property indicator_width2 2 #property indicator_color1 DodgerBlue #property indicator_color2 Yellow extern int MAPeriod = 30; double volum[],ma[]; //+------------------------------------------------------------------+ int init(){ int bars_count=WindowBarsPerChart(),volh; int bar=WindowFirstVisibleBar(); volh = Volume[iHighest(Symbol(),0,MODE_VOLUME,bar,0)]; SetIndexBuffer(0,volum); SetIndexBuffer(1,ma); SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexStyle(1,DRAW_LINE); SetLevelValue (0, volh*1.05); SetLevelValue (1, ((volh*1.05)/100)*75.0); SetLevelValue (2, ((volh*1.05)/100)*50.0); SetLevelValue (3, ((volh*1.05)/100)*25.0); return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ /*int start(){ int limit; limit = Bars-IndicatorCounted()-1; for(int i=limit;i>=0;i--){ volum[i] = NormalizeDouble(Volume[i],0); ma[i] = NormalizeDouble(iMAOnArray(volum,0,MAPeriod,0,MODE_SMA,i),0); } return(0); }*/ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { int i=rates_total-prev_calculated-1; if(i<0) i=0; while(i>=0){ if(i<rates_total-1) volum[i] = NormalizeDouble(Volume[i],0); ma[i] = NormalizeDouble(iMAOnArray(volum,0,MAPeriod,0,MODE_SMA,i),0); i--; } return(rates_total); }
Se refería a la barra de menos segundos. Y el valor medio de los límites. Quiere burlarse de mí, supongo. Yo le mandaría a la mierda, ya sabes lo que quiero decir :)
Y aevillive y artmedia70 un enorme agradecimiento. Por su paciencia y su tiempo. Estoy seguro de que no es sólo mi opinión sobre ti. Todos los que entran en este hilo piden ayuda y la obtienen sobre todo de ti. Gracias.
Hola, queridos profesionales, hace mucho tiempo que no me pongo en contacto con vosotros
El caso es que hay un Expert Advisor con 2 muwks cruzados y nadie se molestó en abrir una orden
void Comercio()
{ double ma_fast=ma(Period_,Shift_,Method_MA_,Apply_to_,0), ma_slow=ma(Period__,Shift__,Method_MA__,Apply_to__,0);
if(sumBO==0 && ma_fast>ma_slow && (!Use_Distance || (Use_Distance && ND(ma_fast-ma_slow)>Distance*Pnt))
{
if(sumSO>0 && !ClosePos(OP_SELL)) return;
if(MO(OP_BUY,GetLot(),GetComment())==-1) return;
if(!ModifyByTicket(T)) return;
NumbUp=0; NumbDn=0;
}
si no
y así sucesivamente...
es decir, si hay un cruce de la distancia, abrir una orden
Necesito un código para encontrar la hora del último cruce ...
a continuación, desde el momento actual hasta el momento en el historial, busca un pedido dentro de un período determinado... y abre un pedido si no ha encontrado ninguno
he explorado el código de los indicadores trazadores para este propósito, todo parece estar claro allí
pero no sé cómo cronometrar la primera barra después del cruce de curvas para que sea la más a la derecha
Creo que es necesario un operador de forte, pero no puedo formularlo
Esta no es la manera de hacerlo. Llama a iCustom para los 3 buffers, escribe cada valor en su propia variable y luego haz lo que quieras con estos valores.
En el caso de las bandas de Bollinger, para la segunda barra, según el ejemplo de la ayuda, no es necesario desmarcarlas:
Gracias.
Pero debido a mi analfabetismo tengo que buscar en mi manual todo el tiempo y desenterré lo siguiente: un indicador personalizado es un programa escrito de acuerdo con el algoritmo del autor. Y el tutorial dice que iCustomdevuelve el valor del indicador personalizado especificado.
Pero no uso ningún indicador personalizado (es decir, según tengo entendido, desarrollado por mí).
Necesito recuperar los valores de los indicadores estándar, si es que puedo llamarlos así, Media Móvil, Bandas de Bollinger y Oscilador Estocástico con los parámetros que he especificado. Por supuesto, lo hago "por intuición": se aplicará lo primero que encuentre, pero la variante que has sugerido tampoco me sirve.
¿No hay solución sin usar todos esos buffers, arrays y bucles? En ellos soy como un canto rodado en el mar: me hundo enseguida.
Hola, queridos profesionales, hace mucho tiempo que no me pongo en contacto con vosotros
El caso es que hay un Expert Advisor con 2 muwks cruzados y nadie se molestó en abrir una orden
void Comercio()
{ double ma_fast=ma(Period_,Shift_,Method_MA_,Apply_to_,0), ma_slow=ma(Period__,Shift__,Method_MA__,Apply_to__,0);
if(sumBO==0 && ma_fast>ma_slow && (!Use_Distance || (Use_Distance && ND(ma_fast-ma_slow)>Distance*Pnt))
{
if(sumSO>0 && !ClosePos(OP_SELL)) return;
if(MO(OP_BUY,GetLot(),GetComment())==-1) return;
if(!ModifyByTicket(T)) return;
NumbUp=0; NumbDn=0;
}
si no
y así sucesivamente...
es decir, si hay un cruce de la distancia, abrir una orden
Necesito un código para encontrar la hora del último cruce ...
a continuación, desde el momento actual hasta el momento en el historial, busca un pedido dentro de un período determinado... y abre un pedido si no ha encontrado ninguno
he explorado el código de los indicadores trazadores para este propósito, todo parece estar claro allí
pero no sé cómo cronometrar la primera barra después del cruce de curvas para que sea la más a la derecha
Creo que es necesario un operador de forte, pero no puedo formularlo
Este Asesor Experto no funciona por intersección. El criterio es el siguiente: si el МА rápido es superior al lento en X pips y no hay ninguna posición abierta, ábrala en el mercado.
Para encontrar el cruce, siempre hay que tomar dos valores: la MA rápida/lenta antes del cruce y la MA rápida/lenta después del cruce para saber cuándo se intercambian, por así decirlo. En otras palabras
if(FastMA_2<SlowMA_2 && FastMA_1>SlowMA_1) - el МА rápido ha cruzado el lento de abajo a arriba entre el primer y el segundo compás.
En un bucle infinito, mira desde la barra cero hasta la detección del cruce, será X+1 barra, y necesitas el tiempo de la barra X, es decir, la barra más reciente después del cruce.
Gracias.
Pero, debido a mi analfabetismo, tengo que escarbar en el libro de texto todo el tiempo y esto es lo que desenterré: un indicador personalizado es un programa..., escrito según el algoritmo del autor. Y el tutorial dice que iCustomdevuelve el valor del indicador personalizado especificado.
Pero no utilizo ningún indicador personalizado (es decir, según tengo entendido, desarrollado por mí).
Necesito recuperar los valores de los indicadores estándar, si es que puedo llamarlos así, Media Móvil, Bandas de Bollinger y Oscilador Estocástico con los parámetros que he especificado. Por supuesto, lo hago "por intuición" - se aplicará lo primero que encuentre. Pero su variante sugerida no me parece adecuada también.
¿No hay solución sin usar todos esos buffers, arrays y bucles? Soy como un canto rodado en el mar: me hundo en él enseguida.
Hola, queridos profesionales, hace mucho tiempo que no me pongo en contacto con vosotros
El caso es que hay un Expert Advisor con 2 muwks cruzados y nadie se molestó en abrir una orden
void Comercio()
{ double ma_fast=ma(Period_,Shift_,Method_MA_,Apply_to_,0), ma_slow=ma(Period__,Shift__,Method_MA__,Apply_to__,0);
if(sumBO==0 && ma_fast>ma_slow && (!Use_Distance || (Use_Distance && ND(ma_fast-ma_slow)>Distance*Pnt))
{
if(sumSO>0 && !ClosePos(OP_SELL)) return;
if(MO(OP_BUY,GetLot(),GetComment())==-1) return;
if(!ModifyByTicket(T)) return;
NumbUp=0; NumbDn=0;
}
si no
y así sucesivamente...
es decir, si hay un cruce de la distancia, abrir una orden
Necesito un código para encontrar la hora del último cruce ...
a continuación, desde el momento actual hasta el momento en el historial, busca un pedido dentro de un período determinado... y abre un pedido si no ha encontrado ninguno
he explorado el código de los indicadores trazadores para este propósito, todo parece estar claro allí
pero no sé cómo cronometrar la primera barra después del cruce de curvas para que sea la más a la derecha
Creo que es necesario un operador de forte, pero no puedo formularlo