[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 169

 
Vinin >> :

A cosa equivale l'i?

Volevo solo mostrare le basi - i è definito come:

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

   while( i>=0) {


cioè inizia dalla barra più alta e va a zero.

Se mantengo l'indicatore in funzione, per 0 valori di i tutto inizia a funzionare (disegna rettangoli per la corrente

ecc.), ma non c'è nulla sulla storia. Ho pensato che forse ha qualcosa a che fare con la definizione dell'array!

 
chief2000 писал(а) >>

Volevo solo mostrare le basi - i è definito come:

cioè inizia dalla barra più alta e va a zero.

Se mantengo l'indicatore in funzione, per 0 valori di i tutto inizia a funzionare (disegna rettangoli per la corrente

ecc.), ma non c'è nulla sulla storia. Ho pensato che forse ha qualcosa a che fare con la definizione dell'array!

Allora dovrò mostrare il codice completo dell'indicatore.

 
Vinin >> :

Poi dovrete mostrare il codice completo dell'indicatore.

Ecco il codice - ho rimosso tutto ciò che non era rilevante per il 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);
}
 

Da dove iniziare a scrivere void ManagePositions() per condizioni conoscitive

Ci sono array
per (tf = 0; tf < 5; tf++)
{
......
int TF[tf] - time frame {5,15,30,60,240}
int signal[tf] - "1" - comprare
- "2" - chiudere l'acquisto
- "-1" - vendere
- "-2" - chiudere la vendita
int mn_b[tf] - magic_number_buy diverso per tutti i time frame
int mn_s[tf] - magic_number_sell diverso per tutti i time frame
}

Dovrebbe
aprire
sul time frame 5.15 aperto in una direzione fino a tre ordini
- 1 ordine MM = 1 MONEY
- 2 MM ordine = 2
- 3 MM ordine = 3
a tempo 30 aprire un modo fino a due ordini
- 1 ordine MM = 2
- 2 MM = 3

al time frame 60 un ordine è aperto su un lato
- 1 ordine MM = 3

a tempo 240 non si apre

Diluizione del secondo e terzo ordine secondo diverse condizioni

In totale non riceviamo più di 9 ordini da un lato

Chiudere
Quando appare un segnale di vendita di chiusura del time frame, questo chiude tutti gli ordini di vendita nel dato time frame
Quando appare un segnale di acquisto di chiusura del time frame, chiude tutti gli ordini di acquisto nel timeframe corrente


Per favore aiutatemi

 

Per favore, spiega come identificare un biglietto o un numero d'ordine se si sa che è il primo con un dato numero magico.

Grazie in anticipo!

 

I. Il ramo di Kim 'Funzioni utili da KimIV'.

Funzione GetTicketLastPos(). Pagina 19.
Questa funzione restituisce il biglietto dell'ultima posizione aperta o -1.
La funzione GetIndexLastPos(). P.17
Questa funzione restituisce l'indice dell'ultima posizione aperta o -1.
La funzione IndexByTicket(). P.12
Restituisce l'indice (il numero di indice nella lista generale degli ordini impostati o delle posizioni aperte) dell'ordine o della posizione dal ticket. Se IndexByTicket() non trova un ordine o una posizione con il ticket richiesto, restituisce -1





 
rid >> :

I. Il ramo di Kim 'Funzioni utili da KimIV'.

Funzione GetTicketLastPos(). Pagina 19.
Questa funzione restituisce il biglietto dell'ultima posizione aperta o -1.
La funzione GetIndexLastPos(). P.17
Questa funzione restituisce l'indice dell'ultima posizione aperta o -1.
La funzione IndexByTicket(). P.12
Restituisce l'indice (il numero di indice nella lista generale degli ordini impostati o delle posizioni aperte) dell'ordine o della posizione dal ticket. Se IndexByTicket() non trova un ordine o una posizione con il ticket richiesto, restituisce -1





Grazie per il vostro aiuto!

 
chief2000 >> :

Ecco il codice - ho rimosso tutto ciò che non era rilevante per il problema:


Ho trovato la causa:

i = Bars-30 - counted_bars - 1;

invece di .

i = Bars - counted_bars - 1;


Grazie!

 

Un'altra domanda di base al mio codice di cui sopra - lo stesso esatto indicatore funziona separatamente

e disegna una linea nella finestra sotto quella principale (e un'altra aggiunge altri oggetti grafici nella finestra superiore).

I due cicli for all'interno di while() sovraccaricano notevolmente il computer.

- È possibile creare rettangoli, frecce ecc. in alto e una linea

(curva tipo RSI) in basso?