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

 
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.