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
Hola a todos,
Estoy trabajando en la modificación de un medidor de fuerza de la moneda para mostrar la fuerza de la moneda basada en el tiempo del gráfico. Actualmente, el código utilizado es:
aLow = MarketInfo(mySymbol,MODE_LOW); // set a low today
aBid = MarketInfo(mySymbol,MODE_BID); // set a last bid
aAsk = MarketInfo(mySymbol,MODE_ASK);Entiendo que MODE_HIGH y MODE_LOW obtienen los máximos y mínimos del día actual. ¿Cómo podría obtener el máximo y el mínimo del marco de tiempo actual de los gráficos?
Gracias.
P.D. No soy un programador, así que use palabras pequeñas por favor:)No tienes que usar MarketInfo(). Si quieres obtener el máximo actual, utiliza High[0] y Low[n], Close[n], Open[n]. n' significa el desplazamiento desde la barra actual. Por ejemplo, para obtener el máximo de la barra anterior a la actual, puede utilizar High[1] ya que la actual es 0 y la barra anterior tiene un desplazamiento de 1 respecto a la actual.
Para comprobar los máximos, mínimos, aperturas y cierres de otros marcos temporales distintos a los que está viendo en el gráfico, puede utilizar las funciones iHigh(), iLow(), iClose() e iOpen.
Ejemplo de uso a continuación.
double high_of_gbpusd_4hours_current = iHigh("gbpusd", period_h4, 0);
¡Gracias! ¡Sois lo máximo!
Creo que más o menos lo tengo funcionando (no estoy seguro??), pero por alguna razón el array se llena de un montón de valores '0' junto con los valores legítimos.
Así es como yo lo haría:
#define TICKET 0
#define PRICES 1
double ResumeArray[0,2];
int CheckForResume()
{
ResumeCheck = TimeLocal()+(PERIOD_M1*60)*5;
bool success = false;
int k;
for (int i = 0; i<OrdersTotal();i++)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))continue;
if (OrderType() > OP_SELL || OrderProfit()> Cutoff)continue;
int arraycount=ArrayRange(ResumeArray,TICKET);
bool found = false;
for (k=arraycount-1; k>=0; k--)
{
if (ResumeArray[k,TICKET] == OrderTicket())
{
found = true;
if (ResumeArray[k,PRICES] + Cutoff < OrderProfit())break;
else
{
success=true;
Print ("ELSE");
ResumeArray[k,PRICES] = OrderProfit();
break;
}
}
}
if (found == false)
{
arraycount = ArrayResize(ResumeArray,arraycount+1)/2;
ResumeArray[arraycount-1,TICKET] = OrderTicket();
ResumeArray[arraycount-1,PRICES] = OrderProfit();
success=true;
}
}
if(success)return (1);
else return(0);
}
No tienes que usar las definiciones TICKET y PRICES, sólo las he incluido para mostrar cómo funciona un array de 2 dimensiones. Simplemente reemplace todas las ocurrencias de TICKET y PRICES con 0 y 1 respectivamente.
He sustituido los comandos "return" en el bucle "for" por "break", por lo que todas las órdenes abiertas serán procesadas.
Una cosa a tener en cuenta es que las órdenes cerradas nunca se eliminan del array, por lo que seguirá creciendo en tamaño, y ralentizará su plataforma.
d4v3
Límite del historial de barras
Estaría muy agradecido si alguien puede añadir la opción de límite de barras a este script RenkoLiveChart_v3.2.
Se necesitan demasiados recursos informáticos.
Alerta básica EA
................[resuelto] ....................
reducción de ruido
Hola a todos - He estado buscando una manera de limitar el ruido en un comercio y hacer un corte más rápido
La idea es bastante simple
el ruido se muestra en esta imagen es dinámico lo que significa que sigue cambiando para adaptarse a la condición del mercado
Aquí hay un código que he hecho para el cierre, si alguien quiere usarlo, siéntase libre, sólo necesita algunos multiplicadores.
int Trades = ScanTrades(0,0);
if (Trades == 0) TS1 = 0;
if ((ScanTrades(2,0) > 0) && (profit < 0)) TS= ((MarketInfo(Symbol(),MODE_BID)) + ruido + deslizamiento);
si ((ScanTrades(2,0) > 0) && (beneficio > 0)) TS= ((MarketInfo(Symbol(),MODE_BID)) + ruido );
si ((ScanTrades(1,0) > 0) && (beneficio < 0)) TS= ((MarketInfo(Symbol(),MODE_BID)) - ruido - deslizamiento);
si ((ScanTrades(1,0) > 0) && (beneficio > 0)) TS= ((MarketInfo(Symbol(),MODE_BID)) - ruido );
/cortocircuito
si ((ScanTrades(2,0) > 0)&& (TS1 ==0 )) TS1 = TS;
si ((ScanTrades(2,0) > 0)&& (TS < TS1)) TS1 = TS;
if ((ScanTrades(2,0) > 0) && (MarketInfo(Symbol(),MODE_BID) > TS1)) CloseOrder(2);
//largo
if ((ScanTrades(1,0) > 0)&& (TS1 ==0 )) TS1 = TS;
si ((ScanTrades(1,0) > 0)&& (TS > TS1)) TS1 = TS;
if ((ScanTrades(1,0) > 0) && (MarketInfo(Symbol(),MODE_BID) < TS1)) CloseOrder(1);
cuál sería la mejor manera de obtener el máximo y el mínimo actual y anterior de un gráfico de barras. Necesito crear la variable "ruido"
He intentado esto, pero su éxito y la falta t1 y l1 son a veces 0 su más deprimente como es todo lo que se interpone entre el conjunto ea ser "terminado" si alguna vez hay tal cosa.
double ll2=Low;
double hh3=Alto;
double ll3=Bajo;
double t1,l1,noise;
//ruido = solapamiento de las barras anteriores
si ((hh2 - hh3) > 0 ) t1 =(hh3); //básicamente escoge la barra "alta" más baja entre las dos -bullish
si ((hh3- hh2) > 0 ) t1=(hh2); //alcista
si ((ll2 - ll3) > 0 ) l1 =(ll2); //elección de la barra más baja alcista
si ((ll3-ll2) > 0 ) l1=(ll3); //alcista
ruido =(t1-l1);
Print("t1 = ",t1,"; l1 = ",l1);los resultados típicos de la impresión son t1=0 l1=94.3 su más molesto es porque hh2 y hh3 son == simplemente no sé qué hacer no veo un problema con mi código.
¿quién puede ayudarme?
¿alguien puede mostrarme cómo hacer un nuevo indicador que se basa en 3 indicadores conocidos? Hago una estrategia basada en 3 indicadores que muestran señales de compra/venta muy fuertes, pero quiero crear 1 indicador...
modificación de ea por favor
Por favor, ayúdenme a implementar los siguientes cambios en este ea
1)Añadir en la hora
A) indicador fisher_ 11 con ajustes 33,0.5,0.5
B) indicador tcf smoothed ajustes 17, 8, 0.7
c) Tambien quiero que el indicador dinap _basic no permita operaciones cuando haya dibujado en contra de la direccion de la señal, es decir, si dibuja hacia arriba, no se permite entrar en las señales de compra, si dibuja hacia abajo, no se permite entrar en las señales de venta.
2) Añadir en 15 minutos
A) indicador de supertendencia
B) Indicador Trendlord
Gestión monetaria de
1) Abrir 2 operaciones con un 3% de stop loss del total de la cuenta (1,5%) cada una
2) Una con 80 pips de take profit o 2,2% y la segunda con 3,8% de take profit
3) Doblar el tamaño del lote para la quinta operación después de 4 pérdidas consecutivas y luego incrementar los lotes lineales para las siguientes operaciones hasta dos victorias consecutivas y volver al tamaño del lote por defecto.
4) Trailing stop de 12pips (por encima de la venta y por debajo de la compra de la vela anterior atrstops_v1 indicador para todos los oficios.
Eso es todo por favor ayuda
Podrías haber conseguido exactamente lo mismo con una línea de código.
GlobalVariableSet("TRENDSET_"+Symbol());
También podrías añadir el marco temporal para hacerlo aún más único.
Para ser sincero, no estoy muy seguro de cuál era el objetivo de tu mensaje.
Saludos
Lux
¿Cómo llamar al valor de H1 usando iCustom?
Hola,
Estoy tratando de codificar un indicador muy simple, pero soy incapaz de llamar al valor de Laguerre de H1.
lo que quiero hacer :
Usando 1M TF
señal de compra : Laguerre cruzando el nivel 0.15 cabeza arriba y Laguerre H1 > 0.75
señal de venta : Laguerre cruzando el nivel 0.75 cabeza abajo y Laguerre H1 < 0.15
he hecho el indicador para el cruce simple y funciona, el problema es cuando intento comprobar el valor de Laguerre H1: ¡es un lío!
He probado 2 formas:
La primera:
#property indicator_buffers 2
#property indicator_color1 SeaGreen
#property indicator_color2 Red
#property indicator_width1 3
#property indicator_width2 3
double CrossUp[];
double CrossDown[];
extern bool SoundON=true;
double alertTag;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0, DRAW_ARROW, EMPTY,3);
SetIndexArrow(0, 233);
SetIndexBuffer(0, CrossUp);
SetIndexStyle(1, DRAW_ARROW, EMPTY,3);
SetIndexArrow(1, 234);
SetIndexBuffer(1, CrossDown);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start() {
int limit, i;
int counted_bars=IndicatorCounted();
//---- check for possible errors
if(counted_bars<0) return(-1);
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
for(i = 0; i <= limit; i++) {
if ( (iCustom(NULL,0,"Laguerre",0.66,9500,0,i) > 0.15) && (iCustom(NULL,0,"Laguerre",0.66,9500,0,i+1) < 0.15)
&&(iCustom(Symbol(),PERIOD_H1,"Laguerre",0.66,9500,0,i) > 0.75)) //check for buy signal
{
CrossUp = Close;
}
else if ( (iCustom(NULL,0,"Laguerre",0.66,9500,0,i) 0.75)
&& (iCustom(Symbol(),PERIOD_H1,"Laguerre",0.66,9500,0,i) < 0.15)) //check for sell signal
{
CrossDown = Close;
}
if (SoundON==true && i==1 && CrossUp > CrossDown && alertTag!=Time[0]){
Alert("SHORT signal on ",Symbol()," ",Period());
alertTag = Time[0];
}
if (SoundON==true && i==1 && CrossUp < CrossDown && alertTag!=Time[0]){
Alert("Long Signal on ",Symbol()," ",Period());
alertTag = Time[0];
}
}
return(0);
}[/CODE]
second one:
[CODE]//+------------------------------------------------------------------+
//| Shift.mq4 |
//| me |
//|
//+------------------------------------------------------------------+
#property copyright "me"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
#property indicator_width1 4
#property indicator_width2 4
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
bool Fact_Up = true; // Fact of report that market..
bool Fact_Dn = true; //..is bullish or bearish
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,241);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexEmptyValue(0,0.0);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,242);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexEmptyValue(1,0.0);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//int limit;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
if(counted_bars<0) return(-1);
//limit=Bars-counted_bars;
//----
double MA; // MA value on 0 bar
double MA2;
double MA3;
double MA4;
//--------------------------------------------------------------------
double value1, value2, value3;
for (int i=Bars-1;i>=0;i--)
//---- main loop
//for(int i=0; i<limit; i++)
{value1=0.0;
value2=0.0;
value3=0.0;
//--------------------------------------------------------------------
// Checking if bullish
if( (iCustom(Symbol(),NULL,"Laguerre",0,i) > 0.15) && (iCustom(Symbol(),NULL,"Laguerre",0,i+1) < 0.15) && Fact_Up == true
&&(iCustom(Symbol(),PERIOD_H1,"Laguerre",0,i) > 0.75))
{
Fact_Dn = true; // Report about bullish market
Fact_Up = false; // Don't report bullish market
// Alert("BUY SIGNAL.");
value1=Open;
}
//--------------------------------------------------------------------
// Checking if bearish
if( (iCustom(Symbol(),NULL,"Laguerre",0,i) 0.75) && Fact_Dn == true
&&(iCustom(Symbol(),PERIOD_H1,"Laguerre",0,i) < 0.15))
{
Fact_Up = true; // Report about bearish market
Fact_Dn = false; // Don't report bearish market
// Alert("SELL SIGNAL.");
value2=Open;
}
ExtMapBuffer1=value1;
ExtMapBuffer2=value2;
}
//----
return(0);
}
//+------------------------------------------------------------------+ambas no funcionan, la línea ROJA es el problema, sin la línea ROJA funciona perfectamente.
He probado (iCustom(Symbol(),PERIOD_H1, "Laguerre",0,i) < .....)
(iCustom(Symbol(),PERIOD_H1, "Laguerre",0,0) < ....)
(iCustom(Symbol(),60, "Laguerre",0, i) < ....)
(iCustom(Symbol(),60, "Laguerre",0, 0) < .....)
He probado también con las variables: (iCustom(Symbol(),PERIOD_H1, "Laguer re",0.66,9500,0,i)
iF i put:
Print(iCustom(Symbol(),60, "Laguerre ",0,i)); antes del "if" devuelve un número aleatorio...
pero con: Print(iCustom(Symbol(),60, "Laguerre ",0,0)); devuelve el valor bueno de H1
ahora el problema sigue siendo el mismo si uso iCustom(Symbol(),60, "Laguerre",0, 0); dentro del "if" no funciona...
el problema está en el "for" y en la "i" y en el valor "shift" de iCustom pero no consigo resolverlo.
¡su ayuda seria muy bienvenida !
adjunto el indicador de Laguerre que utilizo por si quieres darle una oportunidad.
si alguien esta dispuesto a recodificarlo desde cero por favor no lo dude
me esta volviendo loco...