[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 330

 

Chicos, una pista... Te muestro fragmentos de código donde se calculan las condiciones de entrada al mercado. Y con los valores dados de los plazos obtenidos durante la optimización

extern int s_signal_period=7;
extern int t_trend_period =7; // 1-M1, 2-M5, 3-M15, 4-M30, 5-H1, 6-H4, 7-D1, 8-W.

es decir, el TF = día, la entrada en el mercado se produce en la apertura de velas de 4 horas, en el probador de la estrategia, cuando se prueba en el período H4? Debería haber una entrada SÓLO en la apertura de las velas del día - Traigo secciones del código y el informe de prueba en H4 y D1, Asesor Experto con el control de la apertura de una nueva barra.

xtern string A4 = "Таймфрейм и параметры технических индикаторов";
extern int s_signal_period=7;
extern int t_trend_period =7;
...
static datetime prevtime = 0;       // по ценам открытия

...
int start()
{
   if(Time[0] == prevtime)   return(0);  //ждем нового бара
   prevtime = Time[0];                   //если появился новый бар , включаемся
   
   ...                     
//---------------------------------------------В ЛОНГ-------------------------------------------------------------------------      

      if(((type_op()==OP_BUY) || (Buy_signal==true && Sell_signal==false)) && (orderCount==0 || orderCount < 10) && Period_MA_Fast<Period_MA_Slow && delta_fma()>0 && delta_sma()>0 &&   
           iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,1) > iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,2) && //идентификация впадины 
           iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,2) > iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,3) && //с последующим
           iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,4) > iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,3))   //ростом
            
           WmOrderSend(Symbol(), OP_BUY, Lots_New, Ask,Bid-StopLoss*Point, Bid + TakeProfit*Point, "2MA+Momentum", magic);


//---------------------------------------------В ШОРТ--------------------------------------------------------------------------     
     
      if(((type_op()==OP_SELL) || (Buy_signal==false && Sell_signal==true)) && (orderCount==0 || orderCount < 10) && Period_MA_Fast<Period_MA_Slow  && delta_fma()<0 && delta_sma()<0 &&
          iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,1) < iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,2) && //вершина 
          iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,2) < iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,3) && //с последующим 
          iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,4) < iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,3))   //падением
      
          
           WmOrderSend(Symbol(), OP_SELL, Lots_New, Bid, Ask+StopLoss*Point, Ask - TakeProfit*Point, "2MA+Momentum", magic); 
      
         
 ...          
}//------------------------------------------Конец Старт-----------------------------------------------------

double delta_fma()
  {
    int signal_period= GetPeriod(s_signal_period);
    return(iMA(Symbol(),signal_period,Period_MA_Fast,0,MODE_EMA,PRICE_CLOSE,1)-
           iMA(Symbol(),signal_period,Period_MA_Fast,0,MODE_EMA,PRICE_CLOSE,3));
  }

double delta_sma()
  {
    int trend_period = GetPeriod(t_trend_period); 
    return(iMA(Symbol(),trend_period,Period_MA_Slow,0,MODE_EMA,PRICE_CLOSE,1)-
           iMA(Symbol(),trend_period,Period_MA_Slow,0,MODE_EMA,PRICE_CLOSE,3));
  }

//для оптимизации по всем периодам по всем периодам
int GetPeriod(int period)
{int periodres;
 switch(period)
  {
   case 1: periodres=1;break;     //M1
   case 2: periodres=5;break;     //M5
   case 3: periodres=15;break;    //M15
   case 4: periodres=30;break;    //M30
   case 5: periodres=60;break;    //H1
   case 6: periodres=240;break;   //H4
   case 7: periodres=1440;break;  //D1
   case 8: periodres=10080;break; //W
   default: periodres=1;break;
  }
return(periodres);
} 

Informes. Al probar en H4 - entrada en el mercado cada 4 horas, si se cumplen las condiciones de negociación, aunqueextern int s_signal_period =7;
extern int
t_trend_period =7;

D1 - pruebas en D1 - entrar en el mercado en la apertura de D1, en el mismoextern int s_signal_period=7;
extern int
t_trend_period =7;

Se supone que esto es así... ¿Por qué el probador de la estrategia entra en el mercado en la apertura H4 cuando se prueba en H4, pero no en la apertura de las velas diarias? porques_signal_period=7;
extern int
t_trend_period =7;

Gracias por el consejo sobre este tema.

 
Roman.:

Chicos, una pista... Aquí está la sección de código donde se calculan las condiciones de entrada al mercado. Y con los valores dados de los plazos obtenidos durante la optimización

es decir, el TF = día, la entrada en el mercado se produce en la apertura de velas de 4 horas, en el probador de la estrategia, cuando se prueba en el período H4? Debería haber una entrada SOLO en la apertura de las velas del día - doy un código y secciones de informes para probar en H4 y D1, Asesor Experto con control de una nueva apertura de barra.

Informes. Al probar en H4 - entrada en el mercado cada 4 horas, si se cumplen las condiciones de negociación, aunqueextern int s_signal_period =7;
extern int
t_trend_period =7;

D1 - pruebas en D1 - entrar en el mercado en la apertura de D1, en el mismo extern int s_signal_period=7;
extern int
t_trend_period =7;

Se supone que esto es así... ¿Por qué el probador de la estrategia entra en el mercado en la apertura H4 cuando se prueba en H4, pero no en la apertura de las velas diarias? porques_signal_period=7;
extern int
t_trend_period =7;

Gracias por el consejo sobre este tema.


El código dado no es suficiente para responder
 
Vinin:

El código dado no es suficiente para responder

¿Cuánto código necesita? La parte de la señal está ahí...
 
Vinin:

El código dado no es suficiente para responder

Ahora lo he probado en H1 - abre operaciones cada hora con s_signal_period=7;
extern t_trend_period =7;
 
Roman.:

Ahora probado en H1 - abre operaciones cada hora con s_signal_period=7;
extern int t_trend_period =7;


Tiene sentido hacer global la variable signal_period y asignarle un valor en init()

Y cambiar el control por una nueva barra

   if(iTime(Symbol(),signal_period,0) == prevtime)   return(0);  //ждем нового бара
   prevtime = iTime(Symbol(),signal_period,0);                   //если появился новый бар , включаемся
 
Vinin:


Tiene sentido hacer global la variable signal_period y asignarle un valor en init()

Y cambiar el control de la nueva barra


Ya veo, Víctor, gracias - lo probaré esta noche después del trabajo. Escribiré en este hilo con los resultados.
 
¿Cómo puedo saber si un pedido ha capturado un alce o no?
 
CLAIN:
¿algún consejo para saber si una orden capta una pérdida o no?

Piensa bien.

Búsqueda: detectar sitio de comercio perdedor :mql4.com, buscar sitio de comercio perdedor :mql4.com

 
CLAIN:
¿Cómo puedo saber si una orden ha tenido pérdidas o no?

Si OrderClosePrice()==OrderStopLoss(), entonces la orden se cierra definitivamente en una orden de pérdida. El truco está en el área de qué beneficio se cerró. Digamos que el operador ha abierto una posición, ha establecido un stop loss, y luego, cuando la posición se ha movido a los beneficios, él / ella ha movido el stop loss a una zona de beneficio positivo - por lo que, si el stop se activa, la orden se cerrará con beneficio. El precio volvió a ganar y derribó la orden por el stop. Es decir, el OrderClosePrice() es realmente igual al OrderStopLoss(). El ORDER atrapó a un alce, pero no registró pérdidas, sino beneficios. ¿Qué hacer en esta situación?
 

¡Hola!

¿Pueden decirme cómo calcular el tamaño del lote, en función del precio de entrada, el StopLoss y el porcentaje del depósito? Supongamos que el precio de entrada es 1,4500, el StopLoss es 1,4400. El riesgo es de 100 pips. Si el precio de un pip es de 0,1 y el riesgo es del 2% del saldo (10000) el tamaño del lote sería de 0,2. ¿Es posible deducir esta fórmula en MQL? He buscado en casi todo el foro y no he encontrado nada parecido. Todos los demás métodos de cálculo de lotes son completamente diferentes.

Me gustaría utilizarlo como base para mi robot de trading.