CyberiaTrader... ¡un EA increíble! - página 16

 

Declaración actualizada.

Casi se duplica el capital en una semana.

v1.60

Voy a cambiar el tamaño del lote a 2 a partir de ahora.

Archivos adjuntos:
statement_2.htm  1653 kb
 

Pantalla del ATR_normalizado

Igor se me olvidó adjuntar la pantalla del ATR_normalized a la respuesta anterior. Aquí la tienes.

Archivos adjuntos:
atr_norm.gif  50 kb
 
igorad:
Hola,

Traté de crear ATR normalizado pero creo que no es una tarea tan simple.

Así que puedes intentar jugar con las entradas.

Igor

PS. Lo siento, pero el error estaba en el código. Arreglado.

Igor, muchas gracias por el ATR normalizado. Se ve bien, con la excepción de que nunca baja de 30 (escala 0-100). Si miras la pantalla adjunta verás que el iATR va a 0 mientras que el ATR_normalizado se mantiene alrededor de 35. En todos los casos en que iATR llega a cero aunque sea por un rato, ATR_normalized se mantiene por encima de 30. ¿Puedes arreglarlo, por favor? Además, ¿no sería más fácil crear usando el iATR y el iMA nativos? Tal vez eso sería más fácil y puedo usar el código en CT como un filtro.

 

Hola,

prueba este. Debe estar bien.

Archivos adjuntos:
 
igorad:
Hola, prueba esto. Debe estar bien.

Ok, voy a probar este. Además, he podido hacer este de forma muy sencilla:

double normATR=0;

double maxATR=iATR(Symbol(),Period(),14,0);

int i;

for(i=1;i<14;i++)

{

if(iATR(Symbol(),Period(),14,i)>maxATR)

{

maxATR=iATR(Symbol(),Period(),14,i);

}

}

normATR=(iATR(Symbol(),Period(),14,0)/maxATR)*100;

Esto parece funcionar bien también. ¡¡¡Gracias por tu ayuda!!!

 
igorad:
Ahora mismo estoy probando la última versión y he encontrado algunos fallos, así que por favor, esperad a las actualizaciones.

Igor, ¿puedes publicar tu versión con las correcciones para el temporizador PIP? No funciona correctamente en la forma actual. Se inicia el PIPcounter en la entrada y se sale después de que el tiempo se ha terminado, independientemente de cualquier beneficio obtenido. Por favor, pruebe en ticks en lugar de segundos, ya que la segunda cuenta es asíncrona con los ticks que entran. Gracias por su contribución.

Aquí están las especificaciones de nuevo y también el código que tengo hasta ahora como lo escribiste originalmente con pocos mods:

1. Si EnablePIPTimer=true;

2. Cuando MinPIPProfit >=X activa TakePIPCountdown (SET a Input TakePipTimer). Esto comienza a contar hacia abajo a 0 en ticks.

3. TakePIPCountDown cuenta hacia abajo: 60, 59, 58..ticks etc.

4. Declare la variable global double BestPIPProfit=0; esta contiene el mejor beneficio PIP que la posición ha alcanzado hasta ahora.

5. Haga que BestPIPProfit=MinPIPProfit inicialmente;

6. Obtener BestPIPProfit=beneficio PIP actual

7. Si BestPIPProfit > MinPIPProfit haga MinPIPProfit = BestPIPProfit (este será el beneficio PIP mínimo ACTUALIZADO de ahora en adelante para esta posición abierta).

8. Cuando la condición anterior # 7 sucede reiniciar TakePIPCountDown al valor inicial (TakePipTimer) y habilitarlo para el conteo..es contar de nuevo 60, 59, 58 ticks etc. hasta 0 con el nuevo piso MinPIPProfit.

9. Una vez que el TakePIPCountDown llega a 0 CERRAR la orden abierta inmediatamente.

10. 10. Si el beneficio actual del PIP está por debajo de MinPIPProfit, detenga el TakePIPCountDown (y restablezca el valor original del TakePipTimer) hasta que el beneficio actual vuelva a ser >= MinPIPProfit (el suelo más alto alcanzado) durante esta ejecución.

CÓDIGO:

int CheckTakeProfitTimer()

{

double _point = MarketInfo(OrderSymbol(),MODE_POINT);

double PipProfit = 0;

if (EnablePipTimer==true)

{

for (int cnt=0;cnt<OrdersTotal();cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

int mode=Tipo de orden();

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

{

si (mode==OP_BUY)

PipProfit = MathRound((Bid - OrderOpenPrice())/_point); // Calcular el beneficio/perdida de la apertura para la COMPRA

si no

si (mode==OP_SELL)

PipProfit = MathRound((OrderOpenPrice()-Ask)/_point); // Calcular la ganancia/pérdida abierta para la VENTA

MaxPipProfit = MathMax(PipProfit,MaxPipProfit); // Obtener el mayor beneficio, ya sea actual o máximo durante la operación

if (MaxPipProfit >= BestPipProfit) // comprobar si se ha alcanzado el beneficio PIP mínimo

{

if (!StartCount1 || ( StartCount1 && BestPipProfit > MinPipProfit)) // no hay recuento en curso y se ha alcanzado el beneficio PIP mínimo

{

BestPipProfit=MaxPipProfit; // restablecer el beneficio máximo actual alcanzado hasta el momento

TimerStart1 = CurTime()/1000; // congelar el tiempo actual

TakePipCountDown = TakePipTimer; // inicializar el contador al valor establecido

StartCount1=true; // iniciar el contador

}

else

if (TimerType == 0) // cuenta en curso..cuenta en segundos o tick

{

TakePipCountDown = TakePipTimer - (CurTime()/1000 - TimerStart1); // La opción elegida es el conteo en segundos

}

else

{

TakePipCountDown--; // La opción elegida es el conteo de Ticks

}

} // si (MaxPipProfit..

}// si (Order...

} // para

} // en EnablePipTimer

 

Arreglado el no comercio en CT 1.85

Lo siento pandilla...había un error en 1.85 que impedía que CT 1.85 negociara después de las horas malas de negociación. Lo he arreglado por ahora hasta que salga la nueva versión y la he llamado 1.85f (arreglada). Por favor, utilice esta versión con los preajustes de 1.85 publicados originalmente. Esta versión es idéntica a la 1.85 y sólo contiene el arreglo de no operar. Deberíamos haber detectado esto antes.

Archivos adjuntos:
 
fxspeedster:
Lo siento pandilla... había un error en la 1.85 que impedía a la CT 1.85 operar después de las horas malas de negociación. Lo he arreglado por ahora hasta que salga la nueva versión y la he llamado 1.85f (arreglada). Por favor, utilice esta versión con los preajustes de 1.85 publicados originalmente. Esta versión es idéntica a la 1.85 y sólo contiene el arreglo de no operar. Deberíamos haber detectado esto antes.

¡No podía entender cómo todos los demás estaban obteniendo resultados tan fabulosos pero yo apenas recibía órdenes!

 

Hola,

He desarrollado por separado PipTimerExpert. Este Experto puede manejar el comercio de acuerdo a la técnica descrita por fxspeedster. Esta versión incluye un contador de segundos y ticks. Puede utilizarlo para CyberiaTrader.

Archivos adjuntos:
 
igorad:
Hola, he desarrollado por separado PipTimerExpert. Este Experto puede manejar el comercio de acuerdo a la técnica descrita por fxspeedster. Esta versión incluye un contador de segundos y ticks. Puede utilizarlo para CyberiaTrader.

Igor, gracias por tu gran trabajo. Voy a incluir este código y a probarlo. ¡Eres el mejor!