[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 343

 
hoz:

C'è una pila di ordini in sospeso su entrambi i lati. Se uno qualsiasi degli ordini pendenti viene attivato, allora dall'altra parte l'ordine pendente più esterno viene cancellato. Nello screenshot ho mostrato cosa succede se un ordine di acquisto viene attivato e l'ordine short più esterno viene cancellato.

L'ho fatto se una posizione è scattata. Ma cosa succederebbe se non uno, ma 3 si attivassero contemporaneamente? Cioè, dovrei in qualche modo stimare il numero di ordini pendenti attivati e chiudere gli ordini pendenti del segnale opposto.

Qual è il modo migliore per farlo? Forse, qualcuno ha già implementato questo punto? Non ho deciso di postare questa domanda in un ramo separato, forse sarà molto semplice per coloro che capiscono meglio questo punto.

Se avessimo bisogno di cancellare solo la posizione più bassa, potremmo trovare una posizione aperta al prezzo più basso e cancellarla nel ciclo, ma se ci sono diverse posizioni, cosa dovremmo fare? Sarei felice di sentire l'opinione di coloro che hanno già esperienza con le griglie d'ordine.

Victor, quando il più basso viene cancellato, il successivo, che è diventato il più basso, sarà anche cancellato dalla stessa condizione. Veloce per te, e la cosa principale per il programma è di non essere sullo stesso tick, ma va bene così! Provate!
 

Ecco una domanda - qualcuno ha testato la velocità del tester MT-5 su diversi processori?

Se è così, per favore datemi un link. O almeno ditemi quale dei migliori processori AMD e INTEL è migliore in termini di velocità?

Naturalmente, stiamo parlando di desktop, non di computer portatili o supercomputer. :-)

 
DruZhban:

Ecco una domanda - qualcuno ha fatto qualche test di velocità su diversi processori sul tester MT-5?

Se è così, per favore datemi un link. O almeno ditemi quale dei migliori processori AMD e INTEL è migliore in termini di velocità?

Naturalmente, stiamo parlando di desktop, non di computer portatili o supercomputer. :-)


tutto su cinque è qui: https://www.mql5.com/ru/forum
 
borilunad:
Victor, quando il più basso viene cancellato, il successivo che è diventato il più basso sarà cancellato dalla stessa condizione. La rapidità è per voi; la cosa più importante per il programma è non essere sullo stesso tick, ma questo va bene! Provate!


Boris, è comprensibile. Stavo pensando a questo. Immagino che dobbiamo fare un ciclo da 0 a una variabile che memorizza il valore degli ordini attivati e ad ogni passaggio del ciclo per eseguire la funzione di trovare l'ordine richiesto e poi chiuderlo. Non sono sicuro di come fissare che questa procedura sia eseguita al momento attuale.

A proposito, sarebbe meglio cercare gli ordini più estremi usando la funzione di ricerca standard e poi passare i valori del tempo di apertura dell 'ordine e del prezzo alla funzione di chiusura degli ordini, giusto?

 
hoz:

C'è una pila di ordini in sospeso su entrambi i lati. Se uno qualsiasi degli ordini pendenti viene attivato, allora dall'altra parte l'ordine pendente più esterno viene cancellato. Nello screenshot ho mostrato cosa succede se un ordine di acquisto viene attivato e l'ordine short più esterno viene cancellato.

L'ho fatto se una posizione è scattata. Ma cosa succederebbe se non uno, ma 3 si attivassero contemporaneamente? Cioè, dovrei in qualche modo stimare il numero di ordini pendenti attivati e chiudere gli ordini pendenti del segnale opposto.

Qual è il modo migliore per farlo? Forse, qualcuno ha già implementato questo punto? Non ho deciso di postare questa domanda in un ramo separato, forse sarà molto semplice per coloro che capiscono meglio questo punto.

Se avessimo bisogno di cancellare solo la posizione più bassa, potremmo trovare una posizione aperta al prezzo più basso e cancellarla nel ciclo, ma se ci sono diverse posizioni, cosa dovremmo fare? Beh, sarei felice di sentire l'opinione di coloro che hanno esperienza nel trattare con le griglie d'ordine


Se non mi sbaglio, sto cercando di fare una buona mossa con l'aiuto di alcune coppie di ordini pendenti.

algoritmo di cancellazione :

1) scavare nella lista delle posizioni aperte e scrivere (ricordare) i loro slot.

2) guarda nella lista degli ordini pendenti impostati e controlla se c'è un "lento" corrispondente nella lista delle pose, se corrispondono - cancella l'ordine pendente.

E niente più dolore.

Per esempio, se sei un vecchio programmatore, o non sai nulla di codifica, o è troppo di moda fare tutto in un modo diverso? ??? а ?

 
Ecco gli indicatori di origine, si prega di aiutare con l'uscita di valori (per esempio attraverso il commento) (in numeri) pari al prezzo di ogni indicatore in tempo reale (so icustom, ma non riesco a capire quali parametri devono essere specificati per essere emessi valori esatti, quindi uscita 0, poi il numero più di 2milioni)
File:
zigzag.zip  4 kb
 
DruZhban:

Ecco una domanda - qualcuno ha testato la velocità del tester MT-5 su diversi processori?

Se è così, per favore datemi un link. O almeno ditemi quale dei migliori processori AMD e INTEL è migliore in termini di velocità?

Naturalmente, stiamo parlando di desktop, non di computer portatili o supercomputer. :-)



Su un 5 usa le nuvole per i test e dimentica il tuo processore, anche se è multi-core e veloce. Accelera davvero molte volte. Ma dovrete pagare un centesimo. Infatti, c'è stata una discussione qui ad un certo punto
 

Buona giornata a tutti!

La mia domanda sembra essere semplice, ma ho scavato attraverso tutti gli articoli, ma non ho trovato una risposta - come funziona l'operatore return(-1)? Dove passa il controllo? In questo codice, per esempio:

int start()
{
    //---- Запоминаем значения индикатора для дальнейшего анализа
    //---- Обратите внимание - используем 1-й и 2-й бары. Это даёт задержку в 1 бар 
    //---- (т.е. сигнал появится позже), но защищает от многочисленных открытий и закрытий
    //---- позиций в течении бара
    double MACD_1 = iMACD( Symbol(), 0, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 1 );
    double MACD_2 = iMACD( Symbol(), 0, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 2 );
 
    int _GetLastError = 0, _OrdersTotal = OrdersTotal();
    //---- перебираем все открытые позиции
    for ( int z = _OrdersTotal - 1; z >= 0; z -- )
    {
        //---- если при выборе позиции возникла ошибка, переходим к следующей
        if ( !OrderSelect( z, SELECT_BY_POS ) )
        {
            _GetLastError = GetLastError();
            Print( "OrderSelect( ", z, ", SELECT_BY_POS ) - Error #", _GetLastError );
            continue;
        }
 
        //---- если позиция открыта не по текущему инструменту, пропускаем её
        if ( OrderSymbol() != Symbol() ) continue;
 
        //---- если MagicNumber не равен _MagicNumber, пропускаем эту позицию
        if ( OrderMagicNumber() != _MagicNumber ) continue;
 
        //---- если открыта БАЙ-позиция,
        if ( OrderType() == OP_BUY )
        {
            //---- если МАКД пересёк 0-ю линию вниз,
            if ( NormalizeDouble( MACD_1, Digits + 1 ) <  0.0 && 
                  NormalizeDouble( MACD_2, Digits + 1 ) >= 0.0    )
            {
                //---- закрываем позицию
                if ( !OrderClose( OrderTicket(), OrderLots(), Bid, 5, Green ) )
                {
                    _GetLastError = GetLastError();
                    Alert( "Ошибка OrderClose № ", _GetLastError );
                    return(-1);
                }
            }
            //---- если сигнал не изменился, выходим - пока рано открывать новую позицию 

altrimenti return(0);

Con lo zero tra parentesi e senza parentesi tutto sembra chiaro. Ma che dire di (-1)?

Grazie per aver risposto. :)

 
hoz:


Boris, questo ha senso. Stavo pensando a questo. Penso che dovremmo fare un ciclo da 0 a una variabile che memorizza il valore degli ordini attivati ed eseguire la funzione che cerca l'ordine richiesto e poi lo chiude ad ogni iterazione del ciclo. Ma non sono del tutto sicuro di come fissare che questa procedura sia attualmente eseguita.

E, a proposito, è meglio cercare gli ordini più estremi usando la funzione di ricerca standard, e poi il valore temporale aperto e il prezzo vengono passati alla funzione per chiudere gli ordini, giusto?

Victor, voglio dire che quando l'ordine pendente viene cancellato, è già nella cronologia e quando un'altra posizione viene aperta, un altro ordine pendente viene anche cancellato dalla stessa condizione perché controlliamo le posizioni che abbiamo! E come funziona, guardate i registri! Allora vedrai se è giusto o sbagliato!
 
Ciao a tutti. Questa è una questione seria e urgente e ho cercato in tutta Internet, come si dice... Ho deciso di usare MT4 per molto tempo, lo sto usando da 3 giorni. Ho provato ad usarlo per un po' e mi sembrava che fosse la prima volta e non capivo cosa stesse succedendo. Ho pensato che non è niente di grave, ma all'improvviso vado su MT e vedo 4 grafici H4 con un nuovo sistema e vedo il prezzo sbagliato, lo confronto con lo StartFX 2, apro time frame H1 e D1 e aspetto... Ho aspettato per un'ora e si aggiornerà anno per anno, ma non lo farà. "Beh, reinstalla e basta" - tu dici, e io ti dico "Fanculo". "Quindi scaricate un indicatore di qualche aggiornamento software da chissà quale sito" - voi chiedete e io vi dico "Fanculo due volte". Voglio davvero continuare a fare soldi e strangolare l'aiuto informatico con 1 e poi vedremo :-)