[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 488

 
hoz:

Vou duplicar a pergunta, talvez ninguém tenha notado por causa das perguntas posteriores.

Decidi entender como funciona o indicadorATR e, ao mesmo tempo, estudar seu código. Entendi a essência, mas está escrita de forma estranha.

Aqui está sua funçãoinicial:

Aqui está o primeiro bloco com alguma confusão:

Qual é o sentido de se fazer algo se o valor das barrinhas contadas <1. Na minha opinião, isso significa que o indicador não contou nenhuma barra e eu deveria simplesmente sair da função, pois ainda não há valores... Qual é o senão?

Por quea AtrBuffer tem o índice[Bars-i]? Entendi que a idéia é colocar o buffer em 0,0 se não houver valores. Mas acontece que o valor 0,0 é definido apenas para barras de(Barras) a(Período AtrP), enquanto que doPeríodo AtrP atéa barra 0 nada é escrito para o buffer. Por quê?

Eu não entendo a lógica deste fragmento de código

No próximo bloco:

Na fila:

Condição sei==Bars-1. Parece que o valor dabarra desde o início do gráfico à esquerda é levado em conta...Mas isto está muito longe, de que serve este valor?


As barras são contadas da direita para a esquerda (de 0 para a última (Barras) menos 1). Com cada nova barra (0) todas as barras são correspondentemente aumentadas em uma, e a última (à esquerda) nunca é especificada em termos numéricos, e esta variável Barras, porque ninguém sabe que história você tem, mas garante o trabalho do indicador em toda a história, que ele tem. Treine sua lógica, não há maneira de entender nada sem ela!
 
laveosa:
Eu tenho 1 pip-1 cent. isso significa que preciso de 20USD para poder suportar uma parada de 200 pips para baixo?
Se um lote de 0,01 ponto = 1 centavo, então para uma posição de 0,1 lote com uma perda de 200 pips stop = 20 USD.
 
borilunad:

As barras são contadas da direita para a esquerda (de 0 para a última (Barras) menos 1). A cada nova barra (0) todas as barras são correspondentemente aumentadas em uma, e a última (esquerda) nunca é especificada numericamente, e esta variável Barras, porque ninguém sabe que história você tem, mas ela garante o trabalho do indicador em toda a história, que ele tem. Treine sua lógica, não há maneira de entender nada sem ela!

Eu sei que as barras são contadas da direita para a esquerda. Se houver 5000 barras no gráfico e período ATR = 14, então[Bars-i] levará o valor de (5000 - 1) a (5000 - 14), ou seja, de 4999 a 4986.

Portanto,a AtrBuffer estará com índice i igual a 4999 a 4986. E onde estão as barras restantes de 0 a 4986????

 
hoz:

Eu sei que as barras são contadas da direita para a esquerda. Se houver 5000 barras no gráfico e período ATR = 14, então[Bars-i] levará o valor de (5000 - 1) a (5000 - 14), ou seja, de 4999 a 4986.

Portanto,a AtrBuffer estará com índice i igual a 4999 a 4986. E onde estão as outras barras de 0 a 4986????


Como você calcula? Se o período ATR = 14, então a barra zero dá a média das 14 barras antes da barra zero e assim por diante até a profundidade da história.

O i passa por cima das 14 barras em último lugar no tempo, mas primeiro em número para calculá-las em média ou o que fazer com a fórmula. Também conta o valor da 4986ª barra pelas 14 barras anteriores no tempo, ou seja, por aqueles que estão à esquerda.

Estude o para operador no Doc e no tutorial!

 
borilunad:


Como você calcula? Se o período ATR = 14, então a barra zero dá a média das 14 barras antes da barra zero e assim por diante até a profundidade da história.

Eu ultrapassei as 14 barras da última vez, mas ultrapassei a primeira por número para calculá-las ou o que fazer com a fórmula. Também conta o valor da 4986ª barra pela última barra no tempo, ou seja, pelas que estão à esquerda.

Estude o para operador em Doc e o tutorial!

Não era essa a pergunta, o que você disse eu entendo. Fui eu que estava trabalhando demais e fui estúpido. Havia um incômodo no fato de que o buffer doperíodo AtrPassar o número de barras da história... E eu estava olhando para ele e não o consegui. Eu fico assim quando trabalho demais...
 
hoz:

Victor, suas suposições são ilógicas.

Se o indicador não tiver processado uma única barra, significa que ele deve processar todas as barras e não terminar o programa.

E os valores indicadores sobre o histórico são necessários para analisar o histórico:)

 
Estimados profissionais, é um spread matodied EA de 4 ao testar todos os carrapatos em 5mins ainda mau, ou é mais ou menos?
 
kakin:
Caros profissionais, a propagação de um EA em um teste de 5 minutos ainda é ruim, ou é mais ou menos?

Não há muita informação, e os profissionais estão dormindo:)
 
paladin80:
Se um lote 0,01 = 1 centavo, então para uma posição de 0,1 lote com uma perda de 200 pips stop = 20 USD.
thanks buddy i thought so...... thanks :)
 

Por favor, ajude a fazer esta função vice versa:

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 11.09.2008                                                     |
//|  Описание : Перенос уровня стопа в безубыток                               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ( ""  - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   ( -1  - любая позиция)                  |
//|    mn - MagicNumber                ( -1  - любой магик)                    |
//|    Кроме того, функция MovingInWL() предполагает наличие глобальных переменных (внешних параметров скрипта или советника):
//|    int LevelProfit - Уровень профита в пунктах, которого должна достигнуть позиция для того, чтобы её стоп был перенесён на уровень безубытка.
//|    int LevelWLoss - Уровень безубытка в пунктах, на который будет перенесён стоп позиции после того, как её профит достигнет уровня LevelProfit в пунктах.
//+----------------------------------------------------------------------------+
void MovingInWL(string sy="", int op=-1, int mn=-1) {
  double po, pp;
  int    i, k=OrdersTotal();

  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      po=MarketInfo(OrderSymbol(), MODE_POINT);
      if (OrderType()==OP_BUY) {
        if (OrderStopLoss()-OrderOpenPrice()<LevelWLoss*po) {
          pp=MarketInfo(OrderSymbol(), MODE_BID);
          if (pp-OrderOpenPrice()>LevelProfit*po) {
            ModifyOrder(-1, OrderOpenPrice()+LevelWLoss*po, -1);
          }
        }
      }
      if (OrderType()==OP_SELL) {
        if (OrderStopLoss()==0 || OrderOpenPrice()-OrderStopLoss()<LevelWLoss*po) {
          pp=MarketInfo(OrderSymbol(), MODE_ASK);
          if (OrderOpenPrice()-pp>LevelProfit*po) {
            ModifyOrder(-1, OrderOpenPrice()-LevelWLoss*po, -1);
          }
        }
      }
    }
  }
}

Isto é, se o preço for para um prejuízo de uma ordem aberta pelo número de pips LevelProfit (você pode chamá-lo LevelLoss), você tem que mover TakeProfit para zero ou para um prejuízo de 1 pip 2, etc., dependendo do que você colocar no parâmetro LevelWLoss, de modo que se o preço se vira mesmo, não haveria mais lucro. Ou talvez você tenha um pronto?

Agradecemos antecipadamente))