[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 982

 
Aleksander:

declarar una variable

al inicio - cuando se recibe una señal, se incrementa en 1, cuando se reciben N señales, se abre una operación,

restablecer el contador...

He escrito todo lo que he podido, pero no está claro cómo diseñar la adición de señales...
extern double     PropuskSignala             =  0;  //сколько сигналов инлдикатора пропускать
//-------------------
double PropuskSignalaB,PropuskSignalaS;

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
//получаем сигнал: (SignalBuy==true;)
PropuskSignalaB++;  //вот здесь как записать? Чтобы прибавлялись
//получаем сигнал: (SignalSell==true;)
PropuskSignalaS++;  //вот здесь как записать? Чтобы прибавлялись

if(SignalBuyif(PropuskSignalaB>=PropuskSignala || PropuskSignalaS>=PropuskSignala){
//открываем ордер Buy
}
if(SignalSellif(PropuskSignalaS>=PropuskSignala || PropuskSignalaB>=PropuskSignala){
//открываем ордер Sell
}
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
 

¡Buenas tardes!

Por favor, ayúdenme con esta pregunta. He hecho un Asesor Experto. Quiero saber si puedo trabajar con la curva de rendimiento que produce. La cuestión es qué curva puede considerarse la "curva" mínima :). He dado mi curva. 1999 -2010.

P.D. La pregunta no es ociosa. Cuando lo coloque en la cuenta real, la curva bajará temporalmente.

 
001:

¡Buenas tardes!

Por favor, ayúdenme con esta pregunta. Hice un Asesor Experto. Quiero saber si puedo trabajar con la curva de rendimiento que produce. La cuestión es qué curva puede considerarse la "curva" mínima :). He dado mi curva. 1999 -2010.

P.D. La pregunta no es ociosa. Cuando lo coloque en la cuenta real, la curva bajará temporalmente.

Todo depende del código del propio EA. Tal vez esté completamente desnudo - sólo un juguete para el probador. Menudo examen de barra tiene usted aquí. ¿Tiene el EA un control explícito de la apertura de la barra?
 
artmedia70:
Todo depende del código del propio EA. Tal vez esté completamente desnudo - sólo un juguete para el probador. ¿Y qué hay del examen del bar? ¿Tiene el EA un control explícito de la apertura de la barra?


Sí, claro que sí.

static int PrevTime=0;
int inicio()
{

if (Time[0]<=PrevTime) return(0);
{
PrevTime=Hora[0];

}

Explique las dos primeras frases, por favor.

 

No entiendo el libro de texto,

¿el "break" detiene todo el bucle y el Asesor Experto espera un nuevo tick?

¿y se puede utilizar en "if-else", digamos que si es "break"?

 
gheka:

No entiendo el libro de texto,

¿el "break" detiene todo el bucle y el Asesor Experto espera un nuevo tick?

¿y se puede utilizar en "if-else", digamos que si es "break"?

break termina todo el bucle y continúa la ejecución de su código a partir de la siguiente línea después del paréntesis de cierre del bloque de declaración del bucle.

en if-else se puede utilizar. ¿De qué otra manera se pueden comprobar los criterios para abortar un bucle?

 
La función OrderModify() crea una entrada independiente en el historial de operaciones. Lo uso cuando escribo un EA para implementar el Trailing Stop. Es decir, si la condición del Trailing Stop se cumple y el StopLoss se mueve, y puede ocurrir cada segundo, entonces aparecerá el mismo número de líneas en el historial. ¿Hay alguna forma de evitarlo? El Trailing Stop incorporado en MetaTrader funciona normalmente.
 
dzam:
La función OrderModify() crea un registro independiente en el historial de operaciones. Lo uso cuando escribo un Asesor Experto para implementar el Trailing Stop. Es decir, si la condición del Trailing Stop se cumple y el StopLoss se mueve, y esto puede ocurrir cada segundo, entonces la misma cantidad de líneas aparecerá en el historial. ¿Hay alguna forma de evitarlo? El Trailing Stop incorporado en MetaTrader funciona normalmente.

¿No es más fácil implementar una red de arrastre utilizando el precio, el valor del stop, la distancia del stop al precio y el paso de la red de arrastre?

¿O es más interesante ir a la entrada desde el banco por Zimbabwe?

 
artmedia70:

¿No sería más sencillo utilizar el precio, el valor del stop, la distancia del stop al precio y el paso de arrastre para implementar el arrastre?

¿O es más interesante ir a la entrada desde el banco por Zimbabwe?

Bien, entramos por la entrada principal. Atención, una pregunta más:

Este es un fragmento de código del ejemplo de implementación de TrailingStop

/---- проверяем, не надо ли передвинуть Стоп Лосс:
        //---- если размер трейлингстопа не слишком маленький,
        if ( TrailingStop > MarketInfo( Symbol(), MODE_STOPLEVEL ) )
        {
            //---- если прибыль позиции больше TrailingStop пунктов,
            if ( NormalizeDouble( Bid - _BuyOpenPrice, Digits ) > 
                  NormalizeDouble( TrailingStop*Point, Digits ) )
            {
                //---- если новый уровень стоплосса выше, чем сейчас у позиции
                //---- (или если у позиции нет Стоп Лосса),
                if ( NormalizeDouble( Bid - TrailingStop*Point, 
                    Digits ) > _BuyStopLoss
                      || _BuyStopLoss <= 0.0 )
                {
                    //---- модифицируем ордер
                    if ( !OrderModify( _BuyTicket, _BuyOpenPrice, 
                          NormalizeDouble( Bid - TrailingStop*Point, 
                                           Digits ), 
                          _BuyTakeProfit, 0 ) )
                    {
                        Alert( "OrderModify Error #", 
                              GetLastError() );
                        return(-1);
                    }
                }                     

}

Este fragmento de código utiliza OrderModify() para modificar una orden según las condiciones de TrailingStop. La función OrderModify() crea un registro independiente en el historial de operaciones. Es decir, si se cumplen las condiciones del Trailing Stop y el Stop Loss se mueve, y esto puede ocurrir cada segundo, aparecerá la misma cantidad de líneas en el historial. ¿Hay alguna forma de evitarlo? El Trailing Stop incorporado en MetaTrader funciona normalmente.

 
dzam:

Bien, entremos por la puerta principal. Atención, una pregunta más:

Este es un fragmento de código de la implementación de ejemplo de TrailingStop

}

Este fragmento de código utiliza OrderModify() para modificar una orden según las condiciones de TrailingStop. La función OrderModify() crea un registro independiente en el historial de operaciones. Es decir, si se cumplen las condiciones del Trailing Stop y el Stop Loss se mueve, y esto puede ocurrir cada segundo, aparecerá la misma cantidad de líneas en el historial. ¿Hay alguna forma de evitarlo? El Trailing Stop incorporado en MetaTrader funciona correctamente.


No hay manera de evitarlo. Cada operación, al igual que cualquier modificación de la posición, crea su propia entrada en el registro