Ayuda a la codificación - página 281

 
mladen:
stevenpun Dices que la compra tiene 0.1 lote + 0.2 lote y la venta debe ser 0.4 lotes. ¿Te importaría aclararlo?

Hola mladen , lo siento por la respuesta tardía .

Porque he estado enfermo durante unos días.

He hecho una imagen

Por ejemplo, cuando la compra tiene 2 ordenes abiertas (0.1 Lote + 0.2 Lote), pero de repente el tren ha cambiado a venta.

El ea abrirá una orden de venta por 0.1 lote, pero yo quiero que se abra por 0.4 lote.

¿Es posible modificarlo?

Archivos adjuntos:
lot_explain.jpg  121 kb
 
hermes:
Hola de nuevo,

Intenté usar lo anterior con un comentario pero solo mostraba el Max. ¿Puede ayudarme con dos funciones? Una que muestre la línea de precio inmediata por encima de la oferta y la segunda la línea por debajo de la oferta. Gracias.

Aquí está el código.

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

//| SimpleGrid.mq4+

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

#include

#include

#property strict

//variables exportadas

extern string GridStartingPrice = " Precio inicial para colocar las líneas ";

extern double GSP = 0.0

extern int GR = 5;

extern double GridStep = 5;

extern color CGL = Oro

extern color BGL = Verde

extern color SGL = Rojo;

extern bool ClearAllObjects = False;

// variables locales

double PipValue=1; // esta variable está aquí para soportar corredores de 5 dígitos

bool Terminated = false

string LF = "\n"; // utilícelo en bloques personalizados o de utilidad donde necesite saltos de línea

int NDigits = 4; // se utiliza principalmente para NormalizeDouble en bloques de tipo Flex

int ObjCount = 0; // cuenta todos los objetos creados en el gráfico, permite la creación de objetos con nombres únicos

int current = 0;

int init()

{

NDigits = Dígitos;

if (false) ObjectsDeleteAll(); // borrar el gráfico

Comment(""); // borrar el gráfico

return(0);

}

// Inicio del experto

int inicio()

{

si (Bares < 10)

{

Comentario("No hay suficientes barras");

return (0);

}

if (Terminado == true)

{

Comment("EA Terminado");

return (0);

}

OnEveryTick7();

return (0);

}

void OnEveryTick7()

{

PipValue = 1;

if (NDigits == 3 | NDigits == 5) PipValue = 10;

CentreGridLine();

}

void CentreGridLine()

{ si (ObjectFind("CGL") == (-1) )

{

{

string objName = "CGL" ;

ObjectCreate(objName, OBJ_HLINE, 0, Time[0],GSP);

ObjectSet(objName, OBJPROP_PRICE1, GSP);

ObjectSet(objName, OBJPROP_COLOR,CGL);

}

TradeLine();

UprBnd();

LwrBnd();

}

}

void TradeLine()

{

int i

double GridStep1= (GridStep*2);

double BGSP= (GSP+((GridStep/2)*PipValue*Point)) ;

double SGSP= (GSP-((GridStep/2)*PipValue*Point))

double BBGSP= (BGSP-((GridStep*(GR))*PipValue*Point)) ;

doble SSGSP= (SGSP+((GridStep*(GR))*ValorPip*Punto));

{

for(i=0; i<GR;i++)

{

SGL("Vender "+i,BBGSP+GridStep1*i*PipValue*Point);

}

}

{

for(i=0; i<GR;i++)

{

BGL("Comprar "+i,SSGSP-GridStep1*i*PipValue*Point);

}

}

}

void BGL(string objName, double price)

{

ObjectCreate(objName, OBJ_HLINE, 0, 0, price);

ObjectSet(objName, OBJPROP_STYLE, STYLE_SOLID);

ObjectSet(objName, OBJPROP_WIDTH, 1);

ObjectSet(objName, OBJPROP_COLOR, BGL);

}

void SGL(string objName, double price)

{

ObjectCreate(objName, OBJ_HLINE, 0, 0, price);

ObjectSet(objName, OBJPROP_STYLE, STYLE_SOLID);

ObjectSet(objName, OBJPROP_WIDTH, 1);

ObjectSet(objName, OBJPROP_COLOR, SGL);

}

void UprBnd()

{ if (ObjectFind("UPRBND") == (-1) )

{

double BGSP= (GSP+((GridStep/2)*PipValue*Point)) ;

double price= (BGSP+((GridStep*(GR))*PipValue*Point)) ;

string objName = "UPRBND" ;

ObjectCreate(objName, OBJ_HLINE, 0, Time[0], price );

ObjectSet(objName, OBJPROP_PRICE1,price);

ObjectSet(objName, OBJPROP_COLOR, DodgerBlue);

ObjectSet(objName, OBJPROP_WIDTH,3);

}

}

void LwrBnd()

{ if (ObjectFind("LWRBND") == (-1) )

{

double SGSP= (GSP-((GridStep/2)*PipValue*Point));

double price= (SGSP-((GridStep*(GR))*PipValue*Point));

string objName = "LWRBND" ;

ObjectCreate(objName, OBJ_HLINE, 0, Time[0], price );

ObjectSet(objName, OBJPROP_PRICE1,price);

ObjectSet(objName, OBJPROP_COLOR, Tomate);

ObjectSet(objName, OBJPROP_WIDTH, 3);

}

}

int deinit()

{

if (ClearAllObjects) ObjectsDeleteAll();

return (0);

}

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

Hermes

¿Puedes adjuntar el archivo mq4?

 
mladen:
Hermes ¿Puedes adjuntar el archivo mq4?

Aquí está. Gracias

Archivos adjuntos:
simpleg.mq4  4 kb
 

Hola,

necesito ayuda con un Ea que he hecho, está relacionado con 2 medias móviles y 2 marcos temporales diferentes para filtrar la tendencia, me gustaría añadir un indicador RSI para filtrar las operaciones, configurar por ejemplo RSI periodo 8 nivel 50, si es mayor que el nivel 50 del RSI al cruzar abrimos solo orden de mercado de venta, si es menor que el nivel 50 del RSI al cruzar abrimos solo orden de mercado de compra. Adjunto el Ea, al principio estaba realted a keltnerchannels, pero ahora quiero sólo para ser utilizado como Ma1 y Ma2.

¿Puede alguien ayudarme con estos cambios?

Gracias

Archivos adjuntos:
 
hermes:
Aquí está. Gracias

Hermes

Pruebe esto: simpleg_1.mq4

Archivos adjuntos:
simpleg_1.mq4  6 kb
 
daniel1983:
Hola,

Necesito ayuda con un Ea que he hecho, está relacionado con 2 medias móviles y 2 plazos diferentes para filtrar la tendencia, me gustaría añadir un indicador RSI para filtrar las operaciones, configurar por ejemplo RSI periodo 8 nivel 50, si es mayor que el nivel 50 del RSI al cruzar abrimos solo orden de mercado de venta, si es menor que el nivel 50 del RSI al cruzar abrimos solo orden de mercado de compra. Adjunto el Ea, al principio estaba realted a keltnerchannels, pero ahora quiero sólo para ser utilizado como Ma1 y Ma2.

¿Puede alguien ayudarme con estos cambios?

Gracias

daniel1983

Es casi seguro que nunca obtendrás cruces de mas y rsis al mismo tiempo (es decir - casi nunca obtendrás señales). Pruébalo: haz un indicador sencillo que haga lo que describes y verás qué raro es que se den esas condiciones al mismo tiempo

 
mladen:
daniel1983 Es casi seguro que nunca tendrás cruces de mas y rsis al mismo tiempo (es decir - casi nunca tendrás señales). Pruébalo: haz un indicador sencillo que haga lo que describes y verás que rara vez se dan esas condiciones al mismo tiempo

Hola Mladen,

Quiero decir

- en cualquier nivel entre 0 y 50 sólo vender

- en cualquier nivel entre 50 y 100 sólo comprar,

no en este mismo punto de intersección, el cruce puede ser en cualquier nivel (43, 41, 18, 25) para órdenes de mercado de compra, confirmando con la tendencia del marco de tiempo superior. He probado esto y cerca del 80% de las órdenes abiertas parece que con este filtro no se abrirán en sentido contrario.

Ahora mismo el Ea abre orden de compra cuando el cruce está iniciando una tendencia bajista, con este filtro en el 80% de los casos filtrará este cruce sin entrar la orden en este punto. donde esos Ma cruzan.

En este Ea he introducido un timeframe superior, pero he hecho pruebas con mejores resultados utilizando un timeframe inferior para filtrar la tendencia.

Adjunto una imagen de un ejemplo de test configurado:

Para el EURUSD

En este caso estoy usando EMA 2 y EMA 67, y RSI (8) timeframe 1min y Hitimeframe 5min, en este caso tienes una orden de mercado de compra que no es rentable, esta orden de mercado de compra ocurre en el cruce de EMa's pero con RSI en un nivel inferior a 50.

Luego tiene una orden de mercado de venta que se abre en los cruces pero con el RSI por debajo de 50, y esta orden es la orden de mercado correcta que quiero filtrar de todas las señales.

¿Es posible hacer esto?

Gracias

Daniel

Archivos adjuntos:
rsi_filter.png  32 kb
 
mladen:
Hermes Pruebe esto : simpleg_1.mq4

Hola Mladen,

Por fin funciona usando esto. Gracias

void LoopBS()

{

double max =(ObjectGet("UPRBND",OBJPROP_PRICE1));

double min =(ObjectGet("LWRBND",OBJPROP_PRICE1));

for (int i =ObjectsTotal()-1; i>=0; i--)

{

string name = ObjectName(i);

if (StringSubstr(name,0,3)=="Buy")

{

double BS=ObjectGet(nombre,OBJPROP_PRICE1);

if ((Ask<BS) && (BSmin))

{

max = ObjectGet(nombre,OBJPROP_PRICE1);

{

Comment(DoubleToStr(BS,Digits)," ");

}

}

}

}

}

 

Señales inexactas

Señales inexactas

Queridos, artesanos. Podrían señalar mejor para hacer. M1, M5, M15

Archivos adjuntos:
.......png  31 kb
 
DMNIK:
¡Señales inexactas Estimados, artesanos! Podrían señalar mejor para hacer. M1, M5, M15

Simplemente muestra si los últimos 3 cierres son mayores o menores que las últimas 3 aperturas. Nada que mejorar en eso

Razón de la queja: