Sistemas de previsión estratégica - página 39

 
-Aleksey-:
Pregunta aclaratoria: ¿se necesitan los valores del indicador condicional para todas las velas del gráfico en un momento dado, o para un determinado número de velas recientes?
Preferiblemente, para los últimos establecidos por alguna ventana.
 

Aquí está un trozo de mi código de trabajo. Nunca tuve problemas con el cierre (lo ajusté un poco)

int, total = OrdersTotal(), slippage = 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 = false;
while(Ans==false) {
Ans = OrderClose(OrderTicket(),OrderLots(),Bid, slippage, DodgerBlue);
Sleep(1000);
RefreshRates();
}
}
if(OrderType() == OP_SELL) {
Print("CLOSE SALE");
Ans = false;
while(Ans==false) {
Ans = OrderClose(OrderTicket(),OrderLots(),Ask, slippage, Orange);
Sleep(1000);
RefreshRates();
}
}
}
}

 
rulabs:

Aquí está un trozo de mi código de trabajo. Nunca tuve problemas con el cierre (lo ajusté un poco)

...

¡¡¡Muchas gracias!!! Lo intentaré.
 
Farnsworth:
¡¡¡Muchas gracias!!! Lo intentaré.
Gracias por el hilo. Pregunte si hay algo que necesita.
 
Farnsworth:
preferentemente para este último, fijado por algún tipo de ventana.

Lo tengo implementado así:

//---начало блока глобальных переменных---------------
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);
   } 
//---конец блока обновления индикатора---
 

Se trata de un esquema para calcular uno o más valores de indicadores n basados en valores de precios m(GLOBAL_DATA_LIMIT) copiados en cada barra o tick.

Si los valores pasados de la ventana de valores calculados no cambian, entonces en el cálculo (interior) se puede proceder como sigue

-Calcular sólo el nuevo valor(uno);

-desplazar la ventana de valores calculados (array con resultados) hacia la izquierda en 1 índice;

-Escribir un nuevo valor en el último índice de la matriz de resultados.


No sé si está claro. El código está en MQL5, no conozco el 4, pero debe ser similar supongo.

 
-Aleksey-:

...

Gracias, lo investigaré.
 
Risk:

Administradores, el poder absoluto conduce a la dictadura. Incluso nuestro políticamente correcto timbo no pudo soportar este marasmo y se fue a algún sitio :)

Debe haber una oposición que al menos a veces ponga todo en su sitio, pero aquí no está claro quién define seriamente las secciones de matemáticas, mientras que no pueden cerrar el orden sin la ayuda de los escolares. ¿Qué pasará mañana?

Si tú eres la oposición, yo soy el Papa. No le das al autor ni una palabra y hay cero contenido en tus posts. Hay una oposición real y se opone constructivamente. Y los trolls no pueden ser oposición, son destructores de temas pura y simplemente.
Se presenta para otra prohibición.
 
rulabs:
Gracias por el hilo. Por favor, pregunte si hay algo que necesita.
Mientras discutía con un colega, casi se me escapa un post muy sincero. Todo el mundo en este sitio aporta algo diferente, así que no puedo aceptar el "gracias" por completo; si un hilo resulta interesante, es gracias a todos sus participantes :o)
 

Para mantener vivo el hilo:)

El lunes a las 11:15 de la mañana hora de Moscú, sin ningún análisis, abrí pares observados en MT5 (debería acostumbrarme).

No abrí el EURUSD y el GBPUSD porque estaban planos. Sin embargo, lo aguantaré hasta el viernes, debería mirar bien y posiblemente corregirlo cada día.

Si alguien está interesado, puede verlo.

Nombre de usuario: 729566

Inversor: iuj2seh


Razón de la queja: