¿Cómo codificar? - página 79

 

Genial gracias chicos, ambas sugerencias son probablemente mejores que lo que estaba trabajando.

 

Que alguien me ayude, por favor....

Hola...

Espero que alguien aquí me puede ayudar a cómo codificar this.This es martiangle EA y lo que quiero hacer es:

1 . Cuando la 2da capa se abre, quiero que el punto objetivo de la 1ra capa se mueva al punto objetivo de la 2da capa, así que cuando el punto objetivo llegue a la 2da capa, los 2 puestos pueden cerrarse al mismo tiempo.

2. Necesidad de bloqueo de pips, cuando la primera capa se abre, y tiene beneficios, por ejemplo, 15 pips (TP 32), el EA hace el bloqueo en el precio sl (ejemplo 5 pips), por lo que cuando el precio se invierte 10 pips, el puesto se puede cerrar automáticamente con un beneficio de 5 pips, sólo para el puesto de la primera capa, la segunda capa no necesita ser activada porque este EA es martiangular.

Espero que alguien pueda ayudarme a poner un código en este EA. Gracias

martiangle_rsi_.mq4

Saludos

Realmente necesito ayuda persona

Archivos adjuntos:
 

Ayuda con los comentarios, por favor

Estoy tratando de configurar un comentario para mostrar en la pantalla, pero no tener mucha suerte

He logrado obtener el recuento de pips para un solo par, pero no puedo mostrar el total cotejado para múltiples pares

Cualquier ayuda sería genial

este es un ejemplo de ese código

//========== FUNCIÓN getPipValue

double getPipValue(double ord,int dir)

{

double val;

RefrescarRatos();

if(dir == 1) val=(NormalizeDouble(ord,Digits) -

NormalizeDouble(Ask,Digits));

else val=(NormalizeDouble(Bid,Digits) - NormalizeDouble(ord,Digits));

val = val/Punto*co;

return(val);

}

//== fin de la función

int getSpread()

{

int spread=MarketInfo(Symbol(),MODE_SPREAD);

return(spread);

}

//========== FUNCIÓN getOpenOrders

void getOpenOrders()

{

int nsl, nsd;

string mngMagic, trailon;

int totalorders = OrdersTotal();

for(int j=0; j<totalórdenes;j++)

{

OrderSelect(j, SELECT_BY_POS, MODE_TRADES);

if((OrderType() == OP_BUY | OrderType() == OP_SELL) &&

OrderSymbol() == Symbol()&&(MagicNumber==0 || MagicNumber ==

OrderMagicNumber())

{

double val=getPipValue(OrderOpenPrice(),OrderType());

//int val = OrderProfit()/(OrderLots()*10);

}

if(MagicNumber == 0)

mngMagic = "Todas las operaciones "+Símbolo()+";

si no

mngMagic = "Operaciones con número mágico = "+NúmeroMágico;

//RefreshRates();

Comentario("Saldo: ",AccountBalance(),", Account Equity: ",AccountEquity(),", Account Profit: ",AccountProfit(), "Orden abierta: ",OrderOpenPrice(),

"\nCuento de Pips: ", val,

"\nLímite de corte de mi cuenta: ",Open_Loss_To_CloseTrades,

"\nGestión: ", mngMagic);

Saludos

 

El valor de los pips de una orden actual puede obtenerse de la siguiente manera:

( OrderClosePrice() - OrderOpenPrice() ) / MarketInfo( OrderSymbol(), MODE_POINT )

Si se quiere utilizar "bid" y "ask", también hay que utilizar los relacionados con el símbolo de la orden, es decir, MarketInfo( OrderSymbol(), MODE_BID ) y MarketInfo( OrderSymbol(), MODE_ASK ).

 

ralph.ronnquist

Buenos días

gracias por el código lo he usado pero solo cuenta para el par y no el total de todos los pares .

He estado experimentando con varios escenarios pero sigue sin funcionar

tengo un ea que abre 3 posiciones que ejecuto en 5 pares puedo ver el conteo de pip para cada par pero no el colectivo.

 
Beno:
ralph.ronnquist

Buenos días

gracias por el código lo he usado pero solo cuenta para el par y no el total de todos los pares .

He estado experimentando con varios escenarios, pero todavía no funciona

tengo un ea que abre 3 posiciones que ejecuto en 5 pares puedo ver el conteo de pip para cada par pero no el colectivo.

Bueno, si estás familiarizado con las variables globales, puedes usarlas para almacenar la información de los pips en cada par referenciado por cada símbolo. Crear otra variable global que hace referencia al valor total de pips y llamar a esta variable global en particular, conseguir que se actualiza como el aumento de pips, almacenarlo. Las variables globales pueden ser accedidas por cada ea ya que se almacenan en la memoria de MT4.

Puedo ayudar a codificar para u si quiere.

 

Buenos días ShahJB

He visto variables globales en el código antes, pero he tenido cero experiencia con ellos, así que sí me gustaría aceptar su ayuda para codificar esto como me está volviendo loco

 
Beno:
Gidday ShahJB He visto las variables globales en el código antes, pero han tenido cero experiencia con ellos, así que sí me gustaría aceptar su ayuda para el código de este como su me está volviendo loco

Acabo de codificar lo siguiente rápidamente. Por qué no agregas este código primero. Inténtalo y envíame un mensaje si falla. Necesito dormir un poco.

string val_old_string = "val_old" + Symbol();

int val_old = GlobalVariableGet(val_old_string);

if(val != val_old)

{

int pips_increment_decrement;

int total_de_pips_actual;

string counter = "Contador de pips";

double pips_counter = GlobalVariableGet(counter);

si (val>val_old)

{

pips_increment_decrement = val - val_old;

current_total_pips = pips_increment_decrement + pips_counter;

GlobalVariableSet(counter, current_total_pips);

GlobalVariableSet(val_old_string, val);

}

si no

{

pips_increment_decrement = val_old - val;

current_total_pips = pips_counter - pips_increment_decrement;

GlobalVariableSet(contador, current_total_pips);

GlobalVariableSet(val_old_string, val);

}

}

 

¿Por qué no funciona?

Hola,

Soy un completo novato en la programación. Gracias a los mensajes y recursos de aprendizaje en este sitio me armé de valor para intentar construir algunos EAs, uno de los cuales utilizará Lguerre como uno de los desencadenantes (he utilizado este sitio web para ayudarme; Expert Advisor Builder para MetaTrader 4 ). El problema con mi EA es que no abrirá órdenes de compra cuando los disparadores son golpeados. He construido un par de EAs utilizando el sitio antes mencionado y ejecutan órdenes para posiciones largas y cortas muy bien (Los EAs utilizan RSI). Por favor, eche un vistazo a la EA adjunta, 3-28, y hágame saber lo que estoy haciendo incorrectamente.... ¿estoy usando el formato incorrecto para los niveles que se deben alcanzar antes de que se ejecute una operación? ¿Necesita el Laguerre parámetros adicionales?

¡¡¡¡¡He gastado una cantidad vergonzosa de tiempo en esto y estoy a punto de abandonar.... cualquier ayuda es muy apreciada!!!!!

Parece que he encontrado la respuesta ... ¿por qué tengo que multiplicar el Laguerre en mi EA, aunque?????

Archivos adjuntos:
3-31.mq4  10 kb
 

Me encontré con un problema de cierre de posiciones. Ayuda por favor

Me he encontrado con un problema que no sé cómo resolver. Mi programa tiene unas cuantas ordenes abiertas y las cierra todas juntas pero a veces creo que algunas de las ordenes no se llenan por lo que sigue esperando hasta que se llenan y eso bloquea mi programa. ¿Cuál es la mejor manera de cerrar todas las órdenes abiertas? Gracias por su ayuda.

Aquí está el código:

int OrdersTotalLong()

{

int total_de_órdenes = 0;

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

{

OrderSelect(i,SELECT_BY_POS, MODE_TRADES);

if (OrderType() = OP_BUY)

total_de_pedidos++;

}

return(total_de_pedido);

}

int MaxLongOrder()

{

int pedido = 0;

double lotescomprados = 0;

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

{

OrderSelect(i,SELECT_BY_POS, MODE_TRADES);

if ((OrderType() == OP_BUY) && (OrderLots() > lotsbuyed))

{

lotescomprados = OrderLots();

orden = i;

}

}

return(orden);

}

int CerrarLargo()

{

while (OrdersTotalLong() > 0) //hasta que no haya órdenes abiertas (cerrar todas)

{

if (OrderSelect(MaxLongOrder(), SELECT_BY_POS, MODE_TRADES) == false) continue;

OrderClose(OrderTicket(),OrderLots(), Bid, 3, Green);

}

}

return(0);

}

Razón de la queja: