Sistemas de previsão estratégica - página 39

 
-Aleksey-:
Pergunta esclarecedora: os valores dos indicadores condicionais são necessários para todos os castiçais no gráfico a qualquer momento, ou para um certo número de castiçais recentes?
Preferencialmente, para os últimos colocados por alguma janela.
 

Aqui está um trecho do meu código de trabalho. Nunca teve problemas com o fechamento (afinou-o um pouco)

int i, total = EncomendasTotal(), escorregamento = 50;

bool Ans;
for (i = total-1; i >=0; i--) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if(OrderType()==OP_BUY) {
Print("CLOSE BUY");
Ans = falso;
while(Ans==falso) {
Ans = OrderClose(OrderTicket(),OrderLots(),Bid, slippage, DodgerBlue);
Sleep(1000);
RefreshRates();
}
}
if(OrderType() == OP_SELL) {
Print("CLOSE SALE");
Ans = falso;
while(Ans===falso) {
Ans = OrderClose(OrderTicket(),OrderLots(),Ask, slippage, Orange);
Sleep(1000);
RefreshRates();
}
}
}
}

 
rulabs:

Aqui está uma parte do meu código de trabalho. Nunca teve problemas com o fechamento (afinou-o um pouco)

...

Muito obrigado!!! Vou tentar.
 
Farnsworth:
Muito obrigado!!!! Vou tentar.
Obrigado pelo fio. Pergunte se há algo que você precisa.
 
Farnsworth:
de preferência para este último, fixado por algum tipo de janela.

Tenho-o implementado desta forma:

//---начало блока глобальных переменных---------------
int GLOBAL_DATA_LIMIT;
bool first_run=true;
//---конец блока глобальных переменных
//++++++++++++++++++++++++++++++++++++
//---начало блока инициализации
void OnInit()
   {
      GLOBAL_DATA_LIMIT= расчет числа данных(длины окна данных), необходимых для расчета окна условного индикатора заданной длины
      ....инициализация
  }
//---конец блока инициализации индикатора
//+++++++++++++++++++++++++++++++++++++++
//---начало блока обновления индикатора--
int OnCalculate (
                  const int rates_total,      // current size of the timeseries array
                  const int prev_calculated,  // size of the timeseries array got by reurn value the last time
                  const datetime& time[],     // Time
                  const double& open[],       // Open
                  const double& high[],       // High
                  const double& low[],        // Low
                  const double& close[],      // Close
                  const long& tick_volume[],  // Tick Volume
                  const long& volume[],       // Real Volume
                  const int& spread[]         // Spread
                )
   {
      if(rates_total<0)
      {
         printf("На графике отсутствуют исторические данные");
         return(0);
      }
      if(rates_total<GLOBAL_DATA_LIMIT)
      {
         printf("Недостаточно исторических данных, необходимое количество: "+string(GLOBAL_DATA_LIMIT));
         return(0);
      }
      if(prev_calculated==0) // срабатывает при первом запуске, или когда история поменялась
      {
         if (first_run==true) первый расчет при запуске - в момент первого тика после инициализации
         *{
            ArrayCopy(cur_price_array, close, 0, (rates_total-1)-GLOBAL_DATA_LIMIT, GLOBAL_DATA_LIMIT); - копируем в массив необходимое количество значений цены
            ...
            Со скопированным массивом проводим расчет
            Отображаем результат
            ...   
            first_run=false;
         *}
         else расчет на каждом тике
         {
         в это место вставить код *(без first_run=false;), если считать на каждом тике. Если считать не на каждом тике, а по новому бару, то вставить * в функцию isNewBar
         }         
      }
      
      if(isNewBar(_Period)) расчет на каждом баре
      {
          *{
                      ArrayCopy(cur_price_array, close, 0, (rates_total-1)-GLOBAL_DATA_LIMIT, GLOBAL_DATA_LIMIT); - копируем в массив необходимое количество значений цены
                      ...
                      Со скопированным массивом проводим расчет
                      Отображаем результат
                      ...
         *}
      }
      return(rates_total);
   } 
//---конец блока обновления индикатора---
 

Este é um esquema para calcular um ou mais n valores indicadores baseados em m(GLOBAL_DATA_LIMIT) valores de preços copiados em cada barra ou tick.

Se os valores passados da janela de valores calculados não mudarem, então no cálculo (dentro) você pode proceder da seguinte forma

-calcule apenas o novo valor(um);

-mude a janela de valor calculado (matriz com resultados) para a esquerda por 1 índice;

-escrever um novo valor no último índice da matriz de resultados.


Não sei se é claro. O código está em MQL5, eu não sei 4, mas deve ser semelhante, eu acho.

 
-Aleksey-:

...

Obrigado, vou dar uma olhada nisso.
 
Risk:

Admins, o poder absoluto leva à ditadura. Mesmo nosso timbo politicamente correto não suportava este marasmo e foi a algum lugar :)

Deve haver uma oposição que pelo menos às vezes coloca tudo em seu lugar, mas aqui não está claro quem define seriamente as seções de matemática, enquanto não podem fechar a ordem sem a ajuda das crianças em idade escolar. O que vai acontecer amanhã?

Se você é a oposição, eu sou o papa. Você não dá ao autor uma palavra a dizer e não há conteúdo zero em suas postagens. Há uma verdadeira oposição e ela se opõe de forma construtiva. E os trolls não podem ser a oposição, eles são destruidores de temas puros e simples.
Você é apresentado para outra proibição.
 
rulabs:
Obrigado pelo fio. Por favor, pergunte se há algo que você precisa.
Enquanto discutia com um colega, quase perdi um posto de coração. Todos neste site contribuem com algo diferente, portanto não posso aceitar totalmente um "obrigado" - se um tópico se revelar interessante, é graças a todos os seus participantes :o)
 

Para manter o fio vivo:)

Na segunda-feira às 11h15, horário de Moscou, sem nenhuma análise, abri pares observados no MT5 (devo me acostumar com isso).

Eu não abri EURUSD e GBPUSD porque eles eram planos. No entanto, vou segurá-lo até sexta-feira, devo olhar corretamente e possivelmente corrigi-lo todos os dias.

Se alguém estiver interessado, você pode assistir.

Login: 729566

Investidor: iuj2seh


Razão: