¡Pide! - página 129

 
forexarchitect:
hola chicos

Tengo una pregunta... ¿cómo puedo cambiar lo siguiente?

extern double MaxLot = 1.50;

double max_lot = GetMaxLot(OP_BUY, OP_SELL);

if (max_lot >= MaxLot) lot = CalcHedgeLot(order_type);

(tipo_orden)]: ", lote);

if (lot == -1) return (lot);

lot = NormalizeDouble(lot, LotPrec);

si (lote > MaxLot) lote = MaxLot;

si (lot < MinLot) lot = MinLot;

return (lot);

}

la comprobación anterior para OP_BUY Y OP_SELL

pregunta: ¿cómo lo cambio a cualquier OP_BUY O a cualquier OP_SELL?

apreciar

Debes modificar el código de la función GetMaxLot(), o tal vez puedas usar GetMaxLot(OP_BUY, OP_BUY); y GetMaxLot(OP_SELL, OP_SELL); (depende del código - se puede hacer así o no).

Pero supongo que vale la pena intentarlo

Goen

 
Goen:
¿Es esto lo que buscas?

-----------

int bars_count=WindowBarsPerChart();

int bar=WindowFirstVisibleBar();

-----------

Goen

Gracias, Goen .

 
Goen:
Debe modificar el código de la función GetMaxLot(), o tal vez puede utilizar GetMaxLot(OP_BUY, OP_BUY); y GetMaxLot(OP_SELL, OP_SELL); (depende del código - puede hacerlo así o no).

Pero supongo que vale la pena intentarlo

Ir a

Gracias por responder...

¿qué tengo que cambiar aquí? agradezco su ayuda

double GetMaxLot(int type1, int type2)

{

double max_lot = 0.0;

int cnt = OrdersTotal();

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

{

if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;

if (OrderSymbol() != Symbol()) continue;

si (OrderMagicNumber() != Magic) continuar;

if (OrderType() != type1 && OrderType() != type2) continue;

if (max_lot == 0 | OrderLots() >= max_lot)

{

max_lot = OrderLots();

}

}

return (max_lot);

}

 

un poco perdido aquí...

 

¿como añadir una alerta a este indicador?

Tengo un indicador de cruce de MA que funciona muy bien, pero no tiene el apoyo de alerta de sonido que me hacen perder una gran cantidad de comercio, puede u por favor me enseñan cómo agregar alerta a este indicador como yo no sé nada acerca de la cosa meta código ....gracias ...

Aquí está el código para el indicador junto con el indicador en sí, gracias...

/*[[

Nombre := EMA Cross

Autor := Hapsa

Enlace := http://www.metaquotes.net/

Ventana separada := No

Ventana separada := No

Primer Color := Rojo

Primer Tipo de Dibujo := Símbolo

Primer Símbolo := 108

Usar Segundo Dato := Sí

Segundo Color := Verde Oliva Oscuro

Segundo Tipo de Dibujo := Símbolo

Segundo Símbolo := 108

]]*/

#property copyright "Hapsa"

#property link ""

extern int SlowPeriod=20;

extern int FastPeriod=5;

#property indicator_buffers 3

#property ventana_gráfica_del_indicador

#property indicador_color1 Rojo

#propiedad indicador_color2 Verde

double L20[];

double L50[];

double shift=0,val1=0,val2=0;

int init()

{

IndicatorBuffers(3);

SetIndexStyle(0,DRAW_ARROW);

SetIndexStyle(1,DRAW_ARROW);

SetIndexArrow(0, 108);

SetIndexArrow(1, 108);

SetIndexBuffer(0,L20);

SetIndexBuffer(1,L50);

//---- indicadores

//----

return(0);

}

int inicio()

{

int barras_contadas=IndicadorContado();

//----

int i = Bares - barras_contadas - 1;

while (i>=0)

{

val1=0;

val2=0;

double iMaSlowPrevious = iMA(NULL,0,SlowPeriod,0,MODE_EMA, PRICE_CLOSE, i-1);

double iMaSlowCurrent = iMA(NULL,0,SlowPeriod,0,MODE_EMA, PRICE_CLOSE, i);

double iMaFastPrevious = iMA(NULL,0,FastPeriod,0,MODE_EMA, PRICE_CLOSE, i-1);

double iMaFastCurrent = iMA(NULL,0,FastPeriod,0,MODE_EMA, PRICE_CLOSE, i);

if (iMaFastPreviousiMaSlowCurrent ) val1=High;

if (iMaFastPrevious>iMaSlowPrevious && iMaFastCurrent<iMaSlowCurrent ) val2=Low;

L20=val1+5*Punto;

L50=val2-5*Punto;

i--;

}

//----

return(0);

}

Archivos adjuntos:
cross.mq4  2 kb
cross.ex4  3 kb
 
forexarchitect:
gracias por responder...

¿Qué tengo que cambiar aquí? Agradezco su ayuda

double GetMaxLot(int type1, int type2)

{

double lote_máximo = 0.0;

int cnt = OrdersTotal();

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

{

if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;

if (OrderSymbol() != Symbol()) continue;

si (OrderMagicNumber() != Magic) continuar;

if (OrderType() != type1 && OrderType() != type2) continue;

if (max_lot == 0 | OrderLots() >= max_lot)

{

max_lot = OrderLots();

}

}

return (max_lot);

}

Sí, puede utilizar GetMaxLot(OP_BUY,OP_BUY); para obtener el maxlot para la operación abierta de compra solamente, y GetMaxLot(OP_SELL,OP_SELL); para obtener el maxlot para la operación abierta de venta solamente.

Puede simplificar este código "if (max_lot == 0 || OrderLots() >= max_lot)" con "if (OrderLots() > max_lot)".

Coz si max_lot = 0 automáticamente será menor que cualquier lote de las operaciones abiertas. Y el signo ">=" cambiarlo por ">" porque si tiene el mismo valor, no es necesario actualizar max_lot con el mismo valor, esfuerzo inútil. Sólo se actualizará si el nuevo valor es mayor que max_lot.

Cambiando ese código, podría hacer su proceso más rápido.

Goen

 

problema de stoploss

Hola,

Soy nuevo en todo esto del forex/metatrading pero estoy tratando de entender cómo funciona todo.

Ahora estoy intentando escribir un EA y me temo que me estoy perdiendo algo fundamental.

Si en mi código sustituyo

OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"",MAGIC,0,Red);

con

OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+Point*10,0,"",MAGIC,0,Red);

Y al probar esta nueva versión en el probador de estrategias, obtengo MENOS órdenes. ¿Cómo es posible que añadir un stoploss disminuya el número de entradas de órdenes? Me imagino que el número aumenta en el caso de que añadir una orden de stop haga que las órdenes salgan más pronto y así se puedan añadir nuevas órdenes más rápidamente, pero ¿menos órdenes?

¿Alguna idea?

Gracias

 
azertyken2:
Hola,

Soy nuevo en todo esto del forex/metatrading pero estoy tratando de entender cómo funciona todo.

Ahora estoy tratando de escribir un EA y me temo que me estoy perdiendo algo fundamental.

Si en mi código sustituyo

OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"",ordercount,0,Red);

con

OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+Point*10,0,"",ordercount,0,Red);

Y al probar esta nueva versión en el probador de estrategias, obtengo MENOS órdenes. ¿Cómo es posible que añadir un stoploss disminuya el número de entradas de órdenes? Me imagino que el número aumenta en el caso de que añadir una orden de stop haga que las órdenes salgan más pronto y así se puedan añadir nuevas órdenes más rápidamente, pero ¿menos órdenes?

¿Alguna idea?

Gracias

10 pips puede estar demasiado cerca del límite de paradas impuesto por el broker (varía entre los brokers) - lo que significa que si es un mínimo de 10 pips y el precio pasa a oscilar 1 pip dentro de esto mientras la orden está siendo colocada, la orden será rechazada...

 

Omelette, tienes razón, aumentando el stoploss se arregló, ¡gracias! :-)

 
#property indicator_color1 Magenta

#property indicator_color2 Yellow

extern bool TrendDirectionUp=true;

string Color1;

string Color2;

int init() {

if(TrendDirectionUp==true)//Conditionj 1

{

Color1=Yellow;

Color2=CLR_NONE;

}

if(TrendDirectionUp==false)//Condition2

{

Color1=CLR_NONE;

Color2=Magenta;

}

SetIndexStyle(0,DRAW_ARROW,0,star_size,Color1);

SetIndexStyle(1,DRAW_ARROW,0,star_size,Color2);

SetIndexArrow(0,172);//333

SetIndexArrow(1,172);//334

SetIndexBuffer(0,b1);

SetIndexBuffer(1,b2);

return(0);

}

Ahora mismo, tanto el color 1 como el 2 se muestran en negro en el gráfico.

¿Puede algún experto Gurú ayudarme a resolver este problema?

Gracias por adelantado.

Razón de la queja: