Ayuda a la codificación - página 22

 

gracias por tu respuesta Robert

ese tablero sería perfecto, pero no he encontrado ninguno con bb squeeze, y no tengo ni idea de cómo cambiar los tableros existentes para detectarlos en bb squeeze

mi propia idea era muy simple se veía así:

int Current;

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

//| expert start function |

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

int start() {

int USDCHF, GBPUSD, EURUSD, AUDUSD;

double upperBB_USDCHF = iBands("USDCHF", 0, 20, 2, 0, PRICE_CLOSE, MODE_UPPER, Current + 0);

double upperKC_USDCHF = iCustom("USDCHF", 0, "Keltner Channels", 20, 0, Current + 0);

double lowerBB_USDCHF = iBands("USDCHF", 0, 20, 2, 0, PRICE_CLOSE, MODE_LOWER, Current + 0);

double lowerKC_USDCHF = iCustom("USDCHF", 0, "Keltner Channels", 20, 2, Current + 0);

if(upperBB_USDCHFlowerKC_USDCHF)

Comment(": BollingerSqueeze for USDCHF");

return(0);

}

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

esto es sólo para varios pares diferentes, pero como he dicho el 'Comentario' se actualiza todo el tiempo

edit: ok lo he arreglado, ya no se necesita ayuda

 
crexsking:
Hola Mladen n todos los compañeros,

Yo comercio patrón gráfico con "gran movimiento de la vela" (Open[0]-Close[0] > 32 pips o viceversa) n i comercio eurusd (H1 en FXOpen <--- más preciso tamaño de la vela n patrón)...

Por lo tanto, no había absolutamente ningún indicador. Sólo la filosofía de comercio.

Intento codificar un EA sobre la lógica pero creo que falta algo ahí... ¡¡¡Ayuda por favor!!!

¿Qué "algo que falta" que quiero decir:

-Quiero que antes de la "gran vela" suceda... el sistema calcula las últimas 4 velas < 20pips (apertura - cierre o viceversa) para cada vela.

Mientras que.. lo que sucedió es mi codificación mql4 no lee las últimas 4 velas antes de la vela grande.. im tan confiused..

Lo que debería suceder es:

1. Tiempo para la vela grande :-

- 3pm,4pm,5pm(London Open) ..n.. 8pm,9pm,10pm(US Open) <---- todas las horas dadas como malayo, así que cambia tu ordenador a GMT 8.00++

2. Tamaño de vela grande :-

- 32 pips n por encima ( si sideway antes son 20 pips n por debajo )

- 42 pips n por encima ( si sideway antes son 20 pips n por encima )

3. Mercado lateral :-

- por debajo de 50 pips durante un mínimo de 4 horas n debe tener un color diferente.

4. Mercado nulo o peligroso (cancelación de mercado): <--- no hay operación si esta condición de mercado ocurre

1. 1. Mercado lateral antes de la apertura de Londres B,B,B,B hacia arriba o S,S,S,S hacia abajo. <--- B,B,B,B = Velas Comprar, comprar, comprar, comprar... continuamente

2. Cierre de velas grandes en el máximo de la zona diaria. <---- 75 pips mínimo alto bajo

3. La vela grande ocurre a las 10 pm. <----- GMT 8++ o tiempo de Malasia

4. Vela grande muy grande y más de 80 pips.

5. Hay velas de más de 50 pips antes de la apertura de Londres.

6. La forma de un mercado alcista en la sesión de Tokio y gran vela alcista en la apertura de Londres (viceversa para la bajada)

Los problemas de codificación adjuntan :-

extern double trigger = 32;

extern double sideway = 20;

extern int hour1 = 6;

extern int hour2 = 7;

extern int hour3 = 8;

extern int hour4 = 9;

extern int hourCB = 10;

extern int hourTRADE = 11;

extern int TradeTimeStart = 0;

extern int TradeTimeEnd = 23;

//---Variables

double currentPrice = 0.00000;

static datetime barStart;

string openTrades = "none";

int ticket;

int i = 0;

double lotSize;

double CBB = 0;

double CBS = 0;

double CBBT;

double CBST;

double PreviousCBB;

double PreviousCBS;

double CS1B;

double CS2B;

double CS3B;

double CS4B;

double CS5B;

double CS6B;

double CS1S;

double CS2S;

double CS3S;

double CS4S;

double CS5S;

double CS6S;

double CS1BT;

double CS2BT;

double CS3BT;

double CS4BT;

double CS1ST;

double CS2ST;

double CS3ST;

double CS4ST;

double PreviousCS1B;

double PreviousCS2B;

double PreviousCS3B;

double PreviousCS4B;

double PreviousCS1S;

double PreviousCS2S;

double PreviousCS3S;

double PreviousCS4S;

double GroupSW1B;

double GroupSW2B;

double GroupSW3B;

double GroupSW4B;

double GroupSW5B;

double GroupSW6B;

double GroupSW1S;

double GroupSW2S;

double GroupSW3S;

double GroupSW4S;

double GroupSW5S;

double GroupSW6S;

string permit = "suspended";

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

//| expert initialization function |

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

int init()

{

//----

//----

return(0);

}

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

//| expert deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

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

//| expert start function |

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

int start(){

CBB=(Close[1]-Open[1])/Point;

CBS=(Open[1]-Close[1])/Point;

CBBT=(hourCB==Hour());

CBST=(hourCB==Hour());

PreviousCBB = (CBB == CBBT);

PreviousCBS = (CBS == CBST);

CS1B=(Close[7]-Open[7])/Point;

CS2B=(Close[6]-Open[6])/Point;

CS3B=(Close[5]-Open[5])/Point;

CS4B=(Close[4]-Open[4])/Point;

CS5B=(Close[3]-Open[3])/Point;

CS6B=(Close[2]-Open[2])/Point;

CS1S=(Open[7]-Close[7])/Point;

CS2S=(Open[6]-Close[6])/Point;

CS3S=(Open[5]-Close[5])/Point;

CS4S=(Open[4]-Close[4])/Point;

CS5S=(Open[3]-Close[3])/Point;

CS6S=(Open[2]-Close[2])/Point;

CS1BT=(hour1==Hour());

CS2BT=(hour2==Hour());

CS3BT=(hour3==Hour());

CS4BT=(hour4==Hour());

CS1ST=(hour1==Hour());

CS2ST=(hour2==Hour());

CS3ST=(hour3==Hour());

CS4ST=(hour4==Hour());

PreviousCS1B = (CS1B == CS1BT);

PreviousCS2B = (CS2B == CS2BT);

PreviousCS3B = (CS3B == CS3BT);

PreviousCS4B = (CS4B == CS4BT);

PreviousCS1S = (CS1S == CS1ST);

PreviousCS2S = (CS2S == CS2ST);

PreviousCS3S = (CS3S == CS3ST);

PreviousCS4S = (CS4S == CS4ST);

GroupSW1B = (CS3B<sideway&&CS4S<sideway&&CS5B<sideway&&CS6S=trigger);

GroupSW1S = (CS3S<sideway&&CS4B<sideway&&CS5S<sideway&&CS6B=trigger);

currentPrice = iClose(NULL,0,0);

Comment("Price Continuation\n",

"Status: ",status()

);

//----Trade Algorithm

//trade hours value...

if(TradeTimeStart <= Hour() && Hour() <= TradeTimeEnd){

if(openTrades == "none" && permit == "approved"){

requestLongOrder();

requestShortOrder();

}

else{

requestPermit();

}

}

if(openTrades == "long"){

manageLongTrade();

}

if(openTrades == "short"){

manageShortTrade();

}

return(0);

}

//---FUNCTIONS---

//--

void requestLongOrder(){

if(hourTRADE==Hour() && GroupSW1B){

//--

Lots = CalcLots ();

ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,3,currentPrice-stopLoss,currentPrice+takeProfit,"My order ",06010,0,Green);

if(ticket<0){

//add email/sms alert here with GetLastError();

}

if(ticket>0){

openTrades = "long";

permit = "suspended";

}

}

}

void requestShortOrder(){

if(hourTRADE==Hour() && GroupSW1S){

//--

Lots = CalcLots ();

ticket = OrderSend(Symbol(),OP_SELL,Lots,Bid,3,currentPrice+stopLoss,currentPrice-takeProfit,"My order ",06010,0,Red);

if(ticket<0){

//add email/sms alert here with GetLastError();

}

if(ticket>0){

openTrades = "short";

permit = "suspended";

}

}

}

* lo que debería suceder como captura de pantalla adjunta.

Por favor, ayuda...

Gracias...

Saludos,

crexsking

Hola Crexsking,

Lo único que se me ocurre es que tal vez necesites convertir para el broker de 5 dígitos, después de iniciar pon algo así

double pipMultiplier = 1; (antes de init)

int inicio()

{

si (Dígitos==3 || Dígitos==5)

pipMultiplier = 10;

si no pipMultiplier = 1;

Y luego después de cada Punto algo así Punto*pipMultiplier.

 

¿Cómo se resolvieron los comentarios?

Deorn:
Gracias por tu respuesta Robert

un tablero así sería perfecto, pero no he encontrado ninguno con bb squeeze, y no tengo ni idea de cómo cambiar los tableros existentes para detectarlos en bb squeeze

mi propia idea era muy simple se parecía a esto:

========

eso es sólo para varios pares diferentes, pero como he dicho el 'Comentario' refresca todo el tiempo

edit: ok lo he arreglado, ya no se necesita ayuda

Hola Deorn,

Me alegro de que hayas resuelto tu problema. ¿Te importaría compartir lo que hiciste para corregir el "comentario" que se refresca...?

¡Que te diviertas con tu código...!

Robert

 
cosmiclifeform:
Hola Deorn

Me alegro de que hayas resuelto tu problema. ¿Te importaría compartir lo que hiciste para corregir el refresco del "comentario"?

¡Que te diviertas con tu codificación...!

Robert

Lo hice con 'objectcreate' como dijiste

Lo realicé para los timeframes M5 a mensual en 10 pares diferentes:

Keltner Canales son necesarios con el nombre exacto 'Canales Keltner', elijo la configuración 20 con el factor 1.5

ambos son dos indicadores normales

Yo elegiría una ventana en blanco para ponerlo

y lo siento por la programación fea es mi primer indicador propio, pero hace el trabajo

saludos

Archivos adjuntos:
 
mrtools:
Hola Crexsking,

Lo único que se me ocurre es que tal vez tengas que convertir para el broker de 5 dígitos, después de iniciar pon algo así

double pipMultiplier = 1; (antes de init)

int inicio()

{

si (Dígitos==3 || Dígitos==5)

pipMultiplier = 10;

si no pipMultiplier = 1;

Y después de cada Punto algo como esto Punto*pipMultiplicador.

Hola mrtools n gracias...

Lo haré pero antes puedo preguntar... ¿cuál es la relación para convertirlo con corredores de 5 dígitos?

Quiero decir... antes de esto, el sistema no puede reconocer la vela alcista o bajista en las últimas 4 velas del mercado lateral.

¿Si pongo este código, el sistema lo reconocerá?

Perdón por mi pobre inglés...

saludos,

crexsking

 
crexsking:
Hola mrtools n gracias...

Lo haré pero antes puedo preguntar... ¿cuál es la relación para convertirlo con corredores de 5 dígitos?

Quiero decir... antes de esto, el sistema no puede reconocer velas alcistas o bajistas en las últimas 4 velas del mercado lateral.

¿Si pongo este código, el sistema lo reconocerá?

Perdón por mi pobre inglés...

saludos,

crexsking

Crexsking, lo llevará a pips así que si por ejemplo tienes .91135 para la apertura y .90685 para el cierre la diferencia es .0045 si estás en un broker de 5 dígitos el punto sería igual a 450 porque está dividido por .00001 pero si usas la conversión lo hace correctamente 45 pips, porque entonces estás dividiendo por .0001 o .00001 x 10.Y en cuanto a reconocer la vela alcista o bajista realmente no puedo decir porque no veo nada más malo en tu código.

 

Codificación de Big Player.. ayuda por favor...

\\\---- Editado

Ok hecho...

Problema resuelto.

saludos,

crexsking

 

Necesito ayuda

Hola para todos los maestros de la codificación, necesito su ayuda por favor :

¿Qué pasa con la codificación si quiero crear líneas horizontales los límites superior e inferior en el grupo de la vela (cerrar - abrir) es pequeño en valor. Valor (close - open)*100000 = sin polaridad y siempre positivo. Mi número de vela de contenido externo.

Ejemplo:

extern int (close - open)*100000 = 10; // Su media (close - open) <= 10

extern int Número de vela máximo = 3;

"Límite superior de la línea horizontal" = tomado de la apertura/cierre más alto inherente al grupo

"Límite inferior de la línea horizontal" = tomado de la apertura/cierre más alto inherente al grupo

Un saludo,

Gracias

Archivos adjuntos:
 

...

Me temo que no entiendo exactamente lo que quieres decir. así que responder sólo una parte de su pregunta.

Si multiplicas la diferencia de un símbolo de 5 dígitos en un broker de 5 dígitos por 100000 entonces vas a obtener el valor deseado pero si el símbolo es por ejemplo uno de los cruces del JPY vas a obtener valores que superan con creces esos valores. Además, en un broker de 4 dígitos también vas a tener valores más grandes. Para evitar esto la mejor manera es calcular la diferencia en pips. Esta es la forma de hacerlo:
double pipMultiplier = 1;

if (Digits==3 || Digits==5) pipMultiplier = 10;

//

//

// calculate the difference in pips

//

//

double difference = MathAbs((Close[shift] - Open[shift])/(Point*pipMultiplier));[/PHP]

Y siempre será en pips independientemente del símbolo o corredor

Como mínimo y máximo puedes encontrar los valores más bajos y más altos de un rango de barras con un código como este (este ejemplo está configurado para buscar en un rango de 3 barras como estás hablando) :
[PHP]

double

highest = High;

double lowest = Low;

paijowijaya:
Hola para todos los maestros de la codificación, necesito su ayuda por favor :

¿Qué pasa con la codificación si quiero crear líneas horizontales los límites superior e inferior en el grupo de la vela (cerrar - abrir) es pequeño en valor. Valor (close - open)*100000 = sin polaridad y siempre positivo. Mi número de vela de contenido externo.

Ejemplo:

extern int (close - open)*100000 = 10; // Su media (close - open) <= 10

extern int Número de vela máximo = 3;

"Límite superior de la línea horizontal" = tomado de la apertura/cierre más alto inherente al grupo

"Límite inferior de la línea horizontal" = tomado de la apertura/cierre más alto inherente al grupo

Un saludo,

Gracias
 
mladen:
Me temo que no entiendo exactamente lo que quieres decir. así que contestando sólo una parte de tu pregunta. Si multiplicas la diferencia de un símbolo de 5 dígitos en un broker de 5 dígitos por 100000 entonces vas a obtener el valor deseado pero si el símbolo es por ejemplo uno de los cruces del JPY vas a obtener valores que superan con creces esos valores. Además, en un broker de 4 dígitos también vas a tener valores más grandes. Para evitar esto la mejor manera es calcular la diferencia en pips. Esta es la forma de hacerlo:
double pipMultiplier = 1;

if (Digits==3 || Digits==5) pipMultiplier = 10;

// calculate the difference in pips

double difference = MathAbs((Close[shift] - Open[shift])/(Point*pipMultiplier));[/PHP]

:
[PHP]double highest = High;

double lowest = Low;

Gran sorpresa estoy muy feliz de que usted responde a mi pregunta Maestro Mladen,

Pero lo siento todavía estoy confundido, ¿podría dar la codificación completa? Valor * 100000 me refiero a ser fácil en las lecturas, no 0.0002 (4 dígitos detrás de la coma), pero si usted tiene una manera más fácil, voy a seguir su camino. En esencia, cuando se encuentran tres velas (la zona de equilibrio o compradores = vendedores o zona de camino lateral, cada TF su diferente número de velas) que es pequeño (su valor se toma de la diferencia entre Cerrar - Abrir) quiero dibujar una línea horizontal al igual que la imagen que he subido. Así conozco la oferta y la demanda en el gráfico con la ayuda de la línea. ¿O hay algún indicador de este tipo que tengáis?

Mis mejores deseos,

Gracias Maestro Mladen

Razón de la queja: