domingo, 19 de agosto de 2012

35. Lo que fue, fue

Así es, queridos lectores.

Lo que fue, fue.

Por ahora no le voy a botar más corriente al Sabueso. Ya tienen el código. Ya les conté cómo lo hice y qué hice con él.

Terminaré este blog (¡que esta sí sea de verdad la última entrada!), terminaré diciendo que la época de mi vida en que me entusiasmé con el mercado de divisas fue muy entretenida. A veces estresante pero muy entretenida.

Me ocupan ahora otras cosas tanto o más interesantes que el Forex.

Tengo que agradecer su paciencia y mi última recomendación es la de siempre: Prueben el Sabueso. No crean nada de lo que aquí se escribió. Tomen el código, abran una cuanta demo y denle palo. Si les funciona, abran una cuanta en centavos. Si les funciona, abran una cuenta en dolares. Y si les funciona, mándanle a Christine alguna cosa. Ella todavía necesita esa plata más que usted...

Sí. Lo que fue, fue.




miércoles, 8 de agosto de 2012

34. El código del Sabueso (Ascendente y Descendente)

Observaciones:

1. Aquí abajo no hay un experto, sino dos. El Sabueso Ascendente es uno, y el segundo es El Sabueso Descendente.

2. Como lo que hice para traer el código fue "copiar y pegar", entonces algunas líneas se ven cortadas, pero no estoy seguro pues veo el código desde mi teléfono. Tal vez desde un computador se vean normales.... O sea que tal vez hay que ajustar esos cortes, creando de nuevo líneas de código más largas. Si no lo hiciera, al momento de compilar el programa saldrían 1000 errores de sintaxis. ¡¡Mejor!! Así sabría donde alargar las líneas de código.

3. Cómo de dijo arriba, este código debe ser compilado. Al compilarlo se creará un archivo ejecutable (punto exe), y ese sí que lo podrá usar si problemas.

4. ¡Buen provecho.

(Después de la línea siguiente de asteriscos viene el código de los expertos.

*****************************************





//+------------------------------------------------------------------+
//| Sabueso 050 Ascendente.mq4 |
//| Copyright © 2008, MetaQuotes Software Corp. |
//| Julio 23 de 2011 |
//+------------------------------------------------------------------+
#property copyright " - Para cuenta Real LiteForex."

//************************************************************************************
//
// P A R A A R R I B A
//
// Ajustado en progresiones hasta la 7a
// Siempre cortando los pips por la mitad
//
//
// Alarmas hasta la 4a - Envía correos de alerta
//
//************************************************************************************


extern int Senal_de_Cambio = 128; // Variación del precio para abrir posición de respaldo
extern int Cierre_Primera = 15; // Claro, el cierre de la primera posición
extern int Profit_de_corte = 100; // Cierra todo si va ganando X dólares
extern double Pro1 = 0.1 ; // Lotes de la primera posición
extern double Fraccion = 0.1 ;
extern double Expon = 4 ;
extern bool Alarmas = true ;
extern int Alarma_1a = 150 ; // Cuando la cuenta está en XXX pesos y sólo hay una posoción abierta
extern int Alarma_2a = 2000 ;
extern int Alarma_3a = 8000 ;
extern int Alarma_4a = 22000 ;

extern int Espera_entre_alarmas = 1 ; // Minutos entre correos cuando se envían una alarma se correo electrónico


double Pro2 ;
double Pro3 ;
double Pro4 ;
double Pro5 ;
double Pro6 ;
double Pro7 ;
double Pro8 ;
double Pro9 ;
double Pro10 ;
double Pro11 ;


int Pos_1 = 0 ; // Pos. 1
int Pos_2 = 0 ; // Pos. 2
int Pos_3 = 0 ; // Pos. 3
int Pos_4 = 0 ; // Etc.
int Pos_5 = 0 ;
int Pos_6 = 0 ;
int Pos_7 = 0 ;
int Pos_8 = 0 ;
int Pos_9 = 0 ;
int Pos_10 = 0 ;
int Pos_11 = 0 ;

int Posiciones_Abiertas ;

double Borde_Superior ; // Punto superior de la oscilación
double Borde_Inferior ; // Punto menor de la oscilación

double Spread ;

int Activador_de_cierre ;
string Par ; // Nombre del par
double Este_par ; // Cantidad de ransacciones abiertas en este par
double Ganancia ;
double Acumulado ;
int Intentos ;

double Medio ;
double Cuarto ;
double Octavo ;
double Dieciseisavo ;
double Treintaidosavo ;

int Contador_de_alarma = 0 ;
int Tiempo_inside_1a ;
int Futuro ;



//+------------------------------------------------------------------+
//| expert initializaion function |
//+------------------------------------------------------------------+
int init() // El init() se necesita para qe el experto funcione
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit() // El deinit() se necesita para que el experto funcione
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{

Contar_este_par();

if(Alarmas == True)
{
Enviar_alarma();
}

Calcular_ganancia();


if (Acumulado > Profit_de_corte)
{
Cierra_Par();
}

if(Este_par!=0)
{
Recuperar_variables();
}

RefreshRates();


if(Este_par==0)
{
Cero_Posiciones();
}
if(Este_par==1)
{
Analiza_1_Abre_2();
}
if(Este_par==2)
{
Analiza_2_Abre_3();
}
if(Este_par==3)
{
Analiza_3_Abre_4();
}
if(Este_par==4)
{
Analiza_4_Abre_5();
}
if(Este_par==5)
{
Analiza_5_Abre_6();
}
if(Este_par==6)
{
Analiza_6_Abre_7();
}
if(Este_par==7)
{
Analiza_7_Abre_8();
}
if(Este_par==8)
{
Analiza_8_Abre_9();
}
if(Este_par==9)
{
Analiza_9_Abre_10();
}
if(Este_par==10)
{
Analiza_10_Abre_11();
}

Pro2= (MathCeil((MathPow(2,Expon) * Fraccion)*10))/10;
Pro3= (MathCeil((MathPow(3,Expon) * Fraccion)*10))/10;
Pro4= (MathCeil((MathPow(4,Expon) * Fraccion)*10))/10;
Pro5= (MathCeil((MathPow(5,Expon) * Fraccion)*10))/10;
Pro6= (MathCeil((MathPow(6,Expon) * Fraccion)*10))/10;
Pro7= (MathCeil((MathPow(7,Expon) * Fraccion)*10))/10;


Comment("Posiciones : ", Este_par, " ; Par : ", Par, " ; Apalancamiento: 1/", AccountLeverage(), " "+" \n"+"Progresión ", Pro2, " ", Pro3, " ", Pro4, " ", Pro5, " ", Pro6, " ", Pro7, " " +" \n"+ "BI: ", Borde_Inferior, " ; BS: ", Borde_Superior, " ; Balance : $", AccountBalance(), " ; Fecha y hora : ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS), "; 2a : ", Borde_Inferior, "; 3a : ", Borde_Superior - Medio, "; 4a : ", Borde_Inferior + Cuarto, "; 5a : ", Borde_Inferior + Cuarto + Dieciseisavo, " "+" \n"+ "Equity Tebille : $",AccountEquity(), " ; Margen : $", AccountMargin(), " ; Free Margin : $", AccountFreeMargin()," ; Par Profit : $",Acumulado);
Sleep(50);
Comment(" ");
Sleep(50);
Comment("Posiciones : ", Este_par, " ; Par : ", Par, " ; Apalancamiento: 1/", AccountLeverage(), " "+" \n"+"Progresión ", Pro2, " ", Pro3, " ", Pro4, " ", Pro5, " ", Pro6, " ", Pro7, " " +" \n"+ "BI: ", Borde_Inferior, " ; BS: ", Borde_Superior, " ; Balance : $", AccountBalance(), " ; Fecha y hora : ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS), "; 2a : ", Borde_Inferior, "; 3a : ", Borde_Superior - Medio, "; 4a : ", Borde_Inferior + Cuarto, "; 5a : ", Borde_Inferior + Cuarto + Dieciseisavo, " "+" \n"+ "Equity Tebille : $",AccountEquity(), " ; Margen : $", AccountMargin(), " ; Free Margin : $", AccountFreeMargin()," ; Par Profit : $",Acumulado);
//Comment("Posiciones : ", Este_par, " ; Par : ", Par, " ; Apalancamiento: 1/", AccountLeverage(), " "+" \n"+"Progresión ", Pro2, " ", Pro3, " ", Pro4, " ", Pro5, " ", Pro6, " ", Pro7, " " +" \n"+ "BI: ", Borde_Inferior, " ; BS: ", Borde_Superior, " ; Balance : $", AccountBalance(), " ; Fecha y hora : ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS), "; 2a : ", Borde_Inferior, "; 3a : ", Borde_Superior - Medio, "; 4a : ", Borde_Inferior + Cuarto, " " +" \n"+ "Equity Tebille : $",AccountEquity(), " ; Margen : $", AccountMargin(), " ; Free Margin : $", AccountFreeMargin()," ; Par Profit : $",Acumulado);


return(0);
}
//+--------------------------------------------------------------------------------------------------------+
int Contar_este_par()
{
RefreshRates();

Par=Symbol();

Este_par = 0;

for(int i=0;i<OrdersTotal();i++) // Cuenta el número de posiciones de este par en específico
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Par)
{
Este_par++;
}
}
}
//+--------------------------------------------------------------------------------------------------------+
int Enviar_alarma()
{

RefreshRates(); // > <

//------------------------
if(Este_par==1)
{
if(AccountFreeMargin() < Alarma_1a)
{
if(Contador_de_alarma == 0)
{
Tiempo_inside_1a = TimeCurrent();
Futuro = Tiempo_inside_1a + Espera_entre_alarmas*60 ;
Contador_de_alarma = Contador_de_alarma + 1 ;
Alert("¡PILAS CON EL MARGEN EN: ", AccountNumber());
SendMail("Mensaje del Sabueso", "La sigueinte cuenta necesita fondos "+AccountNumber()) ;
}
else
{
if(Futuro < TimeCurrent())
{
Alert("¡PILAS CON EL MARGEN EN: ", AccountNumber());
SendMail("Mensaje del Sabueso", "La siguiente cuenta necesita fondos "+AccountNumber()) ;
Contador_de_alarma = 0;
}
}

}
}
//------------------------
if(Este_par==2)
{
if(AccountFreeMargin() < Alarma_2a)
{
if(Contador_de_alarma == 0)
{
Tiempo_inside_1a = TimeCurrent();
Futuro = Tiempo_inside_1a + Espera_entre_alarmas*60 ;
Contador_de_alarma = Contador_de_alarma + 1 ;
Alert("¡PILAS CON EL MARGEN EN: ", AccountNumber());
SendMail("Mensaje del Sabueso", "La sigueinte cuenta necesita fondos "+AccountNumber()) ;
}
else
{
if(Futuro < TimeCurrent())
{
Alert("¡PILAS CON EL MARGEN EN: ", AccountNumber());
SendMail("Mensaje del Sabueso", "La siguiente cuenta necesita fondos "+AccountNumber()) ;
Contador_de_alarma = 0;
}
}

}
}
//------------------------
if(Este_par==3)
{
if(AccountFreeMargin() < Alarma_3a)
{
if(Contador_de_alarma == 0)
{
Tiempo_inside_1a = TimeCurrent();
Futuro = Tiempo_inside_1a + Espera_entre_alarmas*60 ;
Contador_de_alarma = Contador_de_alarma + 1 ;
Alert("¡PILAS CON EL MARGEN EN: ", AccountNumber());
SendMail("Mensaje del Sabueso", "La sigueinte cuenta necesita fondos "+AccountNumber()) ;
}
else
{
if(Futuro < TimeCurrent())
{
Alert("¡PILAS CON EL MARGEN EN: ", AccountNumber());
SendMail("Mensaje del Sabueso", "La siguiente cuenta necesita fondos "+AccountNumber()) ;
Contador_de_alarma = 0;
}
}

}
}
//------------------------
if(Este_par==4)
{
if(AccountFreeMargin() < Alarma_4a)
{
if(Contador_de_alarma == 0)
{
Tiempo_inside_1a = TimeCurrent();
Futuro = Tiempo_inside_1a + Espera_entre_alarmas*60 ;
Contador_de_alarma = Contador_de_alarma + 1 ;
Alert("¡PILAS CON EL MARGEN EN: ", AccountNumber());
SendMail("Mensaje del Sabueso", "La sigueinte cuenta necesita fondos "+AccountNumber()) ;
}
else
{
if(Futuro < TimeCurrent())
{
Alert("¡PILAS CON EL MARGEN EN: ", AccountNumber());
SendMail("Mensaje del Sabueso", "La siguiente cuenta necesita fondos "+AccountNumber()) ;
Contador_de_alarma = 0;
}
}

}
}
}
//+--------------------------------------------------------------------------------------------------------+
int Calcular_ganancia()
{
RefreshRates();

double Ganancia;
string Par ;
double Este_par ;

Ganancia = 0 ;
Acumulado = 0 ;

Par = Symbol();

Este_par = 0;

for(int i=0;i<OrdersTotal();i++) // Cuenta el número de posiciones de este par en específico
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol() == Par)
{
Ganancia = OrderProfit() + OrderSwap() ;
Acumulado = Ganancia + Acumulado;
}
}
}
//+--------------------------------------------------------------------------------------------------------+
int Recuperar_variables()
{
RefreshRates();

Par = Symbol();

for(int i=0;i<OrdersTotal();i++) // Cuenta el número de posiciones de este par en específico
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol() == Par)
{
Borde_Superior = OrderOpenPrice();
Borde_Inferior = Borde_Superior - Senal_de_Cambio * Point ;


Medio = (Borde_Superior - Borde_Inferior)/2;
Cuarto = Medio/2;
Octavo = Cuarto/2;
Dieciseisavo = Octavo/2 ;
Treintaidosavo = Dieciseisavo/2 ;

return ;
}
}
}
//+--------------------------------------------------------------------------------------------------------+
int Cierra_Par() // Cierra todas las posiciones


{

while (Este_par>0)
{

if(OrderSymbol() == Par)
{
if (OrderType()==OP_BUY )
OrderClose(OrderTicket(),OrderLots(),Bid,0,CLR_NONE);
/*
if (GetLastError() != 0)
{
_GetLastError = GetLastError();
//Alert("Error #", _GetLastError, " en ", Par );
break ;
}
*/
if (OrderType()==OP_SELL )
OrderClose(OrderTicket(),OrderLots(),Ask,0,CLR_NONE);


Contar_este_par();
}
}
}

//+--------------------------------------------------------------------------------------------------------+

int Cero_Posiciones() // Abre la primera posición (UNA COMPRA DE 0.01 LOTES)
{
MathSrand(TimeLocal());
MathRand();

int Magic_1 = MathRand()+1;

RefreshRates();

Spread = Ask - Bid ;


Borde_Inferior = Ask - (Senal_de_Cambio * Point);
Borde_Superior = Ask ; //+ Spread ;

Medio = (Borde_Superior - Borde_Inferior)/2;
Cuarto = Medio/2;
Octavo = Cuarto/2;
Dieciseisavo = Octavo/2 ;
Treintaidosavo = Dieciseisavo/2 ;

Pos_1=OrderSend(Symbol(),OP_BUY,Pro1,Ask,3,0,1000,"1a",Magic_1,0,Yellow);

if (GetLastError() == 0) // Si la transacción se hizo sin novedad
{
//Alert ("Abierta la 1a posición, Una COMPRA con ", Lots, " Lotes");
}
}
//+--------------------------------------------------------------------------------------------------------+
int Analiza_1_Abre_2() // ANALIZA 1A POSICIÓN
{

MathSrand(TimeLocal());
MathRand();
int Magic_2 = MathRand()+1;

RefreshRates(); // Renew data

if (Acumulado > Cierre_Primera)
{
Cierra_Par();
}

Pro2= (MathCeil((MathPow(2,Expon) * Fraccion)*10))/10;

if (Borde_Inferior >= Bid) // Si la señal para la 2a posición, una venta, se activa
{
Pos_2=OrderSend(Symbol(),OP_SELL,Pro2,Bid,3,1000,0,"2a",Magic_2,0,Blue);
if (GetLastError() == 0)
{
//Alert ("Abierta la 2a posición. Una VENTA con ", Lots*Pro2, " Lotes");
}
}
}
//+--------------------------------------------------------------------------------------------------------+
int Analiza_2_Abre_3() // ANALIZA 2A POSICIÓN
{
MathSrand(TimeLocal());
MathRand();

int Magic_3 = MathRand()+1;

RefreshRates(); // Renew data

Pro3= (MathCeil((MathPow(3,Expon) * Fraccion)*10))/10;

if ((Borde_Superior - Medio) <= Ask) // Si la señal para la 3a posición, una compra, se activa...
{
Pos_3=OrderSend(Symbol(),OP_BUY,Pro3,Ask,3,0,1000,"3a",Magic_3,0,Red);
if (GetLastError() == 0)
{
//Alert ("Abierta la 3a posición, Una COMPRA con ", Lots*Pro3, " Lotes");
}
}
}
//+--------------------------------------------------------------------------------------------------------+
int Analiza_3_Abre_4() // ANALIZA 3A POSICIÓN
{
MathSrand(TimeLocal());
MathRand();

int Magic_4 = MathRand()+1;

RefreshRates(); // Renew data

Pro4= (MathCeil((MathPow(4,Expon) * Fraccion)*10))/10;

if ((Borde_Inferior + Cuarto) >= Bid) // Si la senal para la venta No. 2 se activa
{
Pos_4=OrderSend(Symbol(),OP_SELL,Pro4,Bid,3,1000,0,"4a",Magic_4,0,Black);
if (GetLastError() == 0)
{
//Alert ("Abierta la 4a posición. Una VENTA con ", Lots*Pro4, " Lotes");
}
}
}
//+--------------------------------------------------------------------------------------------------------+
int Analiza_4_Abre_5()
{
MathSrand(TimeLocal());
MathRand();

int Magic_5 = MathRand()+1;

RefreshRates(); // Renew data

Pro5= (MathCeil((MathPow(5,Expon) * Fraccion)*10))/10;

if ((Borde_Inferior + Cuarto + Octavo) <= Ask) // Si la señal para la 3a posición, una compra, se activa...
{
Pos_5=OrderSend(Symbol(),OP_BUY,Pro5,Ask,3,0,1000,"5a",Magic_5,0,White);
if (GetLastError() == 0)
{
//Alert ("Abierta la 3a posición, Una COMPRA con ", Lots*Pro3, " Lotes");
}
}
}
//+--------------------------------------------------------------------------------------------------------+
int Analiza_5_Abre_6()
{
RefreshRates(); // Renew data

Pro6= (MathCeil((MathPow(6,Expon) * Fraccion)*10))/10;

if (Borde_Inferior + Cuarto + Dieciseisavo >= Bid) // Si la senal para la venta No. 2 se activa
{
Pos_6=OrderSend(Symbol(),OP_SELL,Pro6,Bid,3,1000,0,"6a",66523,0,Red);
//OrderSelect(Pos_4, SELECT_BY_TICKET, MODE_TRADES); // segunda venta...
if (GetLastError() == 0)
{
//Alert ("Abierta la 4a posición. Una VENTA con ", Lots*Pro4, " Lotes");
}
}
}
//+--------------------------------------------------------------------------------------------------------+
int Analiza_6_Abre_7()
{
MathSrand(TimeLocal());
MathRand();

int Magic_6 = MathRand()+1;

RefreshRates(); // Renew data

Pro7= (MathCeil((MathPow(7,Expon) * Fraccion)*10))/10;

if (Borde_Inferior + Cuarto + Dieciseisavo + Treintaidosavo <= Ask) // Si la señal para la 3a posición, una compra, se activa...
{
Pos_7=OrderSend(Symbol(),OP_BUY,Pro7,Ask,3,0,1000,"7a",Magic_6,0,Green);
if (GetLastError() == 0)
{
//Alert ("Abierta la 3a posición, Una COMPRA con ", Lots*Pro3, " Lotes");
}
}
}
//+--------------------------------------------------------------------------------------------------------+
int Analiza_7_Abre_8()
{
RefreshRates(); // Renew data

Pro8= (MathCeil((MathPow(8,Expon) * Fraccion)*10))/10;

if (Borde_Inferior >= Bid) // Si la senal para la venta No. 2 se activa
{
Pos_8=OrderSend(Symbol(),OP_SELL,Pro8,Bid,3,1000,0,"8a",887867,0,Red);
if (GetLastError() == 0)
{
//Alert ("Abierta la 4a posición. Una VENTA con ", Lots*Pro4, " Lotes");
}
}
}
//+--------------------------------------------------------------------------------------------------------+
int Analiza_8_Abre_9()
{
MathSrand(TimeLocal());
MathRand();

int Magic_7 = MathRand()+1;

RefreshRates(); // Renew data

Pro9= (MathCeil((MathPow(9,Expon) * Fraccion)*10))/10;

if (Borde_Superior <= Ask) // Si la señal para la 3a posición, una compra, se activa...
{
Pos_3=OrderSend(Symbol(),OP_BUY,Pro9,Ask,3,0,1000,"9a",Magic_7,0,Green);
if (GetLastError() == 0)
{
//Alert ("Abierta la 3a posición, Una COMPRA con ", Lots*Pro3, " Lotes");
}
}
}
//+--------------------------------------------------------------------------------------------------------+
int Analiza_9_Abre_10()
{
MathSrand(TimeLocal());
MathRand();

int Magic_8 = MathRand()+1;

RefreshRates(); // Renew data

Pro10= (MathCeil((MathPow(10,Expon) * Fraccion)*10))/10;

if (Borde_Inferior >= Bid) // Si la senal para la venta No. 2 se activa
{
Pos_10=OrderSend(Symbol(),OP_SELL,Pro10,Bid,3,1000,0,"10a",Magic_8,0,Red);
if (GetLastError() == 0)
{
//Alert ("Abierta la 4a posición. Una VENTA con ", Lots*Pro4, " Lotes");
}
}
}
//--------------------------------------------------------------------------------------------------------+
int Analiza_10_Abre_11()
{
MathSrand(TimeLocal());
MathRand();

int Magic_9 = MathRand()+1;

RefreshRates(); // Renew data

Pro11= (MathCeil((MathPow(11,Expon) * Fraccion)*10))/10;

if (Borde_Superior <= Ask) // Si la señal para la 3a posición, una compra, se activa...
{
Pos_11=OrderSend(Symbol(),OP_BUY,Pro11,Ask,3,0,1000,"11a",Magic_9,0,Green);
if (GetLastError() == 0)
{
//Alert ("Abierta la 5a posición, Una COMPRA con ", Lots*Pro3, " Lotes");
}
}
}

//+--------------------------------------------------------------------------------------------------------+





***************************************
ESTE ES EL LÍMITE ENTRE LOS DOS EXPERTOS.
***************************************




//+------------------------------------------------------------------+
//| Sabueso 049 Descendente.mq4 |
//| Copyright © 2008, MetaQuotes Software Corp. |
//| Julio 20 de 2011 |
//+------------------------------------------------------------------+
#property copyright " - Para cuenta Real LiteForex."

//************************************************************************************
//
// P A R A A B A J O
//
// Ajustado en progresiones hasta la 7a
// Siempre cortando pos pips por la mitad
//
//
// Alarmas hasta la 4a - Envía correos de alerta
//
//************************************************************************************


extern int Senal_de_Cambio = 128; // Variación del precio para abrir posición de respaldo
extern int Cierre_Primera = 15; // Claro, el cierre de la primera posición
extern int Profit_de_corte = 100; // Cierra todo si va ganando X dólares
extern double Pro1 = 0.1 ; // Lotes de la primera posición
extern double Fraccion = 0.1 ;
extern double Expon = 4 ;
extern bool Alarmas = true ;
extern int Alarma_1a = 150 ; // Cuando la cuenta está en XXX pesos y sólo hay una posoción abierta
extern int Alarma_2a = 2000 ;
extern int Alarma_3a = 8000 ;
extern int Alarma_4a = 22000 ;

extern int Espera_entre_alarmas = 1 ; // Minutos entre correos cuando se envían una alarma se correo electrónico


double Pro2 ;
double Pro3 ;
double Pro4 ;
double Pro5 ;
double Pro6 ;
double Pro7 ;
double Pro8 ;
double Pro9 ;
double Pro10 ;
double Pro11 ;


int Pos_1 = 0 ; // Pos. 1
int Pos_2 = 0 ; // Pos. 2
int Pos_3 = 0 ; // Pos. 3
int Pos_4 = 0 ; // Etc.
int Pos_5 = 0 ;
int Pos_6 = 0 ;
int Pos_7 = 0 ;
int Pos_8 = 0 ;
int Pos_9 = 0 ;
int Pos_10 = 0 ;
int Pos_11 = 0 ;

int Posiciones_Abiertas ;

double Borde_Superior ; // Punto superior de la oscilación
double Borde_Inferior ; // Punto menor de la oscilación

double Spread ;

int Activador_de_cierre ;
string Par ; // Nombre del par
double Este_par ; // Cantidad de ransacciones abiertas en este par
double Ganancia ;
double Acumulado ;
int Intentos ;

double Medio ;
double Cuarto ;
double Octavo ;
double Dieciseisavo ;
double Treintaidosavo ;

int Contador_de_alarma = 0 ;
int Tiempo_inside_1a ;
int Futuro ;

//+------------------------------------------------------------------+
//| expert initializaion function |
//+------------------------------------------------------------------+
int init() // El init() se necesita para qe el experto funcione
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit() // El deinit() se necesita para que el experto funcione
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{


Contar_este_par();

if(Alarmas == True)
{
Enviar_alarma();
}
Calcular_ganancia();

if (Acumulado > Profit_de_corte)
{
Cierra_Par();
}
if(Este_par!=0)
{
Recuperar_variables();
}
RefreshRates();

if(Este_par==0)
{
Cero_Posiciones();
}
if(Este_par==1)
{
Analiza_1_Abre_2();
}
if(Este_par==2)
{
Analiza_2_Abre_3();
}
if(Este_par==3)
{
Analiza_3_Abre_4();
}
if(Este_par==4)
{
Analiza_4_Abre_5();
}
if(Este_par==5)
{
Analiza_5_Abre_6();
}
if(Este_par==6)
{
Analiza_6_Abre_7();
}
if(Este_par==7)
{
Analiza_7_Abre_8();
}
if(Este_par==8)
{
Analiza_8_Abre_9();
}
if(Este_par==9)
{
Analiza_9_Abre_10();
}
if(Este_par==10)
{
Analiza_10_Abre_11();
}

Pro2= (MathCeil((MathPow(2,Expon) * Fraccion)*10))/10;
Pro3= (MathCeil((MathPow(3,Expon) * Fraccion)*10))/10;
Pro4= (MathCeil((MathPow(4,Expon) * Fraccion)*10))/10;
Pro5= (MathCeil((MathPow(5,Expon) * Fraccion)*10))/10;
Pro6= (MathCeil((MathPow(6,Expon) * Fraccion)*10))/10;
Pro7= (MathCeil((MathPow(7,Expon) * Fraccion)*10))/10;


Comment("Posiciones : ", Este_par, " ; Par : ", Par, " ; Apalancamiento: 1/", AccountLeverage(), " "+" \n"+"Progresión ", Pro2, " ", Pro3, " ", Pro4, " ", Pro5, " ", Pro6, " ", Pro7, " " +" \n"+ "BI: ", Borde_Inferior, " ; BS: ", Borde_Superior, " ; Balance : $", AccountBalance(), " ; Fecha y hora : ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS), "; 2a : ", Borde_Superior, "; 3a : ", Borde_Superior - Medio, "; 4a : ", Borde_Inferior + Cuarto, "; 5a : ", Borde_Inferior + Cuarto + Dieciseisavo, " "+" \n"+ "Equity Tebille : $",AccountEquity(), " ; Margen : $", AccountMargin(), " ; Free Margin : $", AccountFreeMargin()," ; Par Profit : $",Acumulado);
Sleep(50);
Comment(" ");
Sleep(50);
Comment("Posiciones : ", Este_par, " ; Par : ", Par, " ; Apalancamiento: 1/", AccountLeverage(), " "+" \n"+"Progresión ", Pro2, " ", Pro3, " ", Pro4, " ", Pro5, " ", Pro6, " ", Pro7, " " +" \n"+ "BI: ", Borde_Inferior, " ; BS: ", Borde_Superior, " ; Balance : $", AccountBalance(), " ; Fecha y hora : ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS), "; 2a : ", Borde_Superior, "; 3a : ", Borde_Superior - Medio, "; 4a : ", Borde_Inferior + Cuarto, "; 5a : ", Borde_Inferior + Cuarto + Dieciseisavo, " "+" \n"+ "Equity Tebille : $",AccountEquity(), " ; Margen : $", AccountMargin(), " ; Free Margin : $", AccountFreeMargin()," ; Par Profit : $",Acumulado);
//Comment("Posiciones : ", Este_par, " ; Par : ", Par, " ; Apalancamiento: 1/", AccountLeverage(), " "+" \n"+"Progresión ", Pro2, " ", Pro3, " ", Pro4, " ", Pro5, " ", Pro6, " ", Pro7, " " +" \n"+ "BI: ", Borde_Inferior, " ; BS: ", Borde_Superior, " ; Balance : $", AccountBalance(), " ; Fecha y hora : ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS), "; 2a : ", Borde_Inferior, "; 3a : ", Borde_Superior - Medio, "; 4a : ", Borde_Inferior + Cuarto, " " +" \n"+ "Equity Tebille : $",AccountEquity(), " ; Margen : $", AccountMargin(), " ; Free Margin : $", AccountFreeMargin()," ; Par Profit : $",Acumulado);


return(0);
}
//+--------------------------------------------------------------------------------------------------------+
int Contar_este_par()
{
RefreshRates();

Par=Symbol();

Este_par = 0;

for(int i=0;i<OrdersTotal();i++) // Cuenta el número de posiciones de este par en específico
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Par)
{
Este_par++;
}
}
}
//+--------------------------------------------------------------------------------------------------------+
//+--------------------------------------------------------------------------------------------------------+
int Enviar_alarma()
{

RefreshRates(); // > <

//------------------------
if(Este_par==1)
{
if(AccountFreeMargin() < Alarma_1a)
{
if(Contador_de_alarma == 0)
{
Tiempo_inside_1a = TimeCurrent();
Futuro = Tiempo_inside_1a + Espera_entre_alarmas*60 ;
Contador_de_alarma = Contador_de_alarma + 1 ;
Alert("¡PILAS CON EL MARGEN EN: ", AccountNumber());
SendMail("Mensaje del Sabueso", "La sigueinte cuenta necesita fondos "+AccountNumber()) ;
}
else
{
if(Futuro < TimeCurrent())
{
Alert("¡PILAS CON EL MARGEN EN: ", AccountNumber());
SendMail("Mensaje del Sabueso", "La siguiente cuenta necesita fondos "+AccountNumber()) ;
Contador_de_alarma = 0;
}
}

}
}
//------------------------
if(Este_par==2)
{
if(AccountFreeMargin() < Alarma_2a)
{
if(Contador_de_alarma == 0)
{
Tiempo_inside_1a = TimeCurrent();
Futuro = Tiempo_inside_1a + Espera_entre_alarmas*60 ;
Contador_de_alarma = Contador_de_alarma + 1 ;
Alert("¡PILAS CON EL MARGEN EN: ", AccountNumber());
SendMail("Mensaje del Sabueso", "La sigueinte cuenta necesita fondos "+AccountNumber()) ;
}
else
{
if(Futuro < TimeCurrent())
{
Alert("¡PILAS CON EL MARGEN EN: ", AccountNumber());
SendMail("Mensaje del Sabueso", "La siguiente cuenta necesita fondos "+AccountNumber()) ;
Contador_de_alarma = 0;
}
}

}
}
//------------------------
if(Este_par==3)
{
if(AccountFreeMargin() < Alarma_3a)
{
if(Contador_de_alarma == 0)
{
Tiempo_inside_1a = TimeCurrent();
Futuro = Tiempo_inside_1a + Espera_entre_alarmas*60 ;
Contador_de_alarma = Contador_de_alarma + 1 ;
Alert("¡PILAS CON EL MARGEN EN: ", AccountNumber());
SendMail("Mensaje del Sabueso", "La sigueinte cuenta necesita fondos "+AccountNumber()) ;
}
else
{
if(Futuro < TimeCurrent())
{
Alert("¡PILAS CON EL MARGEN EN: ", AccountNumber());
SendMail("Mensaje del Sabueso", "La siguiente cuenta necesita fondos "+AccountNumber()) ;
Contador_de_alarma = 0;
}
}

}
}
//------------------------
if(Este_par==4)
{
if(AccountFreeMargin() < Alarma_4a)
{
if(Contador_de_alarma == 0)
{
Tiempo_inside_1a = TimeCurrent();
Futuro = Tiempo_inside_1a + Espera_entre_alarmas*60 ;
Contador_de_alarma = Contador_de_alarma + 1 ;
Alert("¡PILAS CON EL MARGEN EN: ", AccountNumber());
SendMail("Mensaje del Sabueso", "La sigueinte cuenta necesita fondos "+AccountNumber()) ;
}
else
{
if(Futuro < TimeCurrent())
{
Alert("¡PILAS CON EL MARGEN EN: ", AccountNumber());
SendMail("Mensaje del Sabueso", "La siguiente cuenta necesita fondos "+AccountNumber()) ;
Contador_de_alarma = 0;
}
}

}
}
}
//+--------------------------------------------------------------------------------------------------------+
int Calcular_ganancia()
{
RefreshRates();

double Ganancia;
string Par ;
double Este_par ;

Ganancia = 0 ;
Acumulado = 0 ;

Par = Symbol();

Este_par = 0;

for(int i=0;i<OrdersTotal();i++) // Cuenta el número de posiciones de este par en específico
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol() == Par)
{
Ganancia = OrderProfit() + OrderSwap() ;
Acumulado = Ganancia + Acumulado;
}
}
}
//+--------------------------------------------------------------------------------------------------------+
int Recuperar_variables()
{
RefreshRates();

Par = Symbol();

for(int i=0;i<OrdersTotal();i++) // Cuenta el número de posiciones de este par en específico
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol() == Par)
{

Spread = Bid - Ask ;

Borde_Inferior = OrderOpenPrice();
Borde_Superior = Borde_Inferior + Senal_de_Cambio * Point;

Medio = (Borde_Superior - Borde_Inferior)/2;
Cuarto = Medio/2;
Octavo = Cuarto/2;
Dieciseisavo = Octavo/2 ;
Treintaidosavo = Dieciseisavo/2 ;

return ;
}
}
}
//+--------------------------------------------------------------------------------------------------------+
int Cierra_Par() // Cierra todas las posiciones

{
while (Este_par>0)
{

if(OrderSymbol() == Par)
{
if (OrderType()==OP_BUY )
OrderClose(OrderTicket(),OrderLots(),Bid,0,CLR_NONE);

if (OrderType()==OP_SELL )
OrderClose(OrderTicket(),OrderLots(),Ask,0,CLR_NONE);

Contar_este_par();
}
}
}

//+--------------------------------------------------------------------------------------------------------+

int Cero_Posiciones()
{
MathSrand(TimeLocal());
MathRand();

int Magic_1 = MathRand()+1;

RefreshRates();

Spread = Bid - Ask ;

Borde_Inferior = Bid ; //+ Spread ;
Borde_Superior = Borde_Inferior + (Senal_de_Cambio * Point);


Medio = (Borde_Superior - Borde_Inferior)/2;
Cuarto = Medio/2;
Octavo = Cuarto/2;
Dieciseisavo = Octavo/2 ;
Treintaidosavo = Dieciseisavo/2 ;

Pos_1=OrderSend(Symbol(),OP_SELL,Pro1,Bid,3,1000,0,"1a",Magic_1,0,Yellow);

if (GetLastError() == 0) // Si la transacción se hizo sin novedad
{
//Alert ("Abierta la 1a posición, Una COMPRA con ", Lots, " Lotes");
}
}
//+--------------------------------------------------------------------------------------------------------+
int Analiza_1_Abre_2()
{

MathSrand(TimeLocal());
MathRand();
int Magic_2 = MathRand()+1;

RefreshRates(); // Renew data

if (Acumulado > Cierre_Primera)
{
Cierra_Par();
}

Pro2= (MathCeil((MathPow(2,Expon) * Fraccion)*10))/10;

if (Borde_Superior <= Ask)
{
Pos_2=OrderSend(Symbol(),OP_BUY,Pro2,Ask,3,0,10000,"2a",Magic_2,0,Blue);
if (GetLastError() == 0)
{
//Alert ("Abierta la 2a posición. Una VENTA con ", Lots*Pro2, " Lotes");
}
}
}
//+--------------------------------------------------------------------------------------------------------+
int Analiza_2_Abre_3()
{
MathSrand(TimeLocal());
MathRand();

int Magic_3 = MathRand()+1;

RefreshRates(); // Renew data

Pro3= (MathCeil((MathPow(3,Expon) * Fraccion)*10))/10;

if ((Borde_Superior - Medio) >= Bid)
{
Pos_3=OrderSend(Symbol(),OP_SELL,Pro3,Bid,3,10000,0,"3a",Magic_3,0,Red);
if (GetLastError() == 0)
{
//Alert ("Abierta la 3a posición, Una COMPRA con ", Lots*Pro3, " Lotes");
}
}
}
//+--------------------------------------------------------------------------------------------------------+
int Analiza_3_Abre_4()
{
MathSrand(TimeLocal());
MathRand();

int Magic_4 = MathRand()+1;

RefreshRates(); // Renew data

Pro4= (MathCeil((MathPow(4,Expon) * Fraccion)*10))/10;

if ((Borde_Superior - Cuarto) <= Ask)
{
Pos_4=OrderSend(Symbol(),OP_BUY,Pro4,Ask,3,0,10000,"4a",Magic_4,0,Black);
if (GetLastError() == 0)
{
//Alert ("Abierta la 4a posición. Una VENTA con ", Lots*Pro4, " Lotes");
}
}
}
//+--------------------------------------------------------------------------------------------------------+
int Analiza_4_Abre_5()
{
MathSrand(TimeLocal());
MathRand();

int Magic_5 = MathRand()+1;

RefreshRates(); // Renew data

Pro5= (MathCeil((MathPow(5,Expon) * Fraccion)*10))/10;

if ((Borde_Superior - Cuarto - Octavo) >= Ask)
{
Pos_5=OrderSend(Symbol(),OP_SELL,Pro5,Ask,3,1000,0,"5a",Magic_5,0,White);
if (GetLastError() == 0)
{
//Alert ("Abierta la 3a posición, Una COMPRA con ", Lots*Pro3, " Lotes");
}
}
}
//+--------------------------------------------------------------------------------------------------------+
int Analiza_5_Abre_6()
{
RefreshRates(); // Renew data

Pro6= (MathCeil((MathPow(6,Expon) * Fraccion)*10))/10;

if (Borde_Superior - Cuarto - Dieciseisavo <= Ask)
{
Pos_6=OrderSend(Symbol(),OP_BUY,Pro6,Ask,3,0,1000,"6a",66523,0,Red);
if (GetLastError() == 0)
{
//Alert ("Abierta la 4a posición. Una VENTA con ", Lots*Pro4, " Lotes");
}
}

}
//+--------------------------------------------------------------------------------------------------------+
int Analiza_6_Abre_7()
{
MathSrand(TimeLocal());
MathRand();

int Magic_6 = MathRand()+1;

RefreshRates(); // Renew data

Pro7= (MathCeil((MathPow(7,Expon) * Fraccion)*10))/10;

if (Borde_Superior - Cuarto - Dieciseisavo - Treintaidosavo >= Bid)
{
Pos_7=OrderSend(Symbol(),OP_SELL,Pro7,Bid,3,1000,0,"7a",Magic_6,0,Green);
if (GetLastError() == 0)
{
//Alert ("Abierta la 3a posición, Una COMPRA con ", Lots*Pro3, " Lotes");
}
}

}
//+--------------------------------------------------------------------------------------------------------+
int Analiza_7_Abre_8()
{
RefreshRates(); // Renew data

Pro8= (MathCeil((MathPow(8,Expon) * Fraccion)*10))/10;

if (Borde_Inferior >= Bid)
{
Pos_8=OrderSend(Symbol(),OP_BUY,Pro8,Ask,3,0,1000,"8a",887867,0,Red);
if (GetLastError() == 0)
{
//Alert ("Abierta la 4a posición. Una VENTA con ", Lots*Pro4, " Lotes");
}
}

}
//+--------------------------------------------------------------------------------------------------------+
int Analiza_8_Abre_9()
{
MathSrand(TimeLocal());
MathRand();

int Magic_7 = MathRand()+1;

RefreshRates(); // Renew data

Pro9= (MathCeil((MathPow(9,Expon) * Fraccion)*10))/10;

if (Borde_Superior <= Ask)
{
Pos_3=OrderSend(Symbol(),OP_SELL,Pro9,Bid,3,1000,0,"9a",Magic_7,0,Green);
if (GetLastError() == 0)
{
//Alert ("Abierta la 3a posición, Una COMPRA con ", Lots*Pro3, " Lotes");
}
}

}
//+--------------------------------------------------------------------------------------------------------+
int Analiza_9_Abre_10()
{
MathSrand(TimeLocal());
MathRand();

int Magic_8 = MathRand()+1;

RefreshRates(); // Renew data

Pro10= (MathCeil((MathPow(10,Expon) * Fraccion)*10))/10;

if (Borde_Inferior >= Bid)
{
Pos_10=OrderSend(Symbol(),OP_BUY,Pro10,Ask,3,0,1000,"10a",Magic_8,0,Red);
if (GetLastError() == 0)
{
//Alert ("Abierta la 4a posición. Una VENTA con ", Lots*Pro4, " Lotes");
}
}

}
//--------------------------------------------------------------------------------------------------------+
int Analiza_10_Abre_11()
{
MathSrand(TimeLocal());
MathRand();

int Magic_9 = MathRand()+1;

RefreshRates(); // Renew data

Pro11= (MathCeil((MathPow(11,Expon) * Fraccion)*10))/10;

if (Borde_Superior <= Ask)
{
Pos_11=OrderSend(Symbol(),OP_SELL,Pro11,Bid,3,1000,0,"11a",Magic_9,0,Green);
if (GetLastError() == 0)
{
//Alert ("Abierta la 5a posición, Una COMPRA con ", Lots*Pro3, " Lotes");
}
}
}

//+--------------------------------------------------------------------------------------------------------+

33. Esta falta de juicio mía...

Ni para qué les cuento lo que pasó.

Me fui a acampar y me entusiasmé en el monte.

No llegué a la casa cuando abrieron los mercados el domingo y cuando llegué el lunes me sorprendí pues había ganado como 200 dólares.

Y eso fue lo pero que me pudo haber pasado. Creí haber descubierto un sistema mejor que el del Sabueso.

Creí que jugar al "Cara y Sello" me enriquecería en dos segundos.

¿El resultado?

Abandoné el Sabueso. Lo cambié por el Cara y Sello y perdí todo.

Todo todito todo.

Me desanimé completamente y sólo hasta hoy, muchos meses después,  he decidido contar lo que pasó.

Pero para quien quiera experimentar con el Sabueso, que funciona de maravilla, copiaré el código en la siguiente entrada.

¿Por qué no lo sigo si lo he comprobado y de verdad funciona?

Tal vez porque no tengo la estructura de personalidad para seguir con la disciplina que exige el Sabueso...

Que tontería, ¿No?

:(

viernes, 29 de julio de 2011

32. De la teoría a la práctica

Hoy viernes, a la hora que escribo, ya se han cerrado los mercados.

El domingo pasado, cuando se abrieron, tenía listas diez cuentas en LiteForex para operar. En mi cuenta me habían quedado 76 centavos de la aventura que tuve la vez pasada y que ya conté y había metido la semana pasada 900.000 pesos colombianos más. Fuera de eso, LiteForex me dio un dinerillo , seis dólares con once centavos,  - no sé por qué -, y completé entonces 43.774, 67 centavos. Cuarenta y tres mil y pico centavos.

Hoy, después de operar las diez cuentas que abrí (no dejan abrir más en LiteForex), tengo 46.048,89 centavos. Cuarenta y seis mil.

En cinco días de operaciones, una semana Forex, tuve ganancias del 5.196%. Es decir, 20% mensual, 240% anual.

Las alarmas funcionaron de maravilla y me llegan al teléfono enviadas desde el Sabueso. Lo que hacía era pasar plata de una cuanta a otra cuando las alarmas sonaban. Se pueden hacer diez transferencias entre cuentas al día sin ningún costo. En la noche de ayer se fue la luz de las custro de la tarde hasta las once de la  noche. En lugar de angustiarme me leí El Ciclista, de Tim Krabbé.

Confieso que tuve cuotas considerables de estrés, pero aprendí que el Sabueso es de fiar. ¡Encontré un error de programación el el Descendente! Bueno, que no he corregido. Mi conexión a Internet no es de lo mejor y a veces me dejaba engrampado.

Pero sumando y restando, estoy satisfecho. El Sabueso funciona exactamente como en las simulaciones. Ni más ni menos.

Seguro es muy pronto para sacar conclusiones, pero no he tenido ninguna sorpresa. Nada que no hubiera ocurrido en las simulaciones pasó.

Les dejo dos pantallazos de inicio y final de la semana.

Chao.


viernes, 22 de julio de 2011

31. Alarmas

Para que a uno le lleguen las alarmas hay que configurar las opciones más o menos como aparece abajo. pues no es posible que el Metatrader envíe correos a cuentas de Gmail, Hotmail, Yahoo, etc.


Como se ve, yo abrí una cuanta en GMX (que sí recibe mensajes del Metatrader) y me los envío a mi correo en Gmail.

Aquí aparece que los envía al grupo que les había dicho, pero a fin de cuentas pensé que hacerlo así era darle muchas vueltas al asunto.

Lo que no sé todavía es como poner el Iphone a que me suene cuando llega un correo. Si alguien sabe, pues por favor, mándeme un salvavidas para salir de la ignorancia. Y mientras llega el salvavidas, voy a buscar en Google a ver cómo es la cosa. Es que en eso del Iphone si estoy pero montañero montañero. Pero como me da pereza leer el manual del usuario, tocará ir aprendiendo a los trancazos.

miércoles, 20 de julio de 2011

30. Sabuesos ahora con sistema de alarmas

Hoy por fin pude ponerle alarma a la primera posición.

Me mamaba gallo un contador que le puse para que me mande alarmas cada X tiempo, según lo determine una variable externa que uno puede ajustar cuando quiera.

El problema era simple de solucionar pero yo había metido el contador de alarmas "Contador_de_alarma = 0" en la parte "Start" del programa y no me había dado cuanta. Casi me saco un ojo pues este bendito contador siempre estaba en cero y yo no sabía por qué.

Bueno, por ahora el contador está funcionando así: Manda una señal de alerta cuando hay que trasladar plata y después, al número de minutos después que uno quiera, manda dos mensajes de alerta a la pantalla, con un timbre que tiene el Metatrader. Me hubiera gustado que mandara sólo uno cada minuto pero ya sabemos que soy mal programador.

El código de las alarmas para el que lo quiera mejorar, está en los Sabuesos 049 Ascendente y 049 Descendente.

Ya es muy fácil poner alarmas para todas las posiciones. No es sino copiar y pegar y añadir dos bobadas más.

Lo importante de que el programa tenga alarmas, es que ya no se requiere vigilancia constante para saber cuando hay que trasladar plata de una cuenta a otra si es que la progresión lo exige, o si quien lo exige es un precio caprichoso que va en contra nuestra.

La alarma está puesta con la orden "alert", que da un mensaje de pantalla con un timbrecito. Pero hoy se la cambio para que me mande ese mismo mensaje, pero además que me ponga un correo electrónico avisándome. Ese correo va a un grupo de Google-groups que hice y que se llama "Alarmas-del-Sabueso". Por ahora sólo hay dos personas en ese grupo que en realidad es el grupo de "Inversores Solidarios" del que hablé hace un poco de entradas. Esa mejora con envío de correos electrónicos serán los Sabuesos 050.

Todavía estoy con la idea de manejar cuentas en centavos, pues así el grupo de inversores solidarios puede estar compuesto de una sola persona. Basta abrir cuantas en un sólo broker y trasladar plata de una cuanta a otra cuando las alarmas lo indiquen.

Bueno sería tener un Iphone o un aparatejo similar para poder hacer los traslados de plata sin necesidad de estar sentado frente al computador. En el Iphone o Blackberry o lo que sea, se podría ver el estado de las cuantas, recibir las alertas, trasladar los fondos y quién sabe que cosas más. Incluso hay un programita para Ipod Touch y para Iphone que controla el computador desde cualquier lado. Es una belleza de programa y es como tener un computador de mesa en el bolsillo con todas las ventaja de tener un pc en lugar de un aparato de esos portátiles.

En fin, que estoy contento porque el sistema de alarma que me quita un peso de encima.

Chao.

martes, 12 de julio de 2011

29. Otros mundos son posibles

Si volvemos a la ida general de que lo único cierto en los precios del mercado de divisas es que siempre varían, se puede hacer el siguiente razonamiento que es la base del Sabueso: Si uno mete posiciones alternas (compra-venta-compra-venta), la única condicion que se requiere para poder ganar dinero es que uno use una curva diferente a la que tomarán los precios, siempre y cuando haga una progresión en la cantidad de lotes de manera tal que la última posición (compra o venta) que se gane sea mayor que todas las posiciones anteriores sumadas.

Este postulado, simple de entender pero difícil de expresar en letras, quiere decir que si uno idea un sistema de trading que sea progresivo en sus posiciones, siempre ganará si el comportamiento de la curva de dicho sistema de trading es diferente de la curva de los precios hasta un nivel en que una progresión alta sea ganada y compense todas las posiciones equivocadas anteriores.

Como la cosa de todas maneras suena bastante enredada, creo que lo mejor es explicarlo con un gráfico.



En el gráfico superior, bastante rústico pero útil para nuestro propósito, se muestran los diferentes tipos de progresiones.

La de la izquierda, que arbitrariamente llamaré Normal, pues fue la primera que se me ocurrió, simplemente uno espera que el desarrollo del precio no sea igual a una curva (la de nuestro sistema) que oscila entre un precio superior y uno inferior. Este fue el primer Sabueso, hasta su versión 037.

En las siguientes versiones se usó la progresión siguiente (Abrazo, por su nombre temporal de Abrazo del Oso), que es la que se usa en la versión actual del Sabueso, la 048.

Pero otras progresiones (¡miles de ellas!) son posibles si cumplen con el postulado con el que iniciamos esta entrada.

Las progresiones Decreciente y Creciente se explican por sí solas, y las que he llamado Variable Regular, es simplemente un ciclo regular de cambios.

Al punto que quiero llegar es el siguiente: Cualquier tipo de oscilación en el Sabueso es válida y ganadora siempre y cuando sea diferente a la oscilación de los precios.

Si esto es verdad, entonces... ¿cuál escoger?

La respuesta, como siempre, es simple: la que demuestre ser más efectiva y económica en los ensayos con datos históricos.

Me refiero a económica en el sentido de que sea un oscilación donde no tenga uno que poner esta vida y la otra en dinero para tener una ganancia determinada. O sea que entre dos oscilaciones, se debería escoger la que requiera invertir la menor cantidad de plata para ganar la misma cantidad de dinero.

La única cosa mala que le veo a esta discusión, es que hay que variar el Sabueso para que haga las compras y ventas de acuerdo a las oscilaciones que nosotros queramos, y luego hay que hacer so backtestings respectivos para ver cuál sistema es mejor. Y lo malo consiste es que es un trabajo dispendioso. Es decir, que hay que gastarle tiempo a los nuevos sistemas (hijos del Sabueso, podríamos llamarlos), para ver qué tan efectivo son.

Me gusta la curva Decreciente pues creo que genera menos estrés al inversor que la actual que estamos usando (El abrazo). Pero como ya está dicho, sólo experimentando se verá cuál es mejor.

Que bueno que algún lector de este blog experimentara alguno de los sistemas propuestos, o alguno de su inversión, y dijera: "No le boten corriente a este que tiene los defectos tales y pascuales. Pero usen este otro que es mejor incluso que los Sabuesos Ascendiente y Descendiente."

:)

lunes, 11 de julio de 2011

28b. Ya no es especulación

El Sabueso Descendente (espejo del normal y que ahora se llama Ascendente), funciona exactamente igual que su álter ego, pero al contrario, es decir, iniciando con una venta.

Lo he probado y es lo mismo pero a la visconversa, como diría un amigo mío.

Bueno, eso era de esperarse.

Lo que si ha resultado muy interesante es tratar de resolver un problema que los resultados ponen al descubierto.

Los Sabuesos son ganadores siempre y cuando uno trasladen fondos de manera oportuna entre las cuentas. El interrogante es: ¿Cuándo trasladar esos fondos? Así que estoy trabajando en un sistema de alarmas que avise por medio de un correo electrónico o un mensaje de texto al teléfono cuándo es que hay que hacer los traslados de fondos de una cuanta a otra y en qué cuantía.

Apenas tenga ese sistema de alarmas funcionando (tengo uno en pruebas pero todavía es muy rudimentario), terminará el monitoreo de los Sabuesos y el sistema será casi que casi automático.

El ideal es que uno pudiera hacer que el traslado de fondos también fuera automático para que uno se pudiera desconectar del todo del sistema y sólo recogiera las ganancias. Pero no sé si se pueda hacer eso. Además, así como van los Sabuesos van muy bien. No son 100% automáticos, pero producen plata sin tener que marcar tarjeta.

martes, 5 de julio de 2011

28a. No a las especulaciones

La entrada 28 debe ser vista como lo que es hasta ahora, como un especulación.

Parece buena la idea, pero por ahora tan sólo PARECE.

No he hecho ningún ensayo con Ascendentes y Descendentes al tiempo, así que lo mejor es no tomar en cuanta esa idea hasta no probarla.

El Sabueso, por el contrario, ha sido probado muchas veces y se ha mostrado ganador.

Si la idea de dos expertos funcionando en el mismo par pero con direcciones opuestas se muestra efectiva en los ensayos, ya lo estaré reportando. Mientras esto no sea así, estamos en el terreno de la especulaciones...

lunes, 4 de julio de 2011

28. Bueno, entonces vamos ahora río arriba

Ya había terminado el blog y todo estaba dicho, pero la verdad es que no todo estaba pensado.

No sé qué más aparecerá en este blog, pero hoy, viendo una lanchita que iba río arriba  con una vela de plástico (estoy en Barranquilla), me llegó a la cabeza la siguiente idea: Si la primera posición del Sabueso es una compra, entonces cada vez que el precio sube uno va ganando. Si el precio baja, hay que esperar a que se hagan las progresiones para recoger también ganancias. Y si así es del Sabueso, entonces cuando el precio baja uno podría inventar algo para navegar en contra de la corriente que arbitrariamente se escogió que fuera precio arriba ya que la primera posición es una compra...

Pues es invento no puede ser más simple y efectivo: crear un Sabueso que funcione en la dirección contraria del original y ponerlo a funcionar al mismo tiempo con el primer Sabueso.

Serían entonces, un Sabueso Ascendente (el que inicia con una compra) y el Sabueso Descendente (su espejo, el que inicia con una venta).

Funcionando los dos Sabuesos al tiempo en el mismo par, las ganancias deben, por obligación, aumentarse.

¿Y cómo funcionan dos Sabuesos distintos en un mismo par al tiempo? Muy fácil: Se instalan dos Metatrader en dos directorios distintos y en cada uno se abre una cuenta distinta con el broker. Luego, en uno se pone a correr el Sabueso Ascendente y en el otro el Descendente. Así no habrá conflictos de variables y todos felices.

Es lógico este pensamiento, ¿no?

Y hacer el Sabueso Descendente es super fácil, pues no es sino cambiar unas cositas del Ascendente.

Me asombra que un concepto tan simple no se me hubiera ocurrido antes...

Sí. Creo que si hasta aquí nos había traído el río, entonces no es mala idea empezar a navegar ahora también río arriba.

Es Sabueso Descendente será entonces la vela de plástico de la lanchita que avanzaba en contra de la corriente. O tal vez cumpla mejor con esa metáfora el Ascendente. :)

NOTA DE 2015
(El código de la última versión del Sabueso está en la entrada 34 de este blog. Sólo hay que compilarlo y ponerlo a trabajar. Sería bueno, creo, seguir leyendo este blog para entender de qué se trata y como funciona.)

martes, 21 de junio de 2011

27. Hasta aquí nos trajo el río

Con  esta entrada se termina este blog.

Si alguien necesita que le aclare algo, pues se crearán otras entradas. O también si hay modificaciones sustanciales del Sabueso o si él me lleva a al quiebra. :)

Quiero agradecer a mis lectores por su enorme paciencia con un tema que si bien parce árido, para mi ha sido apasionante.

Por mi parte, pondré en práctica el Sabueso.

Y de todo lo que me gane le mandaré el 10% a mi amiga Christine Theano. Bueno, por lo menos hasta que ella reconstruya su casa en Haití.

(¡¡Y yo que siempre he renegado de los que diezman!!)  :))

Y si tengo la oportunidad, la visitaré de nuevo en Pernier para contarle que  su recuerdo me dio aliento para pensar y pensar en este Sabueso que parece más fantasía que realidad.

¡Chao!

26. Ya casi terminamos

Sí. Ya casi terminamos.

Es que me pongo a pensar en qué otra cosa podría decirles y no se viene nada a la cabeza.

¿Más pruebas con más pares?

De pronto las publico, pues en eso me la paso.

¿Pruebas en tiempo real?

Ya algunos las han hecho y podrán contar si el Sabueso les ha funcionado o no. Y la idea es que cada uno haga su propia prueba a ver si que afirma este blog es verdad o no.

¿Consejos sobre cómo manejar la plata?

Bueno, aquí si tendría algo más que decir. Y es que si uno arranca con 50.000 unidades, lo mejor es abrir 50.000/3.000 cuentas y ponerse a pasar plata de una a otra mientras los respectivos Sabuesos hacen que las progresiones continúen, o hasta cuando el precio termine de ir en contra nuestra.

Es bueno tener paciencia y no asustarse si a fin de mes no se ha ganado. Esperar cinco días resuelve los problema pues le da tiempo al Sabueso de recuperarse.

Yo pensaba que uno debía arrancar por lo menos con 30.000 dólares para que el Sabueso le diera con qué vivir. Pero ahora pienso que uno puede empezar con cualquier cantidad de dinero con tal que la divida en 50.000 unidades y las ponga a funcionar en varias cuentas. Mínimo 10.

Creo que voy a tener que ponerle unas alarmitas al Sabueso para que nos indique cuándo una cuanta requiere inyección de fondos. Que el Sabueso nos mande un correo electrónico en esos casos no estaría de más.


Por ahora no se me ocurre qué más decir. Toda al información está en el blog, con excepción del Sabueso mismo, pero ya saben por qué razón.

NOTA DE 2015
(El código de la última versión del Sabueso está en la entrada 34 de este blog. Sólo hay que compilarlo y ponerlo a trabajar. Sería bueno, creo, seguir leyendo este blog para entender de qué se trata y como funciona.)

25. Resultados (3)

Más resultados.

047 NZDUSD enero/2003 $25.000 $1.843
047 NZDUSD febrero/2003 $3.000 $103
047 NZDUSD marzo/2003 $5.000 $2.025
047 NZDUSD abril/2003 $3.000 $125
047 NZDUSD mayo/2003 $3.000 $248
047 NZDUSD junio/2003 $3.000 $98
047 NZDUSD julio/2003 $5.000 $2.381
047 NZDUSD agosto/2003 $5.000 $1.301
047 NZDUSD septiembre/2003 $3.000 $623
047 NZDUSD octubre/2003 $3.000 $241
047 NZDUSD noviembre/2003 $3.000 $192
047 NZDUSD diciembre/2003 $3.000 $443
047 NZDUSD enero/2004 $3.000 $766
047 NZDUSD febrero/2004 $10.000 $863
047 NZDUSD marzo/2004 $3.000 $1.067
047 NZDUSD abril/2004 $3.000 $941
047 NZDUSD mayo/2004 $3.000 $868
047 NZDUSD junio/2004 $5.000 $1.042
047 NZDUSD julio/2004 $3.000 $415
047 NZDUSD agosto/2004 $3.000 $480
047 NZDUSD septiembre/2004 $3.000 $310
047 NZDUSD octubre/2004 $10.000 $504
047 NZDUSD noviembre/2004 $10.000 $337
047 NZDUSD diciembre/2004 $15.000 $795
047 NZDUSD enero/2005 $10.000 $584
047 NZDUSD febrero/2005 $3.000 $278
047 NZDUSD marzo/2005 $10.000 $619
047 NZDUSD abril/2005 $10.000 $663
047 NZDUSD mayo/2005 $3.000 $262
047 NZDUSD junio/2005 $3.000 $139
047 NZDUSD julio/2005 $10.000 $406 mes de 35 días
047 NZDUSD agosto/2005 $10.000 $523 mes de 35 días
047 NZDUSD septiembre/2005 $3.000 $371
047 NZDUSD octubre/2005 $10.000 $181
047 NZDUSD noviembre/2005 $3.000 $226
047 NZDUSD diciembre/2005 $3.000 $480
047 NZDUSD enero/2006 $3.000 $187
047 NZDUSD febrero/2006 $3.000 $5.012
047 NZDUSD marzo/2006 $3.000 $597
047 NZDUSD abril/2006 $10.000 $556
047 NZDUSD mayo/2006 $3.000 $462
047 NZDUSD junio/2006 $3.000 $452
047 NZDUSD julio/2006 $45.000 $270 mes de 35 días
047 NZDUSD agosto/2006 $3.000 $207
047 NZDUSD septiembre/2006 $3.000 $391
047 NZDUSD octubre/2006 $3.000 $285
047 NZDUSD noviembre/2006 $3.000 $258
047 NZDUSD diciembre/2006 $3.000 $134
047 NZDUSD enero/2007 $3.000 $264
047 NZDUSD febrero/2007 $10.000 $528
047 NZDUSD marzo/2007 $3.000 $742
047 NZDUSD abril/2007 $25.000 $382
047 NZDUSD mayo/2007 $3.000 $355
047 NZDUSD junio/2007 $3.000 $479
047 NZDUSD julio/2007 $3.000 $1.137
047 NZDUSD agosto/2007 $5.000 $3.058
047 NZDUSD septiembre/2007 $3.000 $1.111
047 NZDUSD octubre/2007 $5.000 $447
047 NZDUSD noviembre/2007 $10.000 $1.863
047 NZDUSD diciembre/2007 $5.000 $488
047 NZDUSD enero/2008 $3.000 $1.350
047 NZDUSD febrero/2008 $10.000 $664
047 NZDUSD marzo/2008 $3.000 $1.311
047 NZDUSD abril/2008 $3.000 $627
047 NZDUSD mayo/2008 $5.000 $1.032 mes de 35 días
047 NZDUSD junio/2008 $3.000 $484
047 NZDUSD julio/2008 ??????? No abre la 4a
047 NZDUSD agosto/2008 $3.000 $1.110
047 NZDUSD septiembre/2008 ?????? No abre la 6a
Promedio $886

La dicha continúa, pero debe haber un problema de programación en el Sabueso 047. Eso de que no abra la 4a o la 6a posición es anormal y hay que corregirlo...

O sea que ya viene en camino el Sabueso 048.

Pero ojo. A pesar del supuesto error, el Sabuecito 047 siempre gana...

(Aquí es donde la cosa se pone a mordisco. Eso de corregir errores de programación sí es complicado. Probar y probar hasta ver dónde está el error es la parte más difícil de la programación. Por lo menos para mi. Pero si ya lo he hecho 47 veces, pues qué más da hacerlo otra vez...)


lunes, 20 de junio de 2011

24. Premio de montaña

Querido lector:

Si lee esta línea le agradeceré que deje una nota haciéndomelo saber.

Gracias.

23. Presento mis disculpas

Las presento, y espero que las acepten, porque he releído hoy todo el blog y está plagado de errores mecanográficos y de faltas de ortografía, especialmente tildes. Y pensar que voy a corregir las entradas en pensar en falso. Y eso lo sabe cualquiera que me conozca. Pues así, contrahecho y todo, alcanza a entenderse la esencia del blog.

Un lector interesado en el tema del Sabueso podría pensar que mi ignorancia en el Forex es tan grande como lo es en mecanografía y ortografía.

Y yo le contestaría que tiene razón.

Y tratando de defender este ya descompuesto blog añadiría: Eppur si muove!

El billete en crescendo a causa del Sabueso, claro. Aunque los astro también...

(Pobres lectores que tienen que aguantar las tonterías del autor...)

;)

22. Resultados (2)

He hecho tantas pruebas y todas han sido de resultados tan similares, que andaba enredado anotando en un par los resultados de otro.


He tratado de hacer las pruebas tan metódicamente como me sea posible, pero como es un trabajo repetitivo y monótono, no me ha quedado más remedio que de vez en cuando meter la pata y equivocarme.

Los juiciosos lectores del blog pronto dirán algo así como: "¡En agosto de 2007 no fueron $519, sino $944!", Y yo diré: "Bueno, y yo dizque pensando que nadie la paraba bolas a este blog. Mejor que me corrijan. Más plata para la casa de Christine".


047 GBPUSD enero/2001 $3.000 $542
047 GBPUSD febrero/2001 $5.000 $1.274
047 GBPUSD marzo/2001 $3.000 $1.408
047 GBPUSD abril/2001 $3.000 $1.144
047 GBPUSD mayo/2001 $3.000 $885
047 GBPUSD junio/2001 $3.000 $1.649
047 GBPUSD julio/2001 $15.000 $915
047 GBPUSD agosto/2001 $3.000 $693
047 GBPUSD septiembre/2001 $15.000 $1.466
047 GBPUSD octubre/2001 $3.000 $1.229
047 GBPUSD noviembre/2001 $15.000 $1.198
047 GUSD diciembre/2001 $3.000 $688
047 GBPUSD enero/2002 $3.000 $562
047 GBPUSD febrero/2002 $3.000 $530
047 GBPUSD marzo/2002 $3.000 $284
047 GBPUSD abril/2002 $15.000 $425
047 GBPUSD mayo/2002 $3.000 $483
047 GBPUSD junio/2002 $15.000 $1.026
047 GBPUSD julio/2002 $15.000 $1.789
047 GBPUSD agosto/2002 $3.000 $1.701
047 GBPUSD septiembre/2002 $15.000 $1.194
047 GBPUSD octubre/2002 $3.000 $802
047 GBPUSD noviembre/2002 $15.000 $1.839
047 GBPUSD diciembre/2002 $15.000 $1.036
047 GBPUSD enero/2003 $3.000 $349
047 GBPUSD febrero/2003 $5.000 $978
047 GBPUSD marzo/2003 $5.000 $2.025
047 GBPUSD abril/2003 $3.000 $86
047 GBPUSD mayo/2003 $3.000 $248
047 GBPUSD junio/2003 $3.000 $98
047 GBPUSD julio/2003 $5.000 $2.381
047 GBPUSD agosto/2003 $5.000 $1.301
047 GBPUSD septiembre/2003 $3.000 $695
047 GBPUSD octubre/2003 $3.000 $241
047 GBPUSD noviembre/2003 $3.000 $192
047 GBPUSD diciembre/2003 $3.000 $443
047 GBPUSD enero/2004 $3.000 $255
047 GBPUSD febrero/2004 $3.000 $259
047 GBPUSD marzo/2004 $25.000 $4.083
047 GBPUSD abril/2004 $25.000 $3.886
047 GBPUSD mayo/2004 $3.000 $417
047 GBPUSD junio/2004 $10.000 $1.823
047 GBPUSD julio/2004 $5.000 $1.660
047 GBPUSD agosto/2004 $5.000 $1.597
047 GBPUSD septiembre/2004 $3.000 $58
047 GBPUSD octubre/2004 $3.000 $182
047 GBPUSD noviembre/2004 $3.000 $413
047 GBPUSD diciembre/2004 $3.000 $59
047 GBPUSD enero/2005 $25.000 $2.926
047 GBPUSD febrero/2005 $3.000 $263
047 GBPUSD marzo/2005 $5.000 $1.790
047 GBPUSD abril/2005 $3.000 $98
047 GBPUSD mayo/2005 $5.000 $1.429
047 GBPUSD junio/2005 $10.000 $921
047 GBPUSD julio/2005 $5.000 $2.452
047 GBPUSD agosto/2005 $3.000 $176
047 GBPUSD septiembre/2005 $10.000 $1.168 mes de 35 días
047 GBPUSD octubre/2005 $5.000 $1.003
047 GBPUSD noviembre/2005 $5.000 $1.807
047 GBPUSD diciembre/2005 $25.000 $1.587
047 GBPUSD enero/2006 $3.000 $309
047 GBPUSD febrero/2006 $3.000 $268
047 GBPUSD marzo/2006 $3.000 $597
047 GBPUSD abril/2006 $3.000 $1.632

Promedio $1.046

21. Resultados (1)

Bueno, lo prometido es deuda.

Aquí van los primeros resultados.

Los datos son de Alpari y el Metatrader es el de LiteForex. Los resultados con el Metratrader de Metaquotes son diferentes, pero con saldo positivo

Las líneas deben leerse así:

046 EURUSD junio/2002 $10.000 $1.060 mes de 35 días
significa que habiendo usado el Sabueso 046 en el par EURUSD en junio del 2002, y habiendo partido el mes con $3.000 pesos o centavos o dólares o unidades, hubo un momento en que tocó inyectar otros $7.000 para que las progresiones pudieran llevarse a cabo o para que el Sabueso resistiera las variaciones de precios, pero que al final se ganaron $1.060 unidades. Es decir que quedamos con $4.060 unidades y claro, devolvimos los $7.000 que tocó meter de más.

Y se me olvidaba decir que en ese mes la progresión se volvió alta los últimos días y tocó esperar cinco días más del siguiente mes para recoger la platica,

¿Complicado?

Naaaaaa....

046 EURUSD enero/2001 $3.000 $1.854
046 EURUSD febrero/2001 $3.000 $1.232
046 EURUSD marzo/2001 $3.000 $1.232
046 EURUSD abril/2001 $10.000 $1.442
046 EURUSD mayo/2001 $3.000 $617
046 EURUSD junio/2001 $10.000 $717
046 EURUSD julio/2001 $10.000 $546
046 EURUSD agosto/2001 $3.000 $547
046 EURUSD septiembre/2001 $25.000 $1.449
046 EURUSD octubre/2001 $3.000 $411
046 EURUSD noviembre/2001 $3.000 $592
046 EURUSD diciembre/2001 $3.000 $350
046 EURUSD enero/2002 $3.000 $660
046 EURUSD febrero/2002 $3.000 $293
046 EURUSD marzo/2002 $10.000 $417
046 EURUSD abril/2002 $3.000 $242
046 EURUSD mayo/2002 $3.000 $537
046 EURUSD junio/2002 $10.000 $1.060 mes de 35 días
046 EURUSD julio/2002 $10.000 $1.339
046 EURUSD agosto/2002 $10.000 $946
046 EURUSD septiembre/2002 $10.000 $901
046 EURUSD octubre/2002 $3.000 $208
046 EURUSD noviembre/2002 $3.000 $468
046 EURUSD diciembre/2002 $3.000 $418
046 EURUSD enero/2003 $10.000 $756
046 EURUSD febrero/2003 $10.000 $847
046 EURUSD marzo/2003 $3.000 $967
046 EURUSD abril/2003 $10.000 $1.641
046 EURUSD mayo/2003 $10.000 $1.753
046 EURUSD junio/2003 $10.000 $1.415
046 EURUSD julio/2003 $10.000 $956
046 EURUSD agosto/2003 $3.000 $917
046 EURUSD septiembre/2003 $10.000 $1.152
046 EURUSD octubre/2003 $10.000 $1.098
046 EURUSD noviembre/2003 $3.000 $772
046 EURUSD diciembre/2003 $10.000 $1.033
046 EURUSD enero/2004 $3.000 $180
046 EURUSD febrero/2004 $5.000 $982
046 EURUSD marzo/2004 $3.000 $2.302
046 EURUSD abril/2004 $10.000 $1.791
046 EURUSD mayo/2004 $3.000 $1.375
046 EURUSD junio/2004 $3.000 $488
046 EURUSD julio/2004 $3.000 $505
046 EURUSD agosto/2004 $500 $364
046 EURUSD septiembre/2004 $3.000 $665
046 EURUSD octubre/2004 $3.000 $1.036
046 EURUSD noviembre/2004 $10.000 $1.010
046 EURUSD diciembre/2004 $10.000 $1.586
046 EURUSD enero/2005 $10.000 $694
046 EURUSD febrero/2005 $10.000 $1.079
046 EURUSD marzo/2005 $10.000 $1.114
046 EURUSD abril/2005 $3.000 $1.022
046 EURUSD mayo/2005 $3.000 $625
046 EURUSD junio/2005 $3.000 $1.209
046 EURUSD julio/2005 $3.000 $1.394
046 EURUSD agosto/2005 $3.000 $739
046 EURUSD septiembre/2005 $3.000 $1.142
046 EURUSD octubre/2005 $10.000 $883
046 EURUSD noviembre/2005 $10.000 $1.285
046 EURUSD diciembre/2005 $10.000 $916 mes de 35 días
046 EURUSD enero/2006 $10.000 $965
046 EURUSD febrero/2006 $3.000 $606
046 EURUSD marzo/2006 $10.000 $838
046 EURUSD abril/2006 $3.000 $867
046 EURUSD mayo/2006 $10.000 $1.277
046 EURUSD junio/2006 $3.000 $796
046 EURUSD julio/2006 $10.000 $591
046 EURUSD agosto/2006 $3.000 $491
046 EURUSD septiembre/2006 $10.000 $458
046 EURUSD octubre/2006 $3.000 $472
046 EURUSD noviembre/2006 $3.000 $293
046 EURUSD diciembre/2006 $10.000 $664
046 EURUSD enero/2007 $3.000 $674
046 EURUSD febrero/2007 $10.000 $269
046 EURUSD marzo/2007 $10.000 $487
046 EURUSD abril/2007 $3.000 $195
046 EURUSD mayo/2007 $3.000 $258
046 EURUSD junio/2007 $10.000 $566
046 EURUSD julio/2007 $3.000 $335
046 EURUSD agosto/2007 $3.000 $678
046 EURUSD septiembre/2007 $3.000 $496
046 EURUSD octubre/2007 $15.000 $780
046 EURUSD noviembre/2007 Error 131 invalide trade volume
046 EURUSD diciembre/2007 $3.000 $969
046 EURUSD enero/2008 $3.000 $1.652
046 EURUSD febrero/2008 $15.000 $1.142 mes de 35 días
046 EURUSD marzo/2008 $5.000 $770
046 EURUSD abril/2008 $3.000 $2.350
046 EURUSD mayo/2008 $10.000 $855
046 EURUSD junio/2008 $3.000 $1.793
046 EURUSD julio/2008 $3.000 $1.483
046 EURUSD agosto/2008 $5.000 $1.588
046 EURUSD septiembre/2008 $3.000 $4.752
047 EURUSD octubre/2008 $35.000 $15.925 mes de 45 días
047 EURUSD noviembre/2008 $3.000 $6.603
047 EURUSD diciembre/2008 $5.000 $2.646
047 EURUSD enero/2009 $3.000 $3.748

Promedio $1.203

¿Cómo la ven?

Pero les recuerdo que no me crean. Prueben por ustedes mismos y no sólo con un par sino con todos.

Ya les iré mandando más pruebas. Pero todas son ganadoras...

:)

domingo, 19 de junio de 2011

20. Meter y sacar plata

Antes de los resultados quiero contarles cómo manejo la plata en mi cuenta de LiteForex.

Al principio estaba medio embolatado pues no sabía cómo añadir fondos y como hacer retiros de mi cuenta, pero un correo de Leonardo Espitia me mostró el camino.

Lo primero es que hay que abrir una cuanta con el broker. Eso es gratis.

Pero para meterle plata, me tocó abrir una cuanta en Liberty Reserve, que es como una especie de billetera virtual por medio de la cual uno puede pagar cosas por Internet.

Bueno, ¿y para meterle plata a Liberty Reserve?  Pues me tocó abrir otra cuenta en algo que se lama Ebuygold.

Bueno, el procesos es así: Yo me voy a una oficina de Western Union y con mis dolaritos le hago un envío a un señor que se lama Panpan Liu en la China.

¡Imposible olvidar ese nombre!

En Western Union no me pidieron ni la ciudad donde vive el señor Panpan. Nada, Sólo el nombre y el país. Panpan Liu, China. Cómo que no hay sino un sólo Panpan Liu entre los millones y millones de Chinos. :)

Y la plata me llegó a Ebuygold.

De ahí la pasé a Liberty Reserve. Esta transacción fue ya por Internet.

Y de Liberty Reserve la pasé a mi cuanta de LiteForex, también por Internet

Como me fue tan bien con el Sabueso, a los 15 días ya había ganado 2.000... centavos. :)

La cuenta, ya lo conté, era en centavos.

Así que para sacarlos hice el proceso inverso. De LiteForex a Liberty Reserve, pero como era tan poquito, más bien se los pasé a una cuanta de Juan David, mi hijo, para que el también empezara a operar con el Sabueso.

Esto lo hice varias veces.

Creo que ya les conté que con los aguaceros se fue la luz en mi casa y aparte de eso cometí el error de trasladar una plata a LiteForex desde Liberty Reserve (debe ser al contrario) y cuando resolví lo de la plata y llegó la luz, tenía apenas 120 centavos en la cuenta.

Conclusión, el Sabueso funciona siempre y cuando la computadora esté prendida. Si uno deja una cuanta sin Sabueso, pues lo más seguro es que le pase lo que me pasó a mi. Que quedé en calzoncillos.

 El método descrito es el que yo usé después de leer cien reseñas en la red para ver si don Panpan no era una rata y si los de Liberty Reserve no me iban a estafar.

Y resultó.

También hay métodos para manejar la plata con tarjetas de crédito y transferencias bancarias, pero yo como no tengo tarjeta de crédito, ni pienso tener, usé el método de Leonardo y me resultó super bien.

Chao.

viernes, 17 de junio de 2011

19. ¿Preguntas?

Ya dicho todo lo dicho no me queda más sino esperar que alguien tenga una duda.

El tema es un poco complicado si uno nunca ha tenido experiencia con el mercado de divisas, pero tampoco lo es tanto como para que llegue a ser incomprensible.

De aquí en adelante, para rematar el blog, casi que no me queda sino empezare a publicar los resultados de las pruebas.

Dejo abierto el blog para resolver las dudas que puedan tener.

Quedo a la escucha de alguna señal de vida.

jueves, 16 de junio de 2011

18. Los parámertos del Sabueso

Hasta aquí todos sabemos qué es el Sabueso, pero vale la pena hacer un recorderis para los que no quieren leer tooodo el  blog.

El Sabueso es un programa escrito en lenguaje MTL4 (parecido, dicen, a C++) y que corre en la plataforma de Forex que se llama Metatrader.

Hace transacciones automáticas y según la experiencia del autor del blog, permite tener ganancias de dinero en forma automática.

El Sabueso no es más que una serie de instrucciones de compra y venta de divisas de acuerdo a unos parámetros quye hemos esbozado aquí y que hoy vamos a explicar un poco mejor.

En la pantalla de abajo se ven lps parámetros específicos del Sabueso.



El primer parámetro, que como todos, se puede cambiar en la pantalla que aparece arriba, el primer parámetro digo, es el que yo llamo "Senal_de_Cambio" y que es la distancia en pips en que se abre la segunda posición (una venta).

¿Qué son pips, o posición, o venta?

¡Ome! Pero si eso lo debimos aprender hace rato en los videos que decían qué es Forex... Pero no importa, no es sino devolverse y listo.

Así que si el Sabueso hace la primera compra en, digamos, $115.28, la segunda transacción, que será una venta, se hace en $114.00.

Y la tercera 128/2 más arriba y la cuarta 128/2/2 abajo de esa última y así.


"Cierre_Primera" es la platica en la que se cierra la primera compra si el precio  va para arriba.

"Profit_de_Corte" es la plata que se recoge en todas las demás posiciones.

Debo aclarar aquí que cuando se llega al precio de "Cierre_Primera" o "Profit_de_Cortre", se cierran todas las posiciones abiertas y el ciclo vuelve a reiniciarse.

"Pro1" es el número de lotes con que se inician las progresiones y también, claro, indica el número de lotes de la primera compra.

¿No se acuerdan de qué son los lotes? Tampoco es problema. Un poco de repaso a los videos o una búsqueda en Google los sacará de dudas.


"Fraccion" y "Expon" indican cómo se desarrollará la progresión de la cantidad de lotes en las posiciones subsiguientes.

Ya vimos que "Senal_de_Cambio" indica dónde ocurrirán las nuevas transacciones.

Bueno, "Fraccion" y "Expon" nos indican de cuantos lotes será cada posición.

La ecuación para saber de cuántos lotes serán las siguientes posiciones es:

"Fraccion" * (numero de posición) elevada a la "Expon"

Simple, ¿cierto?

O sea que la segunda posición, que es una venta, se realizará 128 pips abajo de la primera y los lotes con que se hará esa venta serán de 0.1 X 2 a la 4.

Es decir, que la segunda posición es de 1.6 lotes.

Luego se alternarán las compras y las ventas en las misma progresión y en los precios que marque la formulita simple de los pips.

Eso es todo.

Para terminar, diré que en la pantalla que aparece arriba uno puede cambiar los parámetos cuando uno quiera.

Yo los he cambiado cien mil veces y la combinación que he encontrado más acertada es la que aparee arriba.

Usted, claro, puede experimentar como quieran con estos parámetros y si se animan a programar, también pueden experimentar con otros conceptos, mejorando el Sabueso o haciendo un  experto distinto.

Nada los detiene.

Pero el Sabueso es ganador. Pruébenlo. No pierden nada de nada. Tiempo, tal vez. Pero aparte de eso, nada.

Nota final de este artículo:

Revisando el código del Sabueso, me doy cuanta que los otes se calculan así:

Pro2= (MathCeil((MathPow(2,Expon) * Fraccion)*10))/10;
Pro3= (MathCeil((MathPow(3,Expon) * Fraccion)*10))/10;
Pro4= (MathCeil((MathPow(4,Expon) * Fraccion)*10))/10;
Pro5= (MathCeil((MathPow(5,Expon) * Fraccion)*10))/10;
Pro6= (MathCeil((MathPow(6,Expon) * Fraccion)*10))/10;
Pro7= (MathCeil((MathPow(7,Expon) * Fraccion)*10))/10;

O sea que la "Fraccion" simplemente se anula si uno la deja en 0.1

0.1 * 10 = 1

Jejeje...

Y sí. Esas líneas son parte del código del Sabueso que hasta hoy nadie me ha pedido por correo electrónico, como quedamos hace un poco de entradas.

Chao.

NOTA DE 2015
(El código de la última versión del Sabueso está en la entrada 34 de este blog. Sólo hay que compilarlo y ponerlo a trabajar. Sería bueno, creo, seguir leyendo este blog para entender de qué se trata y como funciona.)

martes, 14 de junio de 2011

17. Backtesting - Pruebas con datos históricos (3)

Es bastante dispendioso hacer las simulaciones con datos históricos.

Yo las hago tomando mes por mes. Empiezo con $3.000 y si el resultado es positivo, lo escribo como "$3.000 - $356", bueno, suponiendo que ese mes se ganaron $356.

Pero si hay pérdida con esos $3.000 entonces aumento el capital a $5.000, luego a $10.000, $15.000, $20.000 y así...

Por ejemplo si hay que aumentar capital para sostener una progresión o para aguantar una oscilación de precios, entonces el resultado queda consignado así: "$10.000 - $647", con el dinero en negrita.

Bueno, cuando termine mis simulaciones les estaré mandando el archivo de resultados.

Durante varios meses he hecho todo tipo de pruebas y siempre ha resultado ganador el Sabueso. Lo que pasa es que ahora lo estoy haciendo metódicamente y estoy registrando todos los resultados...

Supongo que a estas alturas quien se haya tomado el trabajo de leer estas 17 entradas del blog, estará en capacidad de hacer las pruebas por sí mismo y podrá hacer sus propias tablas de resultados.

Y los resultados deberán ser iguales a los míos pues siempre que se usan los mismos datos y el Metatrader del mismo broker, los resultados por fuerza deben se iguales.

Es curioso observar que para diferentes brokers pero iguales datos, los resultados son diferentes. No mucho pero sí diferentes.

Yo estoy haciendo simulaciones con el Metatrader bajado de MetaQuots y con el que bajé de LiteForex y los resultados, como ya dije, son algo diferentes.

Eso sí, todos ganadores con el Sabueso.

Hasta la próxima en que explicaré los parámetros del Sabueso

16. Backtesting - Pruebas con datos históricos (2)

Otro sitio muy bueno para averiguar cómo se hacen las pruebas con datos históricos es http://thetrademachine.com/blog/2009/09/29/set-up-metatrader-history-data-get-90-backtesting-quality/

Ahí baja uno los datos del broker Alpari, que es bien reputado.

¿Problemas con el inglés?

Se puede usar el traductor de google para que le salve a uno la vida. No es 100% efectivo,pero si da una buena idea de qué trata el texto a traducir. Esta en http://translate.google.com/?tab=mT


Nota: He nombrado varios sitios en inglés y doy la impresión de que hablo inglés mejor que Shakespeare. La verdad es que hablo un inglés muellero y me toca hablarlo con diccionario (o traductor) en mano.

Pero mi inglés chambón me sirve para entender todas esas vainas que aparecen en ese idioma en la red...

Fin de la nota.

Ya con la información sobre las pruebas con datos históricos, pueden empezar a hacerlas.

Por mi parte hace rato estoy en eso y los resultados son positivos. Claro que ayer borré por accidente toda la información que había recogido y me toca empezar otra vez.

Ya les diré dónde se puede consultar esa información si es que les da pereza hacer las pruebas y quieren que la platica les caiga sin ningún esfuerzo.

(Lo reconozco. La última frase es bastante, pero bastante maliciosa): :)

domingo, 12 de junio de 2011

15. Backtesting - Pruebas con datos históricos (1)

Una de las cosas buenas del Metatrader es que permite hacer pruebas de los expertos con datos anteriores.

Las pruebas deben hacerse con datos fiables.

Sobre cómo descargar esos datos y cómo hacer las pruebas, hay muchos sitios en Internet. Una vez más, tengo que lamentarlo, los mejores están en inglés. Incluso los mejores videos de Youtube que explican cómo se hacen las pruebas con datos históricos, están en inglés.

El proceso se describe en http://www.earnforex.com/blog/2008/01/quality-metatrader-historical-data/ , aunque los datos de Alpari por ahora no están disponibles para se bajados.

Un sitio bueno donde se explica de dónde bajar los datos es http://www.easyexpertforex.com/backtesting-optimization.html

Y los datos históricos se pueden bajar, según el enlace anterior, de http://www.forextester.com/data/datasources.html

Para no dejar a los que no hablan inglés sin información, este sitio en español sirve también: http://www.efxto.com/articulos-forex/2027-como-realizar-un-backtesting-en-metatrader-4-de-calidad

Información hay toda la que uno quiera para quien quiera buscarla. El todo está en estudiarla, bajarla y probar por uno mismo.

Nota: Hasta hoy nadie me ha pedido el Sabueso. La última versión es la 046. Con un correo que me manden la tendrán de inmediato.

NOTA DE 2015
(El código de la última versión del Sabueso está en la entrada 34 de este blog. Sólo hay que compilarlo y ponerlo a trabajar. Sería bueno, creo, seguir leyendo este blog para entender de qué se trata y como funciona.)

14. "El Sabueso" (3)

Los problemas del Sabueso residen en la naturaleza del mercado de divisas que exige que haya una reserva de dinero para poder hacer una compra o una venta.

Esa reserva de plata para poder operar es lo que se lama el margen.

Este tema del margen es bien interesante, pues si uno no tiene suficiente dinero de reserva, simplemente no puede resistir las oscilaciones del mercado y pierde la platica invertida. Además, como el Sabueso usa una progresión exponencial a medida que él, en forma automática, va abriendo compras y ventas, entonces el requerimiento de margen también aumenta. No en forma exponencial por ciertas reglas del Forex, pero aumenta hasta el punto que hay que hacer algo para manejarlo si no se quiere perder dinero.

El Sabueso casi nunca necesita de mucha plata para funcionar. Pueden pasar meses sin que uno tenga que poner más de 3.000 dólares.

¡Leyó bien! :)

Todas mis pruebas las he hecho con 3.000 dólares y, como digo, de vez en cuando hay que poner más plata. Y hay que ponerla para poder tener margen cuando los precios van en contra nuestra y la progresión exponencial del Sabueso entra a salvar la situación

¿Cuánta plata "extra" hay que poner a parte de esos 3.000 dolares?

Cerca de 20.000 dólares más. Es decir, que si uno tiene 25.000 dólares puede operar con bastante tranquilidad con el Sabueso.

¡Miércoles! (dirá en este punto el amable lector que ha tenido la infinita paciencia de seguirnos hasta aquí). Y continuará diciendo: "Eso es mucha plata. El tal Sabueso no es para mi...".

(Nota de 2015. Yo solucioné en problema así: en lugar de tener una cuenta en dólares, abrí una en centavos con Liteforex. Así todo funcionó de maravilla, tuve mis 25.000 "unidades" y no recurrí a nadie. En realidad usé cerca de 450 dólares y quedé más holgado.)

Y se equivocará de cabo a rabo si piensa así, pues hay una solución. Algo rara, pero existe. O tal vez hay muchas soluciones, sólo que yo por ahora veo apenas una.

Bueno, en realidad aparte de la solución que tengo en mente, existen muchas otras. Pedirle prestado a alguien, asaltar un banco, hipotecar la casa...

Pero tales extremos no son de mi gusto y creo que tampoco lo serán del paciente lector.

Recordemos que generalmente no se necesita esa cantidad de dinero. Y se ha de saber que cuando se necesita, la premura será de poco tiempo. Digamos que de uno o dos días o algo así.

Esto quiere decir que si dos personas usan el Sabueso, la mayoría del tiempo bastará con que cada una tenga en su cuenta 3.000 dólares. 6.000 en total. Pero casi todo el tiempo se necesitará en realidad mucho menos para que el Sabueso funcione. Digamos unos 500 dólares o menos. Así que la mayoría del tiempo cada uno tendrá una disponibilidad de 2.500 dólares. Sí señores, 5.000 dólares disponibles si son dos personas las que están operando.

Y si son 10 personas, pues  entonces 2.500 x 10 = 25.000. Voilà! ¡Solucionado el problema!

Y si hay más personas y en lugar de tener 3.000 dólares para invertir con el Sabueso se tiene 5.000, entonces... bueno. Se resolvería con creces el problema del margen.

¿No le suena la idea del grupo de inversores solidarios? Entonces ponga usted toda la plata o pídala prestada cuando la necesite y usted solito puede operar sin problemas en el Forex con el Sabueso sin ningún problema.

Nosotros, los pobres, tendremos que recurrir a soluciones como la del "grupo de inversores solidarios", o algo parecido...

Para terminar esta entrada diré que usted mismo debe determinar que todo lo que digo es verdad. No debe creer ni un milímetro de lo que yo digo.

¿Qué tal que yo sea un mentiroso compulsivo, o un loco que tiene la manía de hacerle perder el tiempo a otros con blogs engañosos?

Entonces, para saber que lo que digo es verdad o mentira, usted mismo tiene que hacer lo siguiente:

1. Aprender a hacer "back-testing" con el Sabueso en el Metatrader. (De eso tratará mi siguiente entrada)

2. Hacer pruebas en tiempo real con el Sabueso en una cuenta demo.

(Hasta aquí invirtiendo sólo tiempo).

3. Probar con una cuenta en centavos de dolar. Esto para que no quede en la ruina si la realidad resulta diferente de las pruebas.

4. Meter plata de verdad y esperar que el Sabueso le vaya produciendo dinero en forma automática.

En fin, que no hay que tragarse entera ni una sola palabra de este blog. Que lo que hay que hacer, creo, es experimentar por uno mismo si en verdad tanta dicha es verdad.

Y si tanta dicha es verdad, como creo yo,entonces cada uno sabrá qué hacer con la información que tiene en su cabeza.

Claro, sin olvidarse de Christine Theano...