Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 813

 
WinProject:
Buona sera, potete consigliarmi per favore. Sto leggendo FileOpen del loro file .csv di testo. Ci sono tre valori in ogni riga del file, sono strumento, data (in ordine decrescente) e prezzo. Voglio ottenere il commento del prezzo sull'ultima data (è la prima riga), ma il file viene sempre letto fino alla fine e ottengo il commento del prezzo più vecchio (dall'ultima riga). Come posso ottenere il valore del prezzo dalla prima linea nel commento senza alcun workaround?

FileSeek()

Документация по MQL5: Файловые операции
Документация по MQL5: Файловые операции
  • www.mql5.com
Из соображений безопасности в языке MQL5 строго контролируется работа с файлами. Файлы, с которыми проводятся файловые операции средствами языка MQL5, не могут находиться за пределами файловой "песочницы". общая папка всех установленных на компьютере терминалов  – обычно расположена в каталоге C:\Documents and Settings\All Users\Application...
 
Igor Makanu:

Ogni broker ha i suoi fornitori di quotazioni, spesso ce ne sono diversi, più gli algoritmi per lisciare le quotazioni

Se avete bisogno di zecche reali, trasferite il vostro TS in MQL5 - c'è il test con zecche reali, risparmierete tempo nei test

Ci parli brevemente degli algoritmi di lisciatura delle citazioni, di cosa si tratta? mql5 permette il test sulla storia del TS per tick, cioè, il risultato sarà uno-a-uno con requotes e gap, e c'è la possibilità di condurre un test su tick tenendo conto del Bid Asc, requotes e gap?

 
Seric29:

Ci parli brevemente degli algoritmi per lisciare le quotazioni, quali sono? Su mql5 c'è la possibilità di testare il TS sullo storico dei tick, cioè il risultato sarà uno a uno tenendo conto di requotes e gap, e c'è la possibilità di testare sui tick tenendo conto del Bid Asc oltre che di requotes e gap?

tutte le informazioni sono disponibili pubblicamente su questo forum, su zecche ricerca messaggi admin 6-8 anni fa

sulla qualità dei test - articoli

 
Alexey Viktorov:

Forse provare ad aprire un volume di chiusura opposto e applicare OrderCloseBy?

Saluti. Potete dirmi per favore cosa sto sbagliando?

OrderCloseBy() dà errore 3

3

ERR_INVALID_TRADE_PARAMETERS

Parametri errati

campione di codice

#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict


datetime time; int ticket_buy; int ticket_sell; 
bool open=false; bool close=false;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
ticket_sell=OrderSend(NULL, OP_SELL, 0.1, Bid, 0, 0, 0, "", 0, 0, Red);  

time=TimeCurrent();
//if (Digits() ==3 || Digits()==5) {trailingStep*=10; }
   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {
//---
   
  }
void OnTick(){
if(!open && TimeCurrent()>=time+2600){
   ticket_buy=OrderSend(NULL, OP_BUY, 0.1, Ask, 1, 0, 0, "buy order", 0, 0, Blue);
   open=true;
}
if(!close && TimeCurrent()>=time+3000){
   if(OrderCloseBy(ticket_buy, ticket_sell , Black)){ }
   close=true;
}

}//+------------------------------------------------------------------+
 
Andrey Sokolov:

Saluti. Potresti per favore dirmi cosa sto sbagliando?

OrderCloseBy() dà errore 3

3

ERR_INVALID_TRADE_PARAMETERS

Parametri errati

campione di codice

il codice funziona nel tester, riordinaOrderSend(), nessun prezzo e lotto normalizzato

e la seconda condizione - non tutti i broker permettono di usare OrderCloseBy() - penso che questa sia la ragione principale dell'errore

 
Igor Makanu:

il codice funziona nel tester,

Stai chiudendo, vero? Che broker avete? Ho Alpari.
 
Igor Makanu:

riordinare OrderSend(), nessun prezzo e lotto normalizzato


Non capisco bene cosa normalizzare qui e perché, quando non ci sono operazioni matematiche?
 
Andrey Sokolov:
Non sono sicuro di cosa normalizzare qui e perché quando non ci sono operazioni matematiche?

Perché dovete abituarvi a inviare prezzi normalizzati al server, ora l'ordine è inviato - domani non lo è, sarete costantemente alla ricerca dei vostri errori

Cosa c'è di complicato? Ecco, copiatelo voi stessi se è complicato:

ticket_sell=OrderSend(_Symbol, OP_SELL, 0.1, Bid,10,
                     NormalizeDouble(0.0,_Digits),NormalizeDouble(0.0,_Digits), "", 0, 0, clrRed);  

Le operazioni matematiche non c'entrano niente, c'era uno strano comportamento del terminale nelle nuove build, a tutte le domande gli sviluppatori hanno scritto - scrivete i vostri codici correttamente - hanno ragione )))

sul server Metakvot controlla il tuo codice - tutto funziona

SZS: 0 non è 0.0, quindi potrebbe non esserci proprio il risultato atteso - anche una buona abitudine per non cercare bug ;)

 
Igor Makanu:

e la seconda condizione - non tutti i broker permettono l'uso di OrderCloseBy() - penso che questa sia la ragione principale dell'errore

In generale, ho capito bene che se Alpari e probabilmente altri non lo supportano, è meglio non usarlo affatto segnarlo come non funzionante?

 
Andrey Sokolov:

In generale, ho ragione nel supporre che se Alpari e forse altri non lo supportano, è meglio non usarlo affatto, segnarlo come non funzionante?

la funzione funziona

ahimè, bisogna controllare le impostazioni di ogni server - ci sono poche soluzioni universali (alpars ha anche stoplevel = 0, potreste essere sorpresi con il trailing)

se non mi sbaglio, in MarketInfo() c'era una richiesta per determinare se un server chiuderà una posizione usando un ordine opposto