Nell'implementazione di diverse "griglie" sono arrivato a questa struttura:
La struttura viene riempita ad ogni nuovo tick, in base al valore del Magic Number (memorizza tutte le informazioni necessarie per identificare l'ordine: numero d'ordine, a quale griglia appartiene, ecc.)
Questo è il codice che ho trovato
class Info
{
private:
struct str
{
string Sym; // Символ ордераstring Com; // Коммент ордераint Tic; // Тиккет ордераint Typ; // Тип ордераint Mag; // Меджик номер ордераdouble Lot; // Лот ордераdouble Pri; // Цена открытия ордераdouble SL_; // Стоп лосс ордераdouble TP_; // Тейк профит ордераdatetime Tim; // Время открытия ордераdouble Pro; // Профит ордера
};
int m_tick_upper; // Тиккет максимального по цене ордераint m_tick_upper_; // Тиккет предпоследнего максимального по цене ордераint m_tick_lower; // Тиккет минимального по цене ордераint m_tick_lower_; // Тиккет предпоследнего минимального по цене оредраint m_tick_start; // Тиккет первого по времени ордераint m_tick_start_; // Тиккет вторго по времени ордераint m_tick_end; // Тиккет последнего по времени ордераint m_tick_end_; // Тиккет предпоследнего по времени ордераint m_magic; // Меджик номерstring m_symbol; // Символ ордераvoid SearchTicketPriceType(constint type); // Поиск по ценеvoid SearchTicketTimeType(constint type); // Поиск по времениpublic:
str Price_Max; // Структура запроса максимальных ценн
str Price_Min; // Структура запроса минимальных ценн
str Time_End; // Структура последних ордеров
str Time_Start; // Структура начальных ордеров
str Price_Max2; // Структура запроса максимальных ценн
str Price_Min2; // Структура запроса минимальных ценн
str Time_End2; // Структура последних ордеров
str Time_Start2; // Структура начальных ордеровvoid SetMagic (constint mag) { m_magic = mag; } // Принудительное указание меджик номераvoid SetSymbol(conststring sym) { m_symbol = sym; } // Принудительное указание символаvoid SearchTimeOrder(constint type); // Заполнение структуры по времени void SearchPriceOrder(constint type); // Заполнение структуры по ценам
Info(conststring sym,constint mag); // Параметрический конструктор
Info(){};
~Info(){};
};
"A proposito - se il Windows è giù, anche l'EA non può cancellare gli ordini - solo manuale qui, quindi questo esempio non può applicarsi completamente all'auto-trading".
POSSIBILE, probabilmente non sai come. Se interessato posso postare il codice.
No, non hai bisogno del codice. Algoritmo in breve, se potete... Non so davvero come eseguire un EA in un terminale che gira in un sistema operativo bloccato
Artyom Trishkin: No, non hai bisogno di un codice. Algoritmo in poche parole, se puoi... Non so davvero come eseguire un EA in un terminale che gira in un sistema operativo bloccato
È più facile per me stendere il codice che spiegarlo:
//+------------------------------------------------------------------+//| Expert Remove orders function |//+------------------------------------------------------------------+void RemoveOrders()
{
int orders_total = OrdersTotal();
//--- if ( orders_total > 0 )
{
for ( int i = 0; i < orders_total; i++ )
{
ulong temp_order_ticket = OrderGetTicket( i );
if ( OrderSelect( temp_order_ticket ) )
{
string temp_symbol = OrderGetString( ORDER_SYMBOL );
if ( temp_symbol == _Symbol )
{
RemoveOldOrder( temp_symbol, temp_order_ticket );
}
}
}
}
}
//+------------------------------------------------------------------+//| Expert remove old order function |//+------------------------------------------------------------------+void RemoveOldOrder( conststring symbol, constulong ord_ticket )
{
MqlTradeRequest request = {0};
MqlTradeResult result = {0};
request.action = TRADE_ACTION_REMOVE;
request.order = ord_ticket;
if ( OrderSend( request, result ) )
{
if ( result.retcode == TRADE_RETCODE_PLACED )
{
// SetTransCount( true );
}
}
else
{
Print( "Удаление старого ордера не выполнено! Билет = ", ord_ticket);
}
}
Merda, amico, *** non dire stronzate. Tu stesso hai definito la direzione giusta: lo stato dovrebbe essere ripristinato dall'ambiente attuale, quello che MT ti dà è l'opzione più affidabile. Al suo posto, si scrive una lunga e inutile classe Info, in cui si devono in qualche modo stipare i valori trovati dalle funzioni esterne. Sì, alla fine conterrà le variabili di cui hai bisogno: biglietto massimo e minimo in termini di prezzo per l'ordine, così come altre cose importanti per te. Ma in realtà il problema si risolve con un contenitore specializzato di ordini: immaginate di avere una lista di ordini, dove ogni ordine rappresenta una riga di tabella con molte colonne (id ordine, tempo aperto, prezzo aperto, profitto, ecc. ecc.) Fai l'ordinamento per una delle colonne e ottieni esattamente la sequenza che ti serve. Quindi, tutto questo può essere fatto con l'aiuto delle classi, che vi piace usare (anche se non ne avete idea, scusate). Scriverò come farlo domani, se ti interessa.
Vasiliy Sokolov: Merda, amico, *** non dire cazzate. Tu stesso hai definito la direzione giusta: lo stato deve essere recuperato dall'ambiente attuale, quello che ti dà MT è l'opzione più affidabile. Al suo posto, si scrive una lunga e inutile classe Info, in cui si devono in qualche modo stipare i valori trovati dalle funzioni esterne. Sì, alla fine conterrà le variabili di cui hai bisogno: biglietto massimo e minimo in termini di prezzo per l'ordine, così come altre cose importanti per te. Ma in realtà il problema si risolve con un contenitore specializzato di ordini: immaginate di avere una lista di ordini, dove ogni ordine rappresenta una riga di tabella con molte colonne (id ordine, tempo aperto, prezzo aperto, profitto, ecc. ecc.) Fai l'ordinamento per una delle colonne e ottieni esattamente la sequenza che ti serve. Quindi, tutto questo può essere fatto con l'aiuto delle classi, che vi piace usare (anche se non ne avete idea, scusate). Come farlo - lo scriverò domani, se ti interessa.
Molto ansioso di vedere....
Ho bisogno di informazioni non per il bene delle informazioni, ma per ulteriori elaborazioni e calcoli...
È più facile per me postare il codice che spiegarlo:
Come funzionerà su un computer rotto? (nessuna sorpresa con le funzioni).
Ecco perché ho detto - non ho bisogno di codice. Ho bisogno di un algoritmo che funzioni su un computer che non funziona (l'asse è rotto, se ricordate una citazione: " Non so proprio come eseguire l'Expert Advisor nel terminale, che è in esecuzione sul sistema operativo che si è schiantato", e non ho bisogno di VPS e altre cose - pensa, che il sistema operativo sul computer, server, ecc, dove il terminale con l'Expert Advisor è in esecuzione, si è schiantato - il tuo codice è un cataplasma per esso lì e ... ).
Come funzionerà su un computer rotto? (nessuna sorpresa con le funzioni).
Ecco perché ho detto - non ho bisogno di codice. Ho bisogno di un algoritmo che funzioni su un computer che non funziona (perché il sistema operativo è fuori uso, se vi ricordate - e cito: " Non so proprio come eseguire l'Expert Advisor nel terminale, che è in esecuzione sul sistema operativo che si è schiantato", e non ho bisogno di VPS e altre cose - pensa, che il sistema operativo sul computer, server, ecc, dove il terminale con l'Expert Advisor è in esecuzione, si è schiantato - il tuo codice è un cataplasma per esso lì e ... Con le nostre mani, con le nostre mani... ).
Artyom Trishkin: Nessun problema. Sono stufo di cercare di farmi capire...
La linea di fondo è che anche se il sistema operativo sul server è giù, è possibile eseguire un PC domestico che ripristinerà il controllo dell'account al momento che è necessario per riavviare il servo.
Nella mia pratica di lavoro con i server VDS / VPS il sistema operativo non si è mai capovolto, ma i riavvii sono imprevisti e programmati succede.
L'essenza della mia domanda è scrivere con competenza un codice che raccolga informazioni sulla situazione attuale...
Il punto della mia domanda è scrivere correttamente il codice che raccoglie informazioni sulla situazione attuale...
Lei ha scritto qui che ha già scritto in stile procedurale. Quindi, tutto quello che dovete fare è raccogliere tutto in una classe. Si possono anche rimuovere alcuni parametri dalla chiamata di funzione, fare metodi per preimpostare i parametri (magik, symbol), ma è meglio non farlo.
Naturalmente se non avete niente da fare, potete andare in un altro modo. Classe. Ha il metodo Refresh() per ottenere la lista degli ordini (l'unico che può restituire false). Gli altri metodi usano questa lista.
Nell'implementazione di diverse "griglie" sono arrivato a questa struttura:
La struttura viene riempita ad ogni nuovo tick, in base al valore del Magic Number (memorizza tutte le informazioni necessarie per identificare l'ordine: numero d'ordine, a quale griglia appartiene, ecc.)
Questo è il codice che ho trovato
...
"A proposito - se il Windows è giù, anche l'EA non può cancellare gli ordini - solo manuale qui, quindi questo esempio non può applicarsi completamente all'auto-trading".
POSSIBILE, probabilmente non sai come. Se interessato posso postare il codice.
No, non hai bisogno di un codice. Algoritmo in poche parole, se puoi... Non so davvero come eseguire un EA in un terminale che gira in un sistema operativo bloccato
È più facile per me stendere il codice che spiegarlo:
Questo è il codice che ho trovato
Merda, amico, *** non dire cazzate. Tu stesso hai definito la direzione giusta: lo stato deve essere recuperato dall'ambiente attuale, quello che ti dà MT è l'opzione più affidabile. Al suo posto, si scrive una lunga e inutile classe Info, in cui si devono in qualche modo stipare i valori trovati dalle funzioni esterne. Sì, alla fine conterrà le variabili di cui hai bisogno: biglietto massimo e minimo in termini di prezzo per l'ordine, così come altre cose importanti per te. Ma in realtà il problema si risolve con un contenitore specializzato di ordini: immaginate di avere una lista di ordini, dove ogni ordine rappresenta una riga di tabella con molte colonne (id ordine, tempo aperto, prezzo aperto, profitto, ecc. ecc.) Fai l'ordinamento per una delle colonne e ottieni esattamente la sequenza che ti serve. Quindi, tutto questo può essere fatto con l'aiuto delle classi, che vi piace usare (anche se non ne avete idea, scusate). Come farlo - lo scriverò domani, se ti interessa.
Molto ansioso di vedere....
Ho bisogno di informazioni non per il bene delle informazioni, ma per ulteriori elaborazioni e calcoli...
È più facile per me postare il codice che spiegarlo:
Come funzionerà su un computer rotto? (nessuna sorpresa con le funzioni).
Ecco perché ho detto - non ho bisogno di codice. Ho bisogno di un algoritmo che funzioni su un computer che non funziona (l'asse è rotto, se ricordate una citazione: " Non so proprio come eseguire l'Expert Advisor nel terminale, che è in esecuzione sul sistema operativo che si è schiantato", e non ho bisogno di VPS e altre cose - pensa, che il sistema operativo sul computer, server, ecc, dove il terminale con l'Expert Advisor è in esecuzione, si è schiantato - il tuo codice è un cataplasma per esso lì e ...
).
Come funzionerà su un computer rotto? (nessuna sorpresa con le funzioni).
Ecco perché ho detto - non ho bisogno di codice. Ho bisogno di un algoritmo che funzioni su un computer che non funziona (perché il sistema operativo è fuori uso, se vi ricordate - e cito: " Non so proprio come eseguire l'Expert Advisor nel terminale, che è in esecuzione sul sistema operativo che si è schiantato", e non ho bisogno di VPS e altre cose - pensa, che il sistema operativo sul computer, server, ecc, dove il terminale con l'Expert Advisor è in esecuzione, si è schiantato - il tuo codice è un cataplasma per esso lì e ... Con le nostre mani, con le nostre mani... ).
Ecco, falsario nella foresta...
Finiamo qui la nostra discussione!
Ecco qui, nel bene e nel male...
Finiamo qui la nostra discussione!
Nessun problema. Sono stufo di cercare di farmi capire...
La linea di fondo è che anche se il sistema operativo sul server è giù, è possibile eseguire un PC domestico che ripristinerà il controllo dell'account al momento che è necessario per riavviare il servo.
Nella mia pratica di lavoro con i server VDS / VPS il sistema operativo non si è mai capovolto, ma i riavvii sono imprevisti e programmati succede.
L'essenza della mia domanda è scrivere con competenza un codice che raccolga informazioni sulla situazione attuale...
...
Il punto della mia domanda è scrivere correttamente il codice che raccoglie informazioni sulla situazione attuale...
Lei ha scritto qui che ha già scritto in stile procedurale. Quindi, tutto quello che dovete fare è raccogliere tutto in una classe. Si possono anche rimuovere alcuni parametri dalla chiamata di funzione, fare metodi per preimpostare i parametri (magik, symbol), ma è meglio non farlo.
Naturalmente se non avete niente da fare, potete andare in un altro modo. Classe. Ha il metodo Refresh() per ottenere la lista degli ordini (l'unico che può restituire false). Gli altri metodi usano questa lista.