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

 
solnce600:
Non sono sicuro di cosa significhi la ricerca binaria. È una ricerca in un array bidimensionale? Ma io ne ho uno monodimensionale.

Ordinate l'array, se non l'avete fatto finora, e per il controllo della corretta preparazione in init() togliete il suo contenuto, non tutti ma i primi 20-50 elementi.

P.S. Vedi l'identità di binario e bidimensionale? Il terminale vede le vostre cifre in codice "binario" e per il corretto funzionamento della funzione ArrayBsearch(), richiede un ordinamento preliminare dell'array.

 
TarasBY:

Non vedi niente lì?

Vedo che ArrayBsearch() restituisce 0 (come indice dell'elemento) OVUNQUE. Nella 0a cella della vostra matrice c'è il numero 1,0408. Torniamo al codice:

Ora sostituite i valori variabili ottenuti in questa condizione (sul carite Bid è nell'intervallo 0,8-0,9, prendiamo il massimo di questo intervallo - 0,9): se (0,9000 - 1,0408 <= 0) OrderSend(). La condizione è soddisfatta GIUSTAMENTE!!! Cerca gli errori nel completare la tua matrice. Presumibilmente non avete prestato attenzione a questa clausola nella funzione ArrayBsearch():

Nota: la ricerca binaria gestisce solo gli array ordinati. La funzione ArraySort() è usata per ordinare una matrice numerica.

P.S. La stampa non dovrebbe essere fornita come immagine, ma con la selezione simultanea di diverse linee (usando SHIFT - se non sai come farlo) di questa stessa stampa (10-20 linee sono sufficienti) nella finestra del terminale, poi copia e incolla le linee selezionate nel tuo post come codice con il pulsante SRC.

Ho capito che il problema è nella funzione ArrayBsearch()

Ma ancora non capisco perché questa funzione non dovrebbe restituire immediatamente il singolo elemento N dell'array con il valore più vicino al valore

Perché altrimenti massiv[S-1] e massiv[S+1]dovrebbero partecipare ai calcoli ?

 
solnce600:

Ho capito che il problema è nella funzione ArrayBsearch()

Ma ancora non capisco perché questa funzione non dovrebbe restituire immediatamente il singolo elemento N dell'array con il valore più vicino al valore

Perché altrimenti la massa[S-1] e la massa[S+1]partecipano ai calcoli ?

Il problema non è nella funzione ArrayBsearch(), ma nella preparazione dell'array passato in questa funzione!!!

E poi è solo un "volo di fantasia"... La tua immaginazione...

La funzione ArrayBsearch() restituisce il valore UNO, e per trovare la causa della stortura del codice, ho stampato i valori: (nell'ordine) il valore della cella dell'array con indice S (è stato restituito dalla funzione ArrayBsearch()), il valore più vicino a sinistra nell'array dato (massive[]) con indice S-1, il valore più vicino a destra con indice S+1, e il prezzo al momento dell'apertura dell'ordine.

Sei arrivato in prima elementare e stai cercando di sbirciare in una classe di diplomati... Torna alla tua classe!!! - analogia. :))

 
TarasBY:

Il problema non è nella funzione ArrayBsearch(), ma nella preparazione dell'array passato a questa funzione!!!

E poi era solo un "volo di fantasia"... La tua immaginazione...

La funzione ArrayBsearch() restituisce il valore UNO, e per trovare la causa della stortura del codice, ho stampato i valori: (nell'ordine) il valore della cella dell'array con indice S (è stato restituito dalla funzione ArrayBsearch()), il valore più vicino a sinistra nell'array dato (massive[]) con indice S-1, il valore più vicino a destra con indice S+1, prezzo al momento dell'apertura dell'ordine.

Sei arrivato in prima elementare e stai cercando di sbirciare in una classe di diplomati... Torna alla tua classe!!! - analogia. :))

Capito. Grazie mille per il tuo aiuto.... Sono sempre un po' di fretta e vado avanti con me stesso.... Penso che ci siano più pro che contro a questo nel complesso.

L'unica cosa che non capisco ancora....

Qui ho bisogno di inizializzare un array con 3000 valori e l'ho fatto usando EXCEL.

Mi sembrava un processo lungo, multi-fase e noioso.

Ci sono algoritmi migliori per questo processo?

Grazie.

 
solnce600:

L'ho fatto usando EXCEL.


Attraverso il DDE o attraverso Lazybones?

Scrivete una macro e automatizzatela, se avete una storia. Lo apri in Word con la scrittura macro abilitata, lo converti lì, poi lo salvi in csv con la macro e usi il DDE. Non conosco il formato dei file di dati di Metatrader e Metastock, non ho tempo per capirlo da solo. E se doppio array[3000] con zeri, allora usa for, ma sono inizializzati con zeri, se non mi sbaglio.

 
solnce600:
Capito. Grazie mille per il tuo aiuto.... Sono sempre un po' di fretta e vado avanti con me stesso.... Penso che ci siano più pro che contro a questo nel complesso.

L'unica cosa che non capisco è ....

Ho bisogno di inizializzare un array di 3000 valori e l'ho fatto usando EXCEL.

L'ho trovato un processo lungo, multi-fase e noioso.

Ci sono algoritmi migliori per questo processo?

Grazie.


Si prega di postare il file dove sono scritti i valori di inizializzazione...
 
gyfto:


Attraverso il DDE o attraverso il Loafer?

Scrivete una macro e automatizzatela, se avete una storia. Aprilo in Word con la scrittura macro abilitata, convertilo lì e in excel, salvalo lì come macro csv e usa il DDE. Il formato dei file di dati di metatrader e metastock non dipende da me, non ho tempo per capirlo. Se non mi sbaglio, sono inizializzati con degli zeri, attraverso for.

Grazie, lo studierò. Sono appena andato a Service - ho salvato la storia di una coppia in un file EXCEL.

Divido una singola colonna con tutti i dati per colonne, metto una virgola dopo ogni valore nella colonna con i prezzi di apertura - la traspongo in una riga - ordinata - e la incollo nell'editor, cioè

incluso il file mqh.

Se avete riferimenti a DDE o Lazybear, fatemelo sapere.

Grazie.

 
solnce600:

Sono semplicemente andato in Servizio - ho salvato la storia di una coppia in un file EXCEL.

Divido una singola colonna con tutti i dati in colonne. Nella colonna con i prezzi di apertura, metto una virgola dopo ogni valore - la traspongo in una riga - la ordino - e la incollo nell'editor, cioè nel

incluso il file mqh.

Se ci sono riferimenti al DDE o alle informazioni di Lazybear, per favore dateli.

Grazie.



Non avete bisogno di DDE o di lazybones. Hai solo bisogno di una funzione (10 righe di codice). Lancia il file nella directory del terminale e l'array sarà inizializzato... Dammi il file.
 
Dima.A.:

Non avete bisogno di un DDE o di un Lazybones. Avete solo bisogno di una funzione (10 righe di codice). Lanciate il file nella directory del terminale e l'array sarà inizializzato... Dammi il file.

Ho bisogno di inizializzare 2 array

1.doppio

2.datetime

Nel primo array, alcuni valori dopo la linea 1120 per qualche motivo - si sono convertiti in un formato diverso dopo che ho cambiato il segno di separazione da virgola a punto (avevo una virgola lì)

Se non è difficile, mandami anche queste 10 righe di codice ...... Le studierò.... Voglio imparare a farlo da solo in futuro.

Grazie mille per il vostro aiuto.

 
solnce600:
Strano, il file è di 140 chili, l'ho archiviato e allegato al post..... e non c'è.


Riduci il file, ho bisogno solo di un paio di righe...
Motivazione: