[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 161

 
A seguinte situação ocorreu: O Testador de Estratégia não fecha posições TakeProfit. A negociação é feita no TF Day, eu olhei para os TFs menores em negócios com prejuízo - o preço desce/sobre mais do que o nível exigido para acionar o TakeProfit, mas o negócio não está fechado, e quando o preço atinge o StopLoss, então a perda é fixa. Tentei até mesmo a visualização - o preço só passa por TakeProfit e pronto. E às vezes tudo funciona, e às vezes coisas assim aparecem. Ontem mesmo tudo estava bem, mas hoje eu corri o testador e tive uma perda total de desempenho. Eu tentei reinstalar o terminal - não ajudou. Não tenho certeza se estou usando uma empresa de corretagem diferente.
 
beginner666999:
Ocorreu a seguinte situação: o Strategy Tester não fecha posições por TakeProfit. A negociação é feita no TF Day, eu olhei para o TF menor nas negociações com prejuízo - o preço desce/sobre mais do que o nível exigido para o acionamento do TakeProfit, mas a negociação não é fechada e quando o preço atinge o StopLoss, o prejuízo é fixo. Comecei até a visualização - o preço só passa por TakeProfit e pronto. E às vezes tudo funciona, e às vezes coisas assim aparecem. Ontem mesmo tudo estava bem, mas hoje eu corri o testador e tive uma perda total de desempenho. Eu tentei reinstalar o terminal - não ajudou. Não tenho certeza se estou usando uma empresa de corretagem diferente.

Tudo tem a ver com a propagação, ela é aumentada para o fim de semana.

É assim.

 
r772ra:

Tudo tem a ver com a propagação, ela é aumentada para o fim de semana.

É mais ou menos assim.


Obrigado! (LAUGHS) Vou esperar por dias de semana para conferir.
 
r772ra:

Tudo tem a ver com a propagação, ela é aumentada para o fim de semana.

É assim.


Você tem que ser tão idiota - eu olhei para a divulgação do meu instrumento no site do corretor e fiquei surpreso - 11 pips! Mais uma vez, obrigado!
 
Depois outra pergunta, um pouco fora de tópico. Por que eles aumentam a propagação no fim de semana? Afinal, de qualquer forma, não há comércio acontecendo.
 
Konstebl:

Por favor, informe como especificar corretamente a condição. Se houver uma ordem de compra em aberto, se ela estiver no breakeven, então ajustamos o BUYSTOP:

bandeira de bandeira estática ;

if(NewBar())

bandeira = verdadeiro;

para(i=0;i<total;i++)

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()==Symbol() && OrderMagicNumber()==123)

{

if(OrderType()==OP_BUY)

{

if(OrderStopLoss()>OrderOpenPrice())

{

if(Perguntar>m && frUP>0 && flag)

{

preço = NormalizeDuplo(frUP+(Ask-Bid)+30*Ponto,Dígitos);

takeprofit = NormalizeDuplo(preço+tp*Ponto,Dígitos);

bilhete = OrderSend(Symbol(),OP_BUYSTOP,Lots,price,5,Bid-sl*Point,takeprofit, "Fractal",123,TimeCurrent()+72000,Blue);

if(bilhete>0)

bandeira = falsa;

senão

Imprimir("Erro ",GetLastError()));

}

}

}

}

}

não funciona!!!


Você já tentou colocar aparelhos de acordo com a lógica? Porque até agora não há nenhum.

O que está escrito implica que pelo menos uma posição está aberta. Caso contrário, não abrirá nenhuma nova.

 
Vinin:


Você já tentou colocar aparelhos de acordo com a lógica? Porque até agora não há nenhum.

O que está escrito implica que pelo menos uma posição está aberta. Caso contrário, não serão abertos novos


E como você os arranja? Escrevi um pouco mais de código:

 if(NewBar())

     flag = true;    

          for(i=0;i<total;i++)

             {

             OrderSelect(i,SELECT_BY_POS,MODE_TRADES); 

             if(OrderSymbol()==Symbol() && OrderMagicNumber()==123)

                {

                if(OrderType()==OP_BUY || OrderType()<=OP_BUYSTOP)

                   {

                   if(OrderStopLoss()>OrderOpenPrice())

                      {

                      if(Ask>m && frUP>0 && flag)

                         {                

                        price = NormalizeDouble(frUP+(Ask-Bid)+30*Point,Digits);

                        takeprofit = NormalizeDouble(price+tp*Point,Digits);

                        ticket = OrderSend(Symbol(),OP_BUYSTOP,Lots,price,5,Bid-sl*Point,takeprofit,"Fractal",123,TimeCurrent()+72000,Blue);

                       if(ticket>0)

                        flag = false;

                       else

                        Print("Ошибка ",GetLastError());

                      }

                   }

                }

             }

          }
По идее должно работать,но не хочет.
 
beginner666999:
Depois outra pergunta, um pouco fora de tópico. Por que eles aumentam a propagação nos fins de semana? De qualquer forma, eles não negociam.

Não, não no fim de semana, eu não escrevi corretamente, o Spread fica no terminal na última citação que chegou

Portanto, você fecha o terminal durante o dia, sexta-feira. E você o testa no fim de semana.

 
r772ra:

Não, não no fim de semana, eu não escrevi corretamente, o Spread fica no terminal na última citação que chegou

Portanto, você fecha o terminal durante o dia, sexta-feira. E você o testa durante o fim de semana.


Entendi, obrigado! Faz muito mais sentido dessa forma.
 
Konstebl:


E como posso arranjá-los? Acrescentei um pouco de código:


OK, um pouco de lógica

if(NewBar())
    flag = true;    
for(i=0;i<total;i++) {
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES); 
    if(OrderSymbol()==Symbol() && OrderMagicNumber()==123) {
    if(OrderType()==OP_BUY || OrderType()<=OP_BUYSTOP) {
        if(OrderStopLoss()>OrderOpenPrice()) {
            if(Ask>m && frUP>0 && flag) {                
                price = NormalizeDouble(frUP+(Ask-Bid)+30*Point,Digits);
                takeprofit = NormalizeDouble(price+tp*Point,Digits);
                ticket = OrderSend(Symbol(),OP_BUYSTOP,Lots,price,5,Bid-sl*Point,takeprofit,"Fractal",123,TimeCurrent()+72000,Blue);
                if(ticket>0)
                    flag = false;
                else
                    Print("Ошибка ",GetLastError());
            }
        }
    }
}

          }

O laço é executado independentemente da condição se(NewBar())

Razão: