[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 169

 
Vinin >> :

¿A qué equivale la i?

Sólo quería mostrar lo básico - i se define como:

   int counted_bars = IndicatorCounted(), i;
   i = Bars - counted_bars - 1;

   while( i>=0) {


es decir, comienza en la barra más alta y llega a cero.

Si mantengo el Indicador en funcionamiento entonces para valores 0 de i todo empieza a funcionar (dibuja rectángulos para la corriente

etc.), pero no hay nada sobre la historia. He pensado que quizá tenga que ver con la definición de la matriz.

 
chief2000 писал(а) >>

Sólo quería mostrar lo básico - i se define como:

es decir, comienza en la barra más alta y llega a cero.

Si mantengo el Indicador en funcionamiento entonces para valores 0 de i todo empieza a funcionar (dibuja rectángulos para la corriente

etc.), pero no hay nada sobre la historia. He pensado que quizá tenga que ver con la definición de la matriz.

Entonces tendré que mostrar el código completo del indicador.

 
Vinin >> :

Entonces tendrá que mostrar el código completo del indicador.

Aquí está el código - he eliminado todo lo que no era relevante para el problema:

 
#property indicator_chart_window
#property indicator_buffers 4



int    i;


// ------------------------------------------------------
extern int RSI_Periods = 14;
extern int Percent_K   = 14;

//---- buffers
// double Buffer1[];
double Buffer1[99000];

// double Current_RSI,Lowest_RSI,Highest_RSI,sum_K;
// ------------------------------------------------------




  
int init() {
   return(0);
}




// -------------------------------------------------------------------------------
int start() {

   int counted_bars = IndicatorCounted(), i;
   i = Bars - counted_bars - 1;

   while( i>=0) {

// ============================================================================================
      double Current_RSI, Lowest_RSI, Highest_RSI;


      Current_RSI    = iRSI(NULL,0, RSI_Periods,PRICE_TYPICAL, i);
      Highest_RSI    = Current_RSI;
      Lowest_RSI     = Current_RSI;

      for(int x= i+1; x<= Percent_K+ i+1; x++){
         Lowest_RSI  = MathMin( Lowest_RSI, iRSI(NULL,0, RSI_Periods,PRICE_TYPICAL, x));
         Highest_RSI = MathMax( Highest_RSI,iRSI(NULL,0, RSI_Periods,PRICE_TYPICAL, x));
      }


      Buffer1[ i]     = (( Current_RSI- Lowest_RSI) / ( Highest_RSI- Lowest_RSI)) * 100;
// ============================================================================================



   Comment(
      "\n",
      "\n",
      "\n",
      "\n",
      "\n", "Current_RSI = "  , Current_RSI,
      "\n", "Highest_RSI = "  , Highest_RSI,
      "\n", "Lowest_RSI = "  , Lowest_RSI,
      "\n", "Percent_K = "  , Percent_K,
      "\n", "((Current_RSI-Lowest_RSI) / (Highest_RSI-Lowest_RSI)) * 100 = "  , (( Current_RSI- Lowest_RSI) / ( Highest_RSI- Lowest_RSI)) * 100,
      "\n", "iRSI(NULL,0,RSI_Periods,PRICE_TYPICAL,i) = "  , iRSI(NULL,0, RSI_Periods,PRICE_TYPICAL, i),
      "\n", "i = "  , i,
//      "\n", "Percent_K = "  , Percent_K,
//      "\n", "Percent_K = "  , Percent_K,
      "\n",
      "\n",
      "\n", "Buffer1[i+30] = ", Buffer1[ i+30],
      "\n", "Buffer1[i+12] = ", Buffer1[ i+12],
      "\n", "Buffer1[i+1] = ", Buffer1[ i+1],
      "\n", "Buffer1[i] = "  , Buffer1[ i],
      "\n",
      "\n"
   );


      i--;
   }


   return(0);
}
 

Por dónde empezar a escribir el void ManagePositions() por condiciones conocidas

Hay matrices
for (tf = 0; tf < 5; tf++)
{
......
int TF[tf] - marco temporal {5,15,30,60,240}
int señal[tf] - "1" - comprar
- "2" - compra cerrada
- "-1" - vender
- "-2" - cerrar la venta
int mn_b[tf] - magic_number_buy diferente para todos los plazos
int mn_s[tf] - magic_number_sell diferente para todos los plazos
}

Debería
Abrir
en el marco temporal 5.15 abrir en una dirección hasta tres órdenes
- 1 pedido de MM = 1 DINERO
- 2 MM orden = 2
- 3 MM orden = 3
en el marco de tiempo 30 abierto de una manera hasta dos órdenes
- 1 pedido de MM = 2
- 2 MM = 3

en el marco temporal 60 se abre una orden a un lado
- 1 pedido de MM = 3

en el marco temporal 240 no se abre

Dilución del segundo y tercer orden según diferentes condiciones

En total, no recibimos más de 9 órdenes a un lado

Cerrar
Cuando aparece una señal de venta de cierre de marco de tiempo, esto cierra todas las órdenes de venta en el marco de tiempo dado
Cuando aparece una señal de compra de cierre de marco temporal, cierra todas las órdenes de compra en el marco temporal actual


Por favor, ayuda

 

Por favor, explique cómo identificar un billete o número de pedido si se sabe que es el primero con un número mágico determinado.

Gracias de antemano.

 

I. Rama de Kim 'Funciones útiles de KimIV'.

Función GetTicketLastPos(). Página 19.
Esta función devuelve el ticket de la última posición abierta o -1.
La función GetIndexLastPos(). P.17
Esta función devolverá el índice de la última posición abierta o -1.
La función IndexByTicket(). P.12
Devuelve el índice (el número de índice en la lista general de órdenes establecidas o posiciones abiertas) de la orden o posición por el ticket. Si IndexByTicket() no encuentra una orden o posición con el ticket requerido, devolverá -1





 
rid >> :

I. Rama de Kim 'Funciones útiles de KimIV'.

Función GetTicketLastPos(). Página 19.
Esta función devuelve el ticket de la última posición abierta o -1.
La función GetIndexLastPos(). P.17
Esta función devolverá el índice de la última posición abierta o -1.
La función IndexByTicket(). P.12
Devuelve el índice (el número de índice en la lista general de órdenes establecidas o posiciones abiertas) de la orden o posición por el ticket. Si IndexByTicket() no encuentra una orden o posición con el ticket requerido, devolverá -1





Gracias por su ayuda.

 
chief2000 >> :

Aquí está el código - he eliminado todo lo que no era relevante para el problema:


He encontrado la causa:

i = Bars-30 - counted_bars - 1;

en lugar de .

i = Bars - counted_bars - 1;


Gracias.

 

Otra pregunta básica a mi código anterior - el mismo indicador se ejecuta por separado

y dibuja una línea en la ventana inferior a la principal (y otra añade otros objetos gráficos en la ventana superior).

Los dos bucles for dentro de while() sobrecargan notablemente el ordenador.

- ¿Es posible crear rectángulos, flechas, etc. en la parte superior y una línea

(curva tipo RSI) en la parte inferior?