Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 90

 
artmedia70:

Todavía no he buscado errores, hay mucho que hacer.

Para cerrar la venta donde está la cruz roja, hay que comprobar la barra actual. Si Ask<= nivel de cierre && Open[0]>nivel de cierre


Hay algo que no funciona del todo Un trato de venta con el código if(Ask<=PriceLow && Open[0]>PriceLow) OrderClose(OrderTicket(),OrderLots(),Ask,3,White); no cierra del todo.


Si está interesado en el tema para un contacto acelerado me skype alexey1979621

 
alexey1979621:

Algo no funciona OrderClose(OrderTicket(),OrderLots(),Ask,3,White); no cierra if(Ask<=PriceLow && Open[0]>PriceLow); no cierra en absoluto.


Si te interesa el tema para una rápida comunicación conmigo skype alexey1979621


 if(Ask<=PriceLow && High[1]>PriceLow) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
 
artmedia70:


No ha funcionado. Tal vez esta cosa if(Volume[0]>1) devuelve;
 
alexey1979621:

¿Probando a precios de apertura?

Se trata de las garrapatas

 
pruebas en todas las garrapatas
artmedia70:

¿Probando a precios de apertura?

Se trata de las garrapatas


pruebas en todas las garrapatas
 
alexey1979621:
pruebas en todas las garrapatas pruebas en todas las garrapatas

¿Y dónde estaba la línea del indicador en el momento del cierre de la venta?

 
alexey1979621:

Corregido, cerré la operación de la misma manera que en la captura de pantalla anterior, pero la cruz roja debería estar ahí.

Estoy de acuerdo en que ExtremeTMA está sobredimensionado, pero supongo que no afecta a la búsqueda de puntos de entrada, lo principal aquí son los filtros. He utilizado el indicador TDI. Adjunto lo que hice (no tengo buenas manos, por eso este EA debe ser manejado adecuadamente). Sólo tengo un problema con él, lleva unas 5 horas en el probador durante 1 año (he cometido un error en alguna parte). Si no es difícil comprobar los errores.

Intente abrir las órdenes de la siguiente manera:

int CalculateCurrentOrders(string symbol)
  {
   int buys=0,sells=0;
   //----
   if (OrdersTotal()>0)
   {  for (int i=OrdersTotal()-1; i>=0; i--)
      {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         {  if (OrderSymbol()!=Symbol())   continue;
            if (OrderMagicNumber()!=Magic) continue;
            {  if(OrderType()==OP_BUY)  buys++;
               if(OrderType()==OP_SELL) sells++;
            }
   }  }  }
   //---- return orders volume
   if(buys>0) return(buys);
   else       return(-sells);
  }

Me llama la atención que pongas Magic=124, pero el código dice inmediatamente 124. Lo mismo con Slippage, OrderSend y OrderClose tienen 3 (tres).

 
alexey1979621:

Corregido, cerré la operación de la misma manera que en la captura de pantalla anterior, pero la cruz roja debería estar ahí.

Estoy de acuerdo en que ExtremeTMA está sobredimensionado, pero supongo que no afecta a la búsqueda de puntos de entrada, lo principal aquí son los filtros. He utilizado el indicador TDI. Adjunto lo que hice (no tengo buenas manos, por eso el Expert Advisor es un buen proyecto). Sólo tengo un problema con él, lleva unas 5 horas en el probador durante 1 año (he cometido un error en alguna parte). Si no te importa buscar errores.

Es posible que la velocidad del EA esté cayendo debido a la pesadez de los cálculos del indicador personalizado. Si quieres comprobar la dificultad de los cálculos, haz el siguiente script en el gráfico en el que operas. Si no hay ningún comentario durante mucho tiempo, disminuya N a 100000 o incluso menos. Comprueba cuántos milisegundos tarda cada iteración.

//---
int    N=1000000;
//---
double PriceHigh, PriceLow, TDIHigh, TDILow, RSIPriceLine, TradeSignalLine;
int    timestart, timestop;
//---
string TimeFrame         = "current time frame";
int    HalfLength        = 56;
int    Price             = PRICE_CLOSE;
double ATRMultiplier     = 2.0;
int    ATRPeriod         = 100;
bool   Interpolate       = true;
double TrendThreshold    = 0.5;
bool   Distances         = false;
//---
int RSI_Period           = 13;         //8-25
int RSI_Price            = MODE_CLOSE;           //0-6
int Volatility_Band      = 34;    //20-40
int RSI_Price_Line       = 2;      
int RSI_Price_Type       = MODE_SMA;      //0-3
int Trade_Signal_Line    = 7;   
int Trade_Signal_Type    = MODE_SMA;   //0-3
bool UseAlerts           = false;
//===============================================
int start()
{
   timestart=GetTickCount();
   for (int i=0;i<N;i++) 
   {  
   PriceHigh = iCustom (Symbol(), 0, "ExtremeTMALine", TimeFrame, HalfLength , Price, 
                        ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 1, 0);
   PriceLow = iCustom (Symbol(), 0, "ExtremeTMALine", TimeFrame, HalfLength , Price, 
                       ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 2, 0);
   TDIHigh = iCustom (Symbol(), 0, "TradersDynamicIndex", RSI_Period, RSI_Price, Volatility_Band, 
                      RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type, UseAlerts, 1, 0);
   TDILow = iCustom (Symbol(), 0, "TradersDynamicIndex", RSI_Period, RSI_Price, Volatility_Band, 
                     RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type,UseAlerts, 3, 0);
   RSIPriceLine = iCustom (Symbol(), 0, "TradersDynamicIndex", RSI_Period, RSI_Price, Volatility_Band, 
                           RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type,UseAlerts, 4, 0);
   TradeSignalLine = iCustom (Symbol(), 0, "TradersDynamicIndex", RSI_Period, RSI_Price, Volatility_Band, 
                              RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type,UseAlerts, 5, 0);
   }
   timestop=GetTickCount();
   //---
   Comment(" Calculation ",N," times was =  ",timestop-timestart," millisec \n",
           " One iteration was = ",(timestop-timestart)/(N-1)," millisec");
   return(0);
}
//---
Archivos adjuntos:
testing_1.zip  4 kb
 
artmedia70:

¿Y dónde estaba la línea del indicador al cierre de la venta?

Todo es tal y como aparece en la captura de pantalla. El canal no tuvo tiempo de volver a dibujarse.
 
paladin80, ¡tu script apagó mi ordenador dos veces!