¿Cómo codificar? - página 117

 
mystified:
He añadido niveles a la HMA:

#property ventana_de_separación

#propiedad indicator_buffers 2

#propiedad indicador_color1 Negro

#propiedad indicador_color2 Rojo

#propiedad indicator_width1 2

#propiedad indicador_mínimo 0

#propiedad indicador_máximo 100

#propiedad indicador_nivel1 80

#propiedad indicador_nivel2 60

#propiedad indicador_nivel3 40

#propiedad indicador_nivel4 20

#property indicador_nivelcolor gris oscuro

Pero el indicador no aparece en una ventana separada correctamente.

Porque el indicador está acotado a la fuerza:

Elimine estas dos líneas:

#property indicador_mínimo 0

#property indicador_máximo 100

Los niveles sólo funcionan bien en indicadores acotados pero para hacer un indicador acotado el cálculo debe incluir los límites.

Ejemplo: RSI = 100-(100/(1+U/D))

Sabemos por esa fórmula que el indicador se moverá entre 0-100 y por eso podríamos incluir los niveles 70-30 sin miedo a que desaparezcan.

Otro ejemplo es MACD = EMA(CIERRE, 12)-EMA(CIERRE, 26)).

Fijamos un nivel en M5 y cuando pasamos a H1 lo más probable es que el nivel haya desaparecido.

Entonces, tomamos la misma fórmula y hacemos algunos cambios MACD = (EMA(CLOSE, 12)-EMA(CLOSE, 26))/EMA(CLOSE, 26). Y ahora tenemos un indicador porcentual. No está acotado pero tenemos menos probabilidades de perder nuestros niveles.

 

Gracias Linuxer.

 
He creado un EA muy simple. y un sistema que utilizo en al menos 3 Timeframe..May problema no deja de abrir y no quiero tener 3 EA y 3 gráfico para un par.

i need a code that would only do one order for buy and for sell per bar per TF and still open if it is on a different bar. i can have buy and sell and the same bar.

A veces tengo 3 señales en 3 TF diferentes. Quiero tomar todas las órdenes, pero sólo quiero una orden por TF y todavía puedo tomar otra orden en otro TF si todavía está abierto pero en una barra diferente.

ejemplo:

1 señal en 4h

1 señal en 1h pero cae en la barra de 4h

1 señal en 30 min pero solo una barra para 1h y 4h.

3 señal será abierta.

me parece bien usar el numero magico como medio de filtro.

¿puede alguien ayudarme? muchas gracias.

hasta ahora esto es lo que he pensado:

para 30 minutos

if (magicnumber == 123)

{

if (iTime(OrderOpenTime()) != iTime(Symbol(),PERIOD_M30,0))

{//mi código de orden}

}

No tengo MT4 pero sé que algo no está bien en la lógica o el código. Así que chicos por favor ayúdenme.

también creo que tenemos un problema similar con matrixebiz

¿Alguien puede ayudarme por favor?

 
mystified:
Gracias Linuxer.

Este es sólo el ejemplo (porque ahora tienes el Oscilador HMA ) del post anterior, todavía es MACD pero calculado de una manera diferente.

 
 

¿Cómo empezar a operar en la vela de apertura en D1?

¿hay alguien que conozca el código para pedir al EA que inicie la operación cuando la nueva barra comience en el marco de tiempo D1?

Esta es la lógica:

en D1 TF, cuando la nueva vela (significa un nuevo día) se inicia entonces EA abrirá 2 posiciones, COMPRA y VENTA con TP=10 pips para cada posición.

Cuando la vela se cierra, el EA cierra todas las posiciones y comienza a abrir posiciones de nuevo para la nueva vela.

regla muy simple, pero todavía no puedo encontrar el código para esta regla simple....

Soy realmente nuevo en la codificación MQL4 y ya buscar y leer muchas fuentes y el foro para aprender más acerca de la codificación MQL4, pero no puede encontrar lo que estoy necesidad.

Gracias antes...

 

aquí está mi código.... por favor ayúdame a arreglarlo

He intentado codificar lo que he pedido antes, aquí está el código de ejemplo de EA:

int start()

{

LastPrice=0;

LastProfit=0;

LastTicket=0;

LastLots=Lotes;

Profit=0;

ProfitPip=0;

PairOrder=0;

OrdersOpened = 0;

PreviousOrders = OrdersOpened;

double Spread = MarketInfo(Symbol(),MODE_SPREAD);

PipValue=MarketInfo(Symbol(),MODE_TICKVALUE);

ArrayCopyRates(rates, Symbol(), PERIOD_D1);

if(DayOfWeek()==0 || DayOfWeek()==6)

{

//no hay operaciones en días festivos;

return(0);

}

else

{

if (newbar()==Period())

{

for (int cnt = OrdersTotal() - 1; cnt >= 0; cnt --)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)

{

OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), Slippage, Color1);

}

}

OpenBuy();

OpenSell();

}

}

}

int newbar()

{

doble g

int m,s,k;

m=Tiempo[0]+Periodo()*60-TiempoActual();

g=m/60,0;

s=m%60;

m=(m-m%60)/60;

return(m);

}

void AbrirCompra()

{

double ldLot, ldStop, ldTake;

cadena lsComm;

ldLot = GetSizeLot();

ldStop = Ask-Point*StopLoss;

ldTake = NormalizeDouble(GetTakeProfitBuy(),Digits);

OrderSend(Symbol(),OP_BUY,ldLot,NormalizeDouble(Ask,Digits),Slippage,ldStop,ldTake, "BUY",Magic,0,Color1);

}

void OpenSell()

{

double ldLot, ldStop, ldTake;

cadena lsComm;

ldLot = GetSizeLot();

ldStop = Bid+Punto*StopLoss;

ldTake = NormalizeDouble(GetTakeProfitSell(),Digits);

OrderSend(Symbol(),OP_SELL,ldLot,NormalizeDouble(Bid,Digits),Slippage,ldStop,ldTake, "SELL",Magic,0,Color1);

}

double GetSizeLot()

{

return(Lotes);

}

double GetTakeProfitBuy()

{

return(Precio+Toma de Beneficio*Punto);

}

double GetTakeProfitSell()

{

return(Oferta-TomaProfit*Punto);

}

Anoche lo subí a mi vps, pero esta mañana lo comprobé pero mi EA de ejemplo no abre ninguna operación, ¿puede alguien ayudarme a arreglar mi EA de ejemplo aquí?

por cierto, lo he adjuntado aquí también

 

Alertas que duran más

¡hola soy novato tratando de entender los entresijos de esto y cualquier ayuda será apreciada!

mi indicador actual tiene el siguiente código para generar alertas, pero esta alerta dura sólo un pitido, ¿hay alguna manera de que pueda hacer que suene durante 30 o 60 segundos o al menos un poco más de 1 pitido

if (setalert == 1 && shift == 0) {

Alert(Symbol(), " ", period, " ", pattern);

setalert = 0;

}

Gracias

 

Re codificación a metatrader (Klinger Volume Oscillator)

El Oscilador Klinger (KO) fue desarrollado por Stephen J. Klinger. Aprendiendo de investigaciones anteriores sobre el volumen realizadas por técnicos tan conocidos como Joseph Granville, Larry Williams y Marc Chaikin, el Sr. Klinger se propuso desarrollar un indicador basado en el volumen para ayudar en el análisis a corto y largo plazo.

El MD se desarrolló con dos objetivos aparentemente opuestos: ser lo suficientemente sensible para señalar los máximos y mínimos a corto plazo, pero lo suficientemente preciso para reflejar el flujo de dinero a largo plazo que entra y sale de un valor.

El MD se basa en los siguientes principios:

* El rango de precios (es decir, Máximo - Mínimo) es una medida de movimiento y el volumen es la fuerza detrás del movimiento. La suma de Máximo + Mínimo + Cierre define una tendencia. La acumulación se produce cuando la suma de hoy es mayor que la del día anterior. Por el contrario, la distribución se produce cuando la suma de hoy es menor que la del día anterior. Cuando las sumas son iguales, se mantiene la tendencia existente.

* El volumen produce cambios continuos intradiarios en el precio que reflejan la presión de compra y venta. El MD cuantifica la diferencia entre el número de acciones que se acumulan y se distribuyen cada día como "fuerza de volumen". Una fuerza de volumen fuerte y creciente debería acompañar a una tendencia alcista y luego contraerse gradualmente con el tiempo durante las últimas etapas de la tendencia alcista y las primeras etapas de la siguiente tendencia bajista. A esto debería seguirle una fuerza de volumen ascendente que refleje cierta acumulación antes de que se produzca un fondo.

* Convirtiendo la fuerza del volumen en un oscilador que represente la diferencia entre una media móvil exponencial de 34 y 55 periodos con un disparador de 13 periodos, se puede seguir fácilmente la fuerza del volumen de entrada y salida de un valor. La comparación de esta fuerza con la acción del precio puede ayudar a identificar divergencias en los máximos y mínimos.

Interpretación

El Sr. Klinger recomienda las siguientes pautas para utilizar el MD:

1. Las señales más fiables se producen en la dirección de la tendencia predominante. Deben seguirse unas pautas de parada estrictas (es decir, no penetrar la línea cero o una violación de la línea de activación).

2. La señal más importante se produce cuando el MD diverge con la acción del precio subyacente, especialmente en nuevos máximos o nuevos mínimos en territorio de sobrecompra/sobreventa. Por ejemplo, cuando una acción hace un nuevo máximo o mínimo de un ciclo y el MD no lo confirma, la tendencia puede estar perdiendo impulso y acercándose a su fin.

3. Si el precio está en una tendencia alcista (es decir, por encima de una media móvil exponencial de 89 días), compre cuando el MD caiga a niveles inusualmente bajos por debajo de cero, gire al alza y cruce su línea de activación. Si el precio está en una tendencia bajista (es decir, por debajo de una media móvil exponencial de 89 días), venda cuando el MD suba a niveles inusualmente altos por encima de cero, gire a la baja y cruce su línea de activación.

Mientras que el KO funciona bien para sincronizar las operaciones en la dirección de la tendencia, es menos eficaz contra la tendencia. Esto puede crear problemas para el operador que trata de "arrancar" una operación contra la tendencia predominante. Sin embargo, cuando el KO se utiliza junto con otros indicadores técnicos, se pueden conseguir mejores resultados. El %R de William se recomienda para confirmar una condición de precio de sobrecompra/sobreventa y el MACD de Gerald Appel se recomienda para confirmar la dirección del precio a corto plazo.

Consejo

Stephen Klinger sugiere la siguiente fórmula para ver el flujo acumulado de dinero que entra y sale de un valor:

cum(kvo())

Trace una media móvil de 13 periodos de la fórmula como línea de activación para entrar en operaciones de compra y venta.

source codenya untuk trade station

Tipo: Función, Nombre: VForce

Vars: TSum(0), Trend(0), DM(0), CM(0);

TSum = Alto + Bajo + Cierre;

IF TSum > TSum[1] Then

Tendencia = 1

Si no,

Tendencia = -1

SI Tendencia = Tendencia[1] Entonces

CM = CM + Rango

Si no,

CM = Rango + Rango[1];

IF CM 0 Then

VForce = Volumen * AbsValue(2 * (DM/CM) -1) * Tendencia * 100;

Tipo: Función, Nombre: KVO

Entradas:

FastX(Numérico),

SlowX(Numeric); Vars:

FXAvg(0),

SXAvg(0);

FXAvg = XAverage(VForce, FastX);

SXAvg = XAverage(VForce, SlowX);

KVO = FXAvg - SXAvg;

Tipo: Indicador, Nombre: Oscilador de Volumen Klinger

Entradas:

FastX(34),

SlowX(55),

TrigLen(13),

Smooth(1);

Vars:

Trigger(0);Trigger = XAverage(KVO(FastX, SlowX), TrigLen);IF Smooth <= 1 Then Begin

Plot1(KVO(FastX, SlowX), "KVO");

Plot2(Trigger, "KVO Trigger");

End Else BeginPlot1(Summation(KVO(FastX, SlowX), Smooth), "KVO");

Plot2(Summation(Trigger, Smooth), "KVO Trigger");

Fin;

Plot3(0, "Cero");

IF Plot1 Cruza Por Encima De Plot2 O Plot1 Cruza Por Debajo De Plot2 O

Plot2 cruza por encima de Plot3 O Plot2 cruza por debajo de Plot3 Entonces

Alert = True;

¿alguien me puede ayudar a convertir esta codificación en Mql4?

gracias

 
Razón de la queja: