Sistema con entradas en "Stop" +/- filtro de puntos
-
- Mensajes: 1
- Registrado: 26 Ene 2010 18:23
Sistema con entradas en "Stop" +/- filtro de puntos
Intento crear un sistema con NT7, para insertar en el gráfico del IBEX35:
1.- La idea es un sistema continuo tipo “Swing” es decir, que no cierre al fin de día.
2.- Sería un sistema continuo, de entradas y salidas en “Stop” +/- un filtro de puntos (fintroM), según sea la entrada “Long”/”Short”.
3.- “EnterLongStop” se producirá cuando, la tendencia sea alcista y se haya cruzado al alza la EMA.
4.- “EnterShortStop” se producirá cuando, la tendencia sea bajista y se haya cruzado a la baja la EMA.
5.- Las órdenes de entrada en “stop” Long/Short durarán más de una barra “true”, para asegurarnos que se llevan a cabo.
6.- Colocamos un “ProftiTarget” que puede ser diferente para las entradas Largas/Cortas.
ADJUNTO EL SCRIPT CREADO, PERO, QUE NO REALIZA LAS FUNCIONES QUE HE DETALLADO EN LOS 6 PUNTOS ANTERIORES.
¿Qué debo corregir del Script?
#region Variables // Wizard generated variables
private int periodEma = 200; // Default setting for PeriodEma
private double filtroM = 20.0; // Default setting for FiltroM
private int profitL = 200;
private int profitS = 150;
#endregion
protected override void Initialize()
{
CalculateOnBarClose = true;
IncludeCommission = true;
ExitOnClose = false;
Add(EMA(periodEma));
TraceOrders = true;
SetProfitTarget("Buy", CalculationMode.Ticks, profitL);
SetProfitTarget("Sell", CalculationMode.Ticks, profitS);
}
protected override void OnBarUpdate()
{
if(CurrentBar < periodEma)
return;
if (Close[1] < EMA(PeriodEma)[1] && CrossAbove(Close, EMA(periodEma), 1))
{
Print( "Cb: " + CurrentBar + " se cumple BUY");
EnterLongStop(0, true, DefaultQuantity, Close[0] + filtroM, "Buy");
}
if((Close[1] > EMA(PeriodEma)[1]) && (CrossBelow(Close, EMA(periodEma), 1))) {
Print( "Cb: " + CurrentBar + " se cumple SELL");
EnterShortStop(0, true, DefaultQuantity, Close[0] - filtroM, "Sell");
}
}
#region Properties
[Description("Para poder modificar el periodo de la EMA")]
[GridCategory("Parameters")]
public int PeriodEma
{
get { return periodEma; }
set { periodEma = Math.Max(1, value); }
}
[Description("Para poder modificar el valor del fitro de entrada a mercado")]
[GridCategory("Parameters")]
public double FiltroM
{
get { return filtroM; }
set { filtroM = Math.Max(0.00001, value); }
}
[Description("Para poder modificar el valor del fitro de entrada a mercado")]
[GridCategory("Parameters")]
public int ProfitL
{
get { return profitL; }
set { profitL = Math.Max(1, value); }
}
[Description("Para poder modificar el valor del fitro de entrada a mercado")]
[GridCategory("Parameters")]
public int ProfitS
{
get { return profitS; }
set { profitS = Math.Max(1, value); }
}
#endregion
}
Muchas Gracias. (ADJUNTO PANTALLAZO)