Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 899

[Deleted]  
Compagni programmatori, una grande richiesta di aiuto per scrivere un pezzo di codice per il robot! Il robot fa trading su due muwings. Quando si incrociano, apre una posizione e la chiude all'incrocio opposto. Ma ha bisogno di aprire un'altra posizione al crossover opposto. Così, quando chiude "Buy", il robot dovrebbe immediatamente aprire "Sell" e viceversa!
File:
 
lufer:
Grazie, ma non funziona con Mas[N]; in OnInit(), ho già provato.
Beh, mi dispiace, non ero molto sobrio ieri. O non molto sobrio.
 
AlexeyVik:
Beh, mi dispiace, non ero molto sobrio ieri sera. O non molto sobrio.
)), succede.
 

Supponiamo che io voglia che l'array sia riempito con dati presi da un indicatore (per esempio ATR) da ogni barra a partire dalla prima barra formata (#1)? Cioè, l'array è dichiarato e la funzione start lo inizializza già. Come farlo correttamente?

come questo?

for(int i=0; i<N; i=i++)

{

Mas[i]=iATR(NULL,0,1,i+1);

}

Oppure può essere fatto via:

for(int i=0; i<N; i=i++)

{

ArrayFill(Mas,i,1,iATR(NULL,0,1,i+1))

}

o qualcos'altro del tutto?, finora non sono riuscito in alcun modo(, qualcosa di sbagliato, si prega di consigliare, grazie in anticipo.

 
lufer:

Supponiamo che io voglia che l'array sia riempito con dati presi da un indicatore (per esempio ATR) da ogni barra a partire dalla prima barra formata (#1)? Cioè, l'array è dichiarato e la funzione start lo inizializza già. Come farlo correttamente?

come questo?

for(int i=0; i<N; i=i++)

{

Mas[i]=iATR(NULL,0,1,i+1);

}


Il primo caso è sufficiente. Ma se avete bisogno di valori a partire dalla prima barra, sarebbe saggio contare anche il ciclo da 1.
 
evillive:
La prima opzione è sufficiente. Ma se abbiamo bisogno di valori a partire dalla prima barra, sarebbe più ragionevole contare il ciclo da 1.
Ho provato sia con 1 che con 0, ma c'è ancora qualcosa che non va, i valori non vengono scritti, quando chiedo di emetterne qualcuno - dà solo degli zeri
 
lufer:
Ho provato sia con 1 che con 0, ancora non funziona, nessun valore viene scritto, quando chiedo di emettere qualche valore - emette solo degli zeri.
Per favore, mostratemi il codice di output.
 
evillive:
Mostra il codice per chiedere l'output.

Vi mostrerò tutto il codice, per sicurezza:

//+------------------------------------------------------------------+

extern int    N        =100;                       // Количество баров

       int    Mas[];                             // Объявление массива

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+

int OnInit()
  { 
     ArrayResize(Mas,N,0);                // Установка размера массива      
  }

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+

void OnDeinit(const int reason)
  {

  }

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+

void OnTick()
  {                                       
   for(int i=0; i<N; i=i++)                     // Цикл записи данных
     {                      

          Mas[i]=iATR(NULL,0,1,i+1);           // Вычисление значений          
     }
       Alert(Mas[0],"," ,Mas[50],"," ,Mas[99]);      // Вывод на экран
   return;                                           // Выход из start
  }
//+------------------------------------------------------------------+

 

Utilizzare SRC per inserire il codice

 
lufer:

Vi mostrerò tutto il codice, per sicurezza:


fare un array di tipo doppio
 
evillive:
fare un array di tipo doppio
Questo non risolve il problema, ora sembra che qualcosa sia sbagliato inOnTick() - quando carico l'EA nella finestra del terminale non succede nulla, e quando provo a cancellarlo, il terminale si blocca per un tempo molto lungo e poi lo cancella dopo un po'. Ho provato ad assegnare manualmente dei valori ad alcuni elementi, tutto è OK. Qualcosa nel ciclo di inizializzazione dell'array sembra essere sbagliato.