[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 289
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Ho scritto cosa succede se si sposta lo script in una cartella con degli esperti. Funziona, ma non nel modo in cui dovrebbe. Lo script crea 8 ordini pendenti ma se lo salviamo solo nella cartella con Expert Advisors, crea 8 ordini pendenti dopo ogni tick. Mi serve per piazzare 8 nuovi ordini solo dopo che i vecchi sono stati chiusi.
Avete scritto solo un "rinvio" nella vostra sceneggiatura? Allora non farà altro che procrastinare: tante zecche arrivano quante ce ne vogliono... oops... .........
Dovete aggiungere un terzo inibitore di controllo in esso...
Questo è quello che succede se lo script viene semplicemente spostato nella cartella degli esperti. Funziona, ma non come dovrebbe. Lo script crea 8 ordini pendenti, ma se lo salvi solo nella cartella degli esperti, crea 8 ordini pendenti dopo ogni tick. Mi serve per piazzare 8 nuovi ordini solo dopo che i vecchi sono stati chiusi.
Ho trovato un errore. Nella libreria per questa funzione sulla linea
dovrebbe cancellare lo zero in ciascuno dei numeri 13, 14 e 15.Ora correttamente
Ciao funzioni di libreria.
Нашел ошибку. В библиотеке для данной функции в строке
надо удалить по нулю в 13, 14 и 15 числе.
Теперь правильно
Ciao funzioni di libreria.
Avete scritto solo un "rinvio" nella vostra sceneggiatura? Allora non farà altro che procrastinare: tante zecche arrivano quante ce ne vogliono... oops... .........
Devi metterci anche un controllore di proibizioni...
))))) Non può resistere)))))
Bene, passiamo agli affari. Sto lavorando all'ottimizzazione del codice della seconda TF, ho deciso di tradurre il doppio in int[2] per scrivere la struttura RateInfo in un unico blocco. Ci ho pensato e ho deciso di descrivere tutti i modi possibili, compresiquelli irrealizzabili, in modo che qualcuno possa essere messo in guardia dagli errori.
1. WinAPI (msdn). In generale, non c'è molto in termini di funzioni di conversione. Questo perché la conversione fa ampio uso della traduzione di tipo c, che è qualcosa come
nella penultima rigaint i1 è convertito in char e nell'ultima riga char s2 è convertito in int. Come risultato tutta questa roba è usata nelle cosiddette "funzioni di conversione" che in realtà non sono in nessuna dll WinAPI, ma dichiarate nei file .h dell'header usando macro come
che a tempo di compilazione il preprocessore srotola in stringa come nel primo codice. E i file header .h non sono dll e sono usati solo nell'ambiente di sviluppo (Studio, Borland, gcc, ecc.). Pertanto, non è né buono né cattivo per MQL4. Comunque, puoi sempre controllare se la funzione è dichiarata solo nell'header .h-file o in funzioni esportate nascoste da occhi indiscreti di qualche dll in System32.
2) WinAPI (dll CRT). Queste DLL sono chiamate msvcp*, msvcr*, msvcrt*, msvci*, msvcirt. Qui la scelta è più ampia: _atodbl, _atoi64, _atoldbl, _ftol, _i64toa, _itoa, _ltoa, _strtoi64, _strtoui64 _ui64toa, _ultoa, atof, atoi, atol, strtod, strtol, strtoul. I simboli nel nome hanno il seguente significato:
Ma l'atteso _dtoi64/_dtoui64 manca ancora. Usando le definizioni msvcrt*, msvci*, msvcirt.dll, invece
è disponibile solo, anche se si ottiene contorto, come operazione su file (queste sono operazioni da console).
Potete cercare, oltre a msdn, suquesto sito, ecco la barra di ricerca del sito. Una simile "comoda" stringa di ricerca msdn è qui. In cosa differiscono? Il msdn ha una buona descrizione delle funzioni, ma alcune non ci sono affatto (NativeAPI, per esempio). In quello alternativo, invece, c'è qualsiasi tabella di esportazione dll sistema, ma nessuna descrizione. Fondamentalmente, una serie di tabelle di esportazione sul sito web è più facile che estrarre le tabelle di esportazione dalla dll da soli (IDA, PE Explorer, ecc.).
3. inserti dell'assemblatore (più precisamente, inserti di codice macchina). Lo spiegherò tra un momento, dato che la documentazione ufficiale è molto vaga a questo proposito. Gli inserti C++ in MQL4
asm/_asm non è una funzione, ma una direttiva del preprocessore, e non è definita da nessuna parte in system32/*.dll (vedi ricerca all'interno del sito). In altre parole, non esiste.
Si può scrivere puro codice macchina in MQL4 ma solo in un caso: quando secondo la definizione WinAPI-function in msdn dovrebbe passare un puntatore a una funzione/procedura comelpTimerFunc (esempio completo qui nel forum), in msdn è dichiarato come:
UINT_PTR SetTimer( HWND hWnd, UINT_PTR nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc//<- );
olpfnWndProc (esempioincompiuto qui sul forum, dichiarazione msdn e tentativo di dichiarazione della struttura mql4). Non c'è altro modo, MQL4 è un interprete, l'indirizzo della funzione non esiste, non c'è niente da passare, solo se il codice è scritto in codice macchina. Sono poi impacchettati in un array int e passati alla funzione per riferimento.
Quindi gli inserti compilati in assembler (cioè il codice macchina) non sono applicabili a questo compito - hanno uno scopo completamente diverso. Il massimo che si può ottenere è eseguire un tale int array via debug in cmd tramite shell32.dll. Sembra che la linea di comando non possa essere passata lì, ma può essere scritta usando i tasti virtuali tramite keybd_event.
4. Scrivere la mia funzione per convertire il doppio in int[2] in puro MQL4 senza inserti. Ma ho stimato la dimensione del codice e le sue prestazioni, e ho rinunciato. Non ho nemmeno scritto il modulo stesso, ma credo che l'algoritmo sia il seguente:
Ci vorrebbe molto tempo per l'esecuzione. Così alla fine sono arrivato alla soluzione più ovvia e più semplice
5. Uso di una dll auto-scritta in C++. Il codice è il seguente:
Nella sceneggiatura.
Int upper[0] è invertito perché lo passiamo per riferimento. Otteniamo:
...ha funzionato, le linee nel dump sono identiche. Cartella allegata, in essa nelle librerie è double.dll, in samples - source dll, in scripts - script.
La sera: ho riscaricato l'archivio e ho manomesso un po' il codice degli script e delle DLL.
Non capisco cosa ho fatto di male. Per qualche motivo la posizione non si chiude come avevo previsto?
Ecco il criterio per aprire una posizione
Ecco il criterio di chiusura di una posizione
ed ecco cosa otteniamo:
No! Non si possono toccare le funzioni della libreria standard! Dima bannato :-))
Perché state facendo una pagliacciata qui? Se c'è un errore, dovete segnalarlo a servicedesk, o fare la vostra copia del file.
Non capisco cosa ho fatto di male. Per qualche motivo la posizione non si chiude come avevo previsto?
Ecco il criterio per aprire una posizione
Ecco il criterio di chiusura di una posizione
ed ecco cosa otteniamo:
E quanto spesso viene controllato il criterio di chiusura? Non da bar per caso?
E quanto spesso viene controllato il criterio di chiusura? Non da bar per caso?
Non ho capito bene il senso della domanda. Modello di test del prezzo di apertura (metodo rapido su barre formate)