[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 159

 
BooGUY:

todem, he probado si (d1!=0)

pero el EA sigue abriendo en un lugar equivocado. En general, debería cambiar de Comprar a Vender, pero a veces se abre dos veces para Vender. Tal vez no he copiado algo.


¿no crees que se está retrasando?
 
DhP:

El número de pases puede reducirse:

1. Aumentar el tono.

2. Reduzca el rango de optimización de los parámetros.

3. Reducir el número de parámetros a optimizar.

4. Activar "Algoritmo genético".


Aquí tienes más información sobre el Algoritmo Genéticom..... si puedes))

 

Chicos, qué os parece el asesor.... Sé que no hay límite para lo bueno que puede ser un asesor, pero en vuestra opinión cuál es la rentabilidad de un asesor (rendimiento anual) ??????

A lo largo de un año.... obtuve lo siguiente:

Reducción máxima: 8,69% (3768$)

Beneficio: 27464,5 dólares poco más del 100 por ciento

Total de operaciones: 142

He negociado un lote fijo: 1 lote

Mi primer EA... gracias a todos los que me ayudaron)

 

Digamos que tengo un Asesor Experto (Mi_experto) y un indicador (Mi_indicador)

El Asesor Experto utiliza los datos del indicador (actualmente a través de iCustom)

¿Puedo hacer que el Asesor Experto añada el indicador al gráfico durante la inicialización y lo elimine durante la desinicialización?

 

Estoy intentando escribir un Asesor Experto que cierre la orden al día siguiente (en cualquier caso). Pero el pedido no está cerrado por alguna razón (por favor, indíqueme por qué).

A continuación se muestra el código para vender:


if (OrdersTotal()==0) {

OPENORDER ("Venta");
}
int TC = int TimeCurrent();
int OM = int NúmeroDePedidoMágico();

if (OrdersTotal()==1 && OrderType()==OP_SELL && TC-OM>86400){ // DayMove(3)<0 && DayMove(2)<0 && DayMove(3)<0 && DayMove(4)<0 && DayMove(5)>0
CLOSEORDER("Vender");
}

Esta es la función de apertura/cierre de órdenes:

void CLOSEORDER(string ord)
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol()!=Symbol()||Magic!=OrderMagicNumber()) continue;
if (OrderType()==OP_BUY && ord== "Buy")
OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE);
if (OrderType()==OP_SELL && ord== "Sell")
OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE);
}
}
}
//--------------------------------------------------------------------


void OPENORDER(string ord)
{
error int;
//Magic=TimeDay(CurTime();
Magic = TimeCurrent();
if (ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, LOT,Ask,2,SL,TP, "EMA WMA RSI",Magic,3);
if (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,LOT,Bid,2,SL,TP, "EMA WMA RSI",Magic,3);
if (error==-1) ShowERROR(error,0,0);
volver;
}

 
Vovo4ka:

Chicos, qué os parece el asesor.... Sé que no hay límite para lo bueno que puede ser un asesor, pero en vuestra opinión cuál es la rentabilidad de un asesor (rendimiento anual) ??????

A lo largo de un año.... obtuve lo siguiente:

Reducción máxima: 8,69% (3768$)

Beneficio: 27464,5 dólares algo más del 100 por ciento

Total de operaciones: 142

He negociado un lote fijo: 1 lote

Mi primer EA... gracias a todos los que me ayudaron)

Si se trata de un gráfico en una zona optimizada, no hay nada que decir sobre su rendimiento futuro. Si se trata de un gráfico en una zona no optimizada, entonces hay esperanza de que sea rentable. Y la verdad se revelará cuando se trabaje en la cuenta real.
 
ILL:

...
int OM = int NúmeroDePedido();
...


La orden debe ser preseleccionada con OrderSelect(), este no es el caso aquí.
 
ilunga:

La orden debe ser preseleccionada mediante OrderSelect(), no es el caso en lo que has dado.


¡Hurra! Funcionó=)

Muchas gracias.

 
todem:

Hagámoslo juntos. Tengo un indicador ficticio que muestra la dirección actual, ¿lo necesitas?


No hay problema, hagámoslo juntos. Todas las novedades se indican en los enlaces anteriores... No se trata sólo de comprobar en un bucle. Buscando opciones para escribir en cada verdad a un array - pero no he tratado con arrays todavía.

//+-------------------------------------------------------------------------------+
// Проверка смены тренда 
bool TrendChange(int Period_MAb, int Period_MAm, int nB)
{
  double maB1=iMA(NULL, 0, Period_MAb, 0, MODE_EMA, PRICE_WEIGHTED, 1);
  double maM1=iMA(NULL, 0, Period_MAm, 0, MODE_EMA, PRICE_WEIGHTED, 1);   
  for (int i=0; i<nB; i++) 
  {
    double maB=iMA(NULL,0, Period_MAb, 0, MODE_EMA, PRICE_WEIGHTED, i);
    double maM=iMA(NULL,0, Period_MAm, 0, MODE_EMA, PRICE_WEIGHTED, i); 
     if ((maM<maB && maM1>maB1)||(maM>maB && maM1<maB1)){
//     Alert("TrendChange-true");
     return(true);
     }
  }
  return(false);   
}

Así pues, esta función funciona. ¡Que puede necesitarlo!

PERO! La pregunta es sobre la economía de recursos - ya que mi máquina no es la más fuerte, y esta función se comprueba a menudo. Así resulta que cada tick tenemos que recalcular un montón de barras antiguas (por ejemplo en mi caso nB=610 ). La única manera de resolver este problema es escribir una bandera en un array y luego comprobar la verdad de todo el array y de la última barra. ¿Alguien tiene otras variantes? ¿Alguna sugerencia?

 
ILL:


¡¡¡Sí!!! Funcionó=)

Muchas gracias.

De nada))

Quién me respondería ahora))