Concurso de EA en cuentas reales - página 17

 

Ahora he mirado el historial de la cuenta y lo he descubierto. ¡Que la función de cerrar posiciones después de alcanzar el beneficio especificado en la cuenta real prácticamente no funciona! Aunque funciona correctamente en el probador.

Es decir, en la mayoría de los casos las posiciones rentables se cierran con un Ticrofit que equivale a 15 pips, el nivel mínimo de stop permitido.

¡Pero este Asesor Experto de Pipswise ha sido optimizado para cerrar +11 en EURCHF y +8 en EURGBP!

¡Tal diferencia (especialmente 15 y 8) es muy sensible para un Asesor Experto de scalping!

Todavía no sé por qué sucedió así.... Tomé una función lista de otro diseño (alienígena).

Lo he peinado y mejorado (para eurofrank la función tiene este aspecto):

//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж+
//Функция дает команду на  закрытие  позиции при достижении профита , 
//задаваемого  параметром CloseProfit. Для корректной работы 
//этой функции необходимо наличие вспомогателной функции del(int ticket)
void CloseProfit()                                                    {
    if (OrdersTotal() > 0)                                            {
      for (int q = OrdersTotal() + 1; q >= 0; q--)                    {
         if (OrderSelect( q, SELECT_BY_POS, MODE_TRADES))              {
            if (OrderSymbol() == "EURCHF")                            {
               if (OrderMagicNumber() == Magic)                       {
                  if (OrderCloseTime() == 0)                          {
                     if (OrderType() == OP_BUY)                       {
                        RefreshRates();
                        if (Bid > OrderOpenPrice() + CloseProfit* Point) {
                           Print("ClosePozishion"); del(OrderTicket());
                        } }
                     if (OrderType() == OP_SELL)                         {
                        RefreshRates();
                        if (Ask < OrderOpenPrice() - CloseProfit* Point) {
                           Print("ClosePozishion"); del(OrderTicket());
                        }}}}}}}}}
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж+
//Функция реализует закрытие позиций по текущей цене
void del(int ticket) {
   int Error;
   double _bid;
   for (int w = 0; w < 1; w++) {
      GetLastError();
      OrderSelect( ticket, SELECT_BY_TICKET, MODE_TRADES);
      if (OrderType() == OP_BUY) {
         RefreshRates();
         _bid = MarketInfo("EURCHF", MODE_BID);
         if (!OrderClose( ticket, OrderLots(), _bid, 3, Green)) Error = GetLastError();
      }
      if (OrderType() == OP_SELL) {
         RefreshRates();
         _bid = MarketInfo("EURCHF", MODE_ASK);
         if (!OrderClose( ticket, OrderLots(), _bid, 3, Green)) Error = GetLastError();
      }
      if ( Error == 0) {  PlaySound("expert.wav");  return; }//при  нормальном закрытии  
      //  позиции, - даем сигнал "expert.wav"
      if ( Error != 0) {// если произошла ошибка закрытия - сигнал и печать .
         PlaySound("timeout.wav");
         Print("Error for Close Funtion =", Error);
      }
      while (!IsTradeAllowed()) Sleep(5000);//если торг. поток занят, - ждем 5 сек
      if ( Error == 146) while (IsTradeContextBusy()) Sleep(10000);
      //если нет соединения с сервером, ждем - 10 сек
   }
}

//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж+
 

¿Da errores?

este diseño se puede simplificar

      if (OrderType() == OP_BUY) {
         RefreshRates();
         _bid = MarketInfo("EURCHF", MODE_BID);
         if (!OrderClose( ticket, OrderLots(), _bid, 3, Green)) Error = GetLastError();
      }
      if (OrderType() == OP_SELL) {
         RefreshRates();
         _bid = MarketInfo("EURCHF", MODE_ASK);
         if (!OrderClose( ticket, OrderLots(), _bid, 3, Green)) Error = GetLastError();
      }

así

RefreshRates();
if (!OrderClose( ticket, OrderLots(),OrderClosePrice(), 3, Green)) Error = GetLastError();
 
keekkenen писал(а) >>

¿Da errores?

este diseño se puede simplificar

así.

No puedo decir nada sobre los errores. Sólo tengo la contraseña de inversión de esta cuenta.

Pero los errores ocurren muy a menudo en mi cuenta real con esta empresa de corretaje. Recibo una señal sonora de errores en el código y ¡escucho esta señal con bastante frecuencia! Al principio hay una señal de error de cierre. Y a menudo, después de uno o dos minutos más, hay una señal de activación de Take Profit. En otras palabras, la función de cierre funciona de forma incorrecta y el precio rompe hasta el nivel de toma de beneficios pasando el nivel de cierre establecido.

En cuanto a la simplificación del diseño, se puede simplificar, pero para mí es más claro cuando se describe todo con detalle.

 

Usted escribió: ¡Este Asesor Experto en Pips está optimizado para cerrar +11 en EURCHF y +8 en EURGBP!

Todo es fácil de explicar, abres una posición larga y esperas a que se dé la condición de los 15 pips legales

if (OrderType() == OP_BUY){
	RefreshRates();
    if (Bid > OrderOpenPrice() + CloseProfit* Point) {
		Print("ClosePozishion"); del(OrderTicket());
    }
}

Pero no estaba allí. Compras en Bid y cierras en Bid, por lo que pierdes el spread (4 pips), por lo que tienes que poner Ask en lugar de Bid en el Ifa,

para obtener sus 15 pips...


y además, lo anterior es algo poco claro... si el takeprofit es de 15 pips, ¿por qué cerrar antes?

 
keekkenen писал(а) >>

Usted escribió: ¡Este Asesor Experto en Pips está optimizado para cerrar +11 en EURCHF y +8 en EURGBP!

Todo es fácil de explicar, abres una posición larga y esperas a que se dé la condición de los 15 pips legales

Pero no estaba allí. Compras en Bid y cierras en Bid, por lo que pierdes el spread (4 pips), por lo que tienes que poner Ask en lugar de Bid en el Ifa,

para obtener sus 15 pips...

Si el takeprofit es de 15 pips ¿por qué debería cerrar antes?

No exactamente. Quiero cerrar la posición después de alcanzar +11 pips de beneficio. Mientras que el take profit está en +15 (porque no hay más cerca - el nivel de stop en DC se permite ser =15).

¿Por qué crees que compré en la oferta? Estaba comprando en asc.

Pero las posiciones largas se cierran vendiendo ? - ¿No es así?

y es por eso que se oferta en la tarifa electrónica...

¡Pero incluso si pierdo el tamaño de la propagación en su opinión, este hecho no explica la divergencia de los resultados entre real y probador !

Casi 500$ de divergencia a peor con lote =0,1 en 10 días con 200 operaciones.

 
leonid553 >> :

¡Pero aunque pierda el tamaño del spread según tú, este hecho no explica la divergencia de resultados entre el real y el tester !

También hay un nivel de congelación, tal vez ese sea el problema.
 
TheXpert писал(а) >>

Casi un tercio de las operaciones faltan en el real, lo que puede suponer una pérdida de beneficios. O tal vez falte algo. Avísame y lo resolveremos.

He ordenado el número de ofertas. Ahora he ejecutado el Asesor Experto en el probador con la opción de modelado de recotizaciones activada. La cantidad de operaciones en el probador y en la cuenta real era casi la misma (dentro de unos límites razonables).

Es decir, la culpa es de los requotes. Reducen fuertemente el número de operaciones y muchas operaciones rentables deben haber sido recortadas en la cuenta real.

Pero, de todos modos, no explica todas las diferencias entre la prueba y los resultados reales.

//-------------------------------------------------------------------

Así que mi Asesor Experto parece haber "trabajado" y convertirse en uno de los líderes...

http://acompetition.love-craft.ru/?q=ru

 
TheXpert писал(а) >>
También hay un nivel de congelación, tal vez el problema radica en él.

Si he entendido bien, este concepto incluye un límite en el número de posiciones abiertas al mismo tiempo y un límite en el tamaño del lote.

No creo que este factor sea relevante.

Según el algoritmo del Asesor Experto, no puede haber más de una posición en el mercado para un par a la vez.

El lote es fijo por el momento. (0.1)

 
leonid553 >> :

Si he entendido bien, este concepto incluye un límite en el número de posiciones abiertas y un límite en el tamaño del lote.

No - es un nivel más cercano al que no se pueden modificar las órdenes, así como las tomas y los lotes.

 
Gracias por la aclaración. Iré a la página web de DC para aclarar la cuestión.