Ho anche pensato che fosse difficile per l'EA aprire così tanti ordini. Ho provato a limitare il numero di ordini con questo codice
Cioè, aprire un ordine solo alle 10:00. Ma il risultato è lo stesso.
2020.10.27 10:25:17.548 Core 1 272 Mb di memoria utilizzata inclusi 36 Mb di dati storici, 64 Mb di dati di tick
Non conosco a fondo MKL5, ad essere onesti. Ma la logica è zoppa. È necessario aprire un ordine. Questo si ottiene assegnando una variabile oraria all'inizio della funzione sul tick e alla fine la si assegna a un'altra variabile. Nel mezzo, se le variabili non sono uguali, si apre un ordine. L'esempio precedente con i minuti è lo stesso.
inputint StopLoss=30; // Stop Lossinputint TakeProfit=100; // Take Profitinputdouble Lot=0.1; // Количество лотов для торговлиint A; //int tm;
//+------------------------------------------------------------------+voidOnTick()
{
//Print( "====================================================", TimeCurrent() ) ;//--- Объявляем структуры, которые будут использоваться для торговлиMqlTick latest_price; // Будет использоваться для текущих котировокMqlTradeRequest mrequest; // Будет использоваться для отсылки торговых запросовMqlTradeResult mresult; // Будет использоваться для получения результатов выполнения торговых запросовMqlDateTime time_now; // Будет использоваться дляTimeCurrent(time_now);
if(!SymbolInfoTick(_Symbol,latest_price))
if(time_now.hour==10 && tm != time_now.hour) //на первом тике, когда time_now.hour станет 10 а tm еще 9
// и на следующем тике tm будет равно 10
{
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.price = NormalizeDouble(latest_price.bid,_Digits); // последняя цена Bid
mrequest.sl = NormalizeDouble(latest_price.ask + StopLoss*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.ask - TakeProfit*_Point,_Digits); // Take Profit
mrequest.symbol = _Symbol; // символ
mrequest.volume = Lot; // количество лотов для торговли
mrequest.type= ORDER_TYPE_SELL; // ордер на продажу
mrequest.type_filling = ORDER_FILLING_RETURN; // тип исполнения ордера - все или ничего
mrequest.deviation=100; // проскальзывание от текущей цены//--- отсылаем ордерOrderSend(mrequest,mresult);
}
tm= time_now.hour;return;
}
Non conosco a fondo MKL5, ad essere onesti. Ma la logica è zoppa. È necessario un ordine per aprire lo stesso. Questo si ottiene assegnando una variabile ora all'inizio della funzione sul tick e alla fine la si assegna a un'altra variabile. Nel mezzo, se le variabili non sono uguali, si apre un ordine. L'esempio precedente con i minuti è lo stesso.
ecco perché si raccomanda di provare a fare il lavoro EA solo con i vostri magiks
Se il nostro compito è quello di aprire un ordine ad una certa ora una volta al giorno, allora l'algoritmo è il seguente:
- avviare EA, controlla il numero di ordini aperti, se l'ordine con il nostro mago è aperto, quindi uscire fino al prossimo tick
- se non ci sono ordini, l'EA aspetta che l'ora e i minuti correnti siano maggiori di quelli dati
- questo tempo è arrivato, EA controllerà la cronologia degli ordini e se non è stato piazzato un ordine con il nostro mago nelle ultime 24 ore, allora piazzerà un ordine e uscirà - l'uscita è utile per non elaborare gli errori del server, se l'ordine non è stato piazzato, allora al prossimo tick cercheremo di farlo di nuovo, cioè non abbiamo bisogno di organizzare un ciclo per più aperture di ordini su questo tick.... ma questa è una questione di gusti e obiettivi, è l'implementazione più semplice )))
ecco perché si raccomanda di cercare di fare il lavoro EA esclusivamente con i vostri maghi
Se il compito è quello di aprire un ordine una volta al giorno ad una certa ora, l'algoritmo è il seguente:
- avviare EA, controlla il numero di ordini aperti, se l'ordine con il nostro mago è aperto, quindi uscire fino al prossimo tick
- se non ci sono ordini, l'EA aspetta che l'ora e i minuti correnti siano maggiori di quelli dati
- questo tempo è arrivato, EA controllerà la cronologia degli ordini e se non è stato piazzato un ordine con il nostro mago nelle ultime 24 ore, allora piazzerà un ordine e uscirà - l'uscita è utile per non elaborare gli errori del server, se l'ordine non è stato piazzato, allora al prossimo tick cercheremo di farlo di nuovo, cioè non abbiamo bisogno di organizzare un ciclo per più aperture di ordini su questo tick.... Ma questa è una questione di gusti e obiettivi ed è l'implementazione più semplice )))
Non abbiamo ancora raggiunto il livello di mago lì. Naturalmente. In 5 c, naturalmente, il dilemma è se andare in loop con l'analisi degli errori o cercare di aprire una posizione usando un tick. Nel caso di risposte lunghe può essere più facile per la zecca.
Non conosco a fondo MKL5, ad essere onesti. Ma la logica è zoppa. È necessario un ordine per aprire lo stesso. Questo si ottiene assegnando una variabile ora all'inizio della funzione sul tick e alla fine la si assegna a un'altra variabile. Nel mezzo, se le variabili non sono uguali, si apre un ordine. L'esempio precedente con i minuti è lo stesso.
Grazie mille. La conoscenza che mi hai dato era esattamente ciò che mi mancava. Ho provato a fare lo stesso ma per analogia con il 4. Si scopre che l'analogia è fuori luogo in questo caso. Grazie ancora.
ecco perché si raccomanda di cercare di fare il lavoro EA esclusivamente con i vostri maghi
Se il compito è quello di aprire un ordine una volta al giorno ad una certa ora, l'algoritmo è il seguente:
- avviare EA, controlla il numero di ordini aperti, se l'ordine con il nostro mago è aperto, quindi uscire fino al prossimo tick
- se non ci sono ordini, l'EA aspetta che l'ora e i minuti correnti siano maggiori di quelli dati
- questo tempo è arrivato, EA controllerà la cronologia degli ordini e se non è stato piazzato un ordine con il nostro mago nelle ultime 24 ore, allora piazzerà un ordine e uscirà - l'uscita è utile per non elaborare gli errori del server, se l'ordine non è stato piazzato, allora al prossimo tick cercheremo di farlo di nuovo, cioè non abbiamo bisogno di organizzare un ciclo per più aperture di ordini su questo tick.... ma questa è una questione di gusti e obiettivi ed è l'implementazione più semplice )))
Grazie per le preziose informazioni. Grazie a voi la mia comprensione di mql 5 è aumentata e approfondita. Vi sarò molto grato se potrete mostrare il mio codice come esempio del vostro processo di pensiero. Mi aiuterà ad assimilare la vostra idea in modo rapido e preciso. Grazie mille ancora.
Ecco il mio codice, dove ho scritto erroneamente la condizione che un ordine dovrebbe aprirsi solo alle 10:00
inputint StopLoss=30; // Stop Lossinputint TakeProfit=100; // Take Profitinputdouble Lot=0.1; // Количество лотов для торговлиint A; ////+------------------------------------------------------------------+voidOnTick()
{
//Print( "====================================================", TimeCurrent() ) ;//--- Объявляем структуры, которые будут использоваться для торговлиMqlTick latest_price; // Будет использоваться для текущих котировокMqlTradeRequest mrequest; // Будет использоваться для отсылки торговых запросовMqlTradeResult mresult; // Будет использоваться для получения результатов выполнения торговых запросовMqlDateTime time_now; // Будет использоваться дляTimeCurrent(time_now);
if(!SymbolInfoTick(_Symbol,latest_price))
if(time_now.hour==10&&time_now.min==0)
{
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.price = NormalizeDouble(latest_price.bid,_Digits); // последняя цена Bid
mrequest.sl = NormalizeDouble(latest_price.ask + StopLoss*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.ask - TakeProfit*_Point,_Digits); // Take Profit
mrequest.symbol = _Symbol; // символ
mrequest.volume = Lot; // количество лотов для торговли
mrequest.type= ORDER_TYPE_SELL; // ордер на продажу
mrequest.type_filling = ORDER_FILLING_RETURN; // тип исполнения ордера - все или ничего
mrequest.deviation=100; // проскальзывание от текущей цены//--- отсылаем ордерOrderSend(mrequest,mresult);
}
return;
}
Per favore ditemi, è possibile fare questa scelta di carattere in un indicatore?
Perché no? Crea il tuo enum e tutti i problemi.........
Perché no? Crea il tuo enum e tutti i problemi.........
Questo è chiaro, ma come posso richiedere una lista dei font installati?
Sei un comico.
Con chi stavo parlando?
Mi è sfuggito qualcosa. Grazie. Questo è tutto!
Capito. Grazie per l'aiuto.
Ho anche pensato che fosse difficile per l'EA aprire così tanti ordini. Ho provato a limitare il numero di ordini con questo codice
Cioè, aprire un ordine solo alle 10:00. Ma il risultato è lo stesso.
2020.10.27 10:25:17.548 Core 1 272 Mb di memoria utilizzata inclusi 36 Mb di dati storici, 64 Mb di dati di tick
Non conosco a fondo MKL5, ad essere onesti. Ma la logica è zoppa. È necessario aprire un ordine. Questo si ottiene assegnando una variabile oraria all'inizio della funzione sul tick e alla fine la si assegna a un'altra variabile. Nel mezzo, se le variabili non sono uguali, si apre un ordine. L'esempio precedente con i minuti è lo stesso.
Questo è chiaro, ma come si fa a richiedere una lista dei font installati?
Credo che nel tuo esempio sia una lista fatta in casa. Senza interrogare il software.
Non conosco a fondo MKL5, ad essere onesti. Ma la logica è zoppa. È necessario un ordine per aprire lo stesso. Questo si ottiene assegnando una variabile ora all'inizio della funzione sul tick e alla fine la si assegna a un'altra variabile. Nel mezzo, se le variabili non sono uguali, si apre un ordine. L'esempio precedente con i minuti è lo stesso.
ecco perché si raccomanda di provare a fare il lavoro EA solo con i vostri magiks
Se il nostro compito è quello di aprire un ordine ad una certa ora una volta al giorno, allora l'algoritmo è il seguente:
- avviare EA, controlla il numero di ordini aperti, se l'ordine con il nostro mago è aperto, quindi uscire fino al prossimo tick
- se non ci sono ordini, l'EA aspetta che l'ora e i minuti correnti siano maggiori di quelli dati
- questo tempo è arrivato, EA controllerà la cronologia degli ordini e se non è stato piazzato un ordine con il nostro mago nelle ultime 24 ore, allora piazzerà un ordine e uscirà - l'uscita è utile per non elaborare gli errori del server, se l'ordine non è stato piazzato, allora al prossimo tick cercheremo di farlo di nuovo, cioè non abbiamo bisogno di organizzare un ciclo per più aperture di ordini su questo tick.... ma questa è una questione di gusti e obiettivi, è l'implementazione più semplice )))
ecco perché si raccomanda di cercare di fare il lavoro EA esclusivamente con i vostri maghi
Se il compito è quello di aprire un ordine una volta al giorno ad una certa ora, l'algoritmo è il seguente:
- avviare EA, controlla il numero di ordini aperti, se l'ordine con il nostro mago è aperto, quindi uscire fino al prossimo tick
- se non ci sono ordini, l'EA aspetta che l'ora e i minuti correnti siano maggiori di quelli dati
- questo tempo è arrivato, EA controllerà la cronologia degli ordini e se non è stato piazzato un ordine con il nostro mago nelle ultime 24 ore, allora piazzerà un ordine e uscirà - l'uscita è utile per non elaborare gli errori del server, se l'ordine non è stato piazzato, allora al prossimo tick cercheremo di farlo di nuovo, cioè non abbiamo bisogno di organizzare un ciclo per più aperture di ordini su questo tick.... Ma questa è una questione di gusti e obiettivi ed è l'implementazione più semplice )))
Non abbiamo ancora raggiunto il livello di mago lì. Naturalmente. In 5 c, naturalmente, il dilemma è se andare in loop con l'analisi degli errori o cercare di aprire una posizione usando un tick. Nel caso di risposte lunghe può essere più facile per la zecca.
Non conosco a fondo MKL5, ad essere onesti. Ma la logica è zoppa. È necessario un ordine per aprire lo stesso. Questo si ottiene assegnando una variabile ora all'inizio della funzione sul tick e alla fine la si assegna a un'altra variabile. Nel mezzo, se le variabili non sono uguali, si apre un ordine. L'esempio precedente con i minuti è lo stesso.
Grazie mille. La conoscenza che mi hai dato era esattamente ciò che mi mancava. Ho provato a fare lo stesso ma per analogia con il 4. Si scopre che l'analogia è fuori luogo in questo caso.
Grazie ancora.
ecco perché si raccomanda di cercare di fare il lavoro EA esclusivamente con i vostri maghi
Se il compito è quello di aprire un ordine una volta al giorno ad una certa ora, l'algoritmo è il seguente:
- avviare EA, controlla il numero di ordini aperti, se l'ordine con il nostro mago è aperto, quindi uscire fino al prossimo tick
- se non ci sono ordini, l'EA aspetta che l'ora e i minuti correnti siano maggiori di quelli dati
- questo tempo è arrivato, EA controllerà la cronologia degli ordini e se non è stato piazzato un ordine con il nostro mago nelle ultime 24 ore, allora piazzerà un ordine e uscirà - l'uscita è utile per non elaborare gli errori del server, se l'ordine non è stato piazzato, allora al prossimo tick cercheremo di farlo di nuovo, cioè non abbiamo bisogno di organizzare un ciclo per più aperture di ordini su questo tick.... ma questa è una questione di gusti e obiettivi ed è l'implementazione più semplice )))
Grazie per le preziose informazioni. Grazie a voi la mia comprensione di mql 5 è aumentata e approfondita.
Vi sarò molto grato se potrete mostrare il mio codice come esempio del vostro processo di pensiero. Mi aiuterà ad assimilare la vostra idea in modo rapido e preciso.
Grazie mille ancora.
Ecco il mio codice, dove ho scritto erroneamente la condizione che un ordine dovrebbe aprirsi solo alle 10:00
Ecco il mio codice dove ho sbagliato la condizione, secondo la quale l'ordine dovrebbe aprirsi solo alle 10:00
Non scrivo in puro MQL5. È possibile inserire un ordine utilizzando la classe CTrade SB
cercare CTrade per articoli sull'uso di SB