[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 982

 
Aleksander:

declarar uma variável

no início - quando um sinal é recebido, aumente-o em 1, quando N sinais são recebidos, abra um comércio,

contador de reset...

Escrevi o máximo que pude, mas não está claro como projetar a adição do sinal...
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);
  }
//+------------------------------------------------------------------+
 

Boa tarde!

Por favor, me ajude com esta pergunta. Fiz um Expert Advisor. Quero saber se posso trabalhar com a curva de juros que ela produz. A questão é qual curva pode ser considerada como a "curva" mínima :). Eu dei minha curva. 1999 -2010.

P.S. A pergunta não é ociosa. Quando eu o coloco por conta real, a curva vai descer temporariamente.

 
001:

Boa tarde!

Por favor, me ajude com esta pergunta. Fiz um Expert Advisor. Quero saber se posso trabalhar com a curva de juros que ela produz. A questão é qual curva pode ser considerada como a "curva" mínima :). Eu dei minha curva. 1999 -2010.

P.S. A pergunta não é ociosa. Quando eu o coloco por conta real, a curva vai descer temporariamente.

Tudo depende do código da própria EA. Talvez esteja completamente nu - apenas um brinquedo para o testador. Que teste de barra você tem aqui. O EA tem controle explícito de abertura de barra?
 
artmedia70:
Tudo depende do código da própria EA. Talvez esteja completamente nu - apenas um brinquedo para o testador. Bem, e o teste da barra? A EA tem controle explícito sobre a abertura de bares?


Sim, é claro que sim.

estática int PrevTime=0;
int start()
{

se (Time[0]<=PrevTime) voltar(0);
{
PrevTime=Time[0];

}

Explique as duas primeiras frases, por favor.

 

Eu não entendo o livro didático,

o "quebra" pára todo o loop e o Expert Advisor espera por um novo tick?

e pode ser usado em "if-else", digamos se for "break" ?

 
gheka:

Eu não entendo o livro didático,

o "quebra" pára todo o loop e o Expert Advisor espera por um novo tick?

e pode ser usado em "if-else", digamos se for "break" ?

break termina todo o loop e continua executando seu código a partir da próxima linha após o parêntese de fechamento do bloco de declaração do loop.

em if-else você pode usá-lo. De que outra forma você verificaria os critérios para abortar um loop???

 
A função OrderModify() cria uma entrada separada no histórico comercial. Eu o uso ao escrever um EA para implementar o Trailing Stop. Ou seja, se a condição de Trailing Stop for cumprida e StopLoss se mover, e isso pode acontecer a cada segundo, então o mesmo número de linhas aparecerá na história. Há alguma maneira de evitar isso? O Trailing Stop integrado no MetaTrader funciona normalmente.
 
dzam:
A função OrderModify() cria um registro separado no histórico comercial. Eu o uso quando escrevo um consultor especializado para implementar a Trailing Stop. Ou seja, se a condição de Trailing Stop for cumprida e StopLoss se mover, e isso pode acontecer a cada segundo, então a mesma quantidade de linhas aparecerá na história. Existe alguma maneira de evitar isso? O Trailing Stop integrado no MetaTrader funciona normalmente.

Não é mais fácil implementar uma rede de arrasto usando preço, valor de parada, distância de parada do preço e passo da rede de arrasto?

Ou é mais interessante caminhar até a entrada do banco através do Zimbábue?

 
artmedia70:

Não seria mais simples usar preço, valor de parada, distância de parada do preço e passo de arrasto para implementar a rede de arrasto???

Ou, é mais interessante caminhar até a entrada do banco através do Zimbábue?

OK, entramos pela entrada da frente. Atenção, mais uma pergunta:

Aqui está um trecho de código do exemplo de implementação do 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 código usa OrderModify() para modificar um pedido de acordo com as condições TrailingStop. Função OrderModify() cria um registro separado no histórico comercial. Ou seja, se as condições de Trailing Stop forem cumpridas e Stop Loss se mover, e isto pode acontecer a cada segundo, a mesma quantidade de linhas aparecerá na história. Existe alguma maneira de evitar isso? O Trailing Stop integrado no MetaTrader funciona normalmente.

 
dzam:

OK, entramos pela porta da frente. Atenção, mais uma pergunta:

Aqui está um trecho de código do exemplo de implementação do TrailingStop

}

Este código usa OrderModify() para modificar um pedido de acordo com as condições TrailingStop. Função OrderModify() cria um registro separado no histórico comercial. Ou seja, se as condições de Trailing Stop forem cumpridas e Stop Loss se mover, e isto pode acontecer a cada segundo, a mesma quantidade de linhas aparecerá na história. Existe alguma maneira de evitar isso? O Trailing Stop integrado no MetaTrader funciona corretamente.


Não há como evitá-lo. Cada comércio, como qualquer modificação de posição, cria sua própria entrada de registro
Razão: