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
Di tanto in tanto cancello tutti gli ordini aperti in modo che i nostri amici di MT4 non si arrabbino.
avrai questo problema nel backtesting ma questo non è un problema di script... ma un problema di backtesting di MT4.
Se continua, per favore fammi sapere o mandami qualche report che mostri il problema...
grazie e reagrds,
hugues
Il consulente sta creando la griglia con il mio commento "GridEURUSD". Questo commento rimane nel campo di commento finché l'ordine è in attesa. Se l'ordine viene attivato, il commento cambia in "activate/auto". Dopo tutto è chiaro che questo comportamento porta al problema descritto.
Faccio trading con Alpari. Supportano MT4 nei conti demo.
Controllerò se posso aggirare questo comportamento, cioè usare la magia dell'ordine come identificatore per la griglia e vi farò sapere i risultati.
Durante il test di questo, ho anche apportato modifiche allo script di pulizia della griglia. Ho aggiunto anche la funzionalità per chiudere gli ordini aperti. Purtroppo ottengo l'errore 129 che significa Ordine bloccato, se provo a chiudere un ordine aperto. Ma cancella tutti gli ordini in sospeso per la griglia data.
cori
fammi sapere se funziona e userò la magia ... perché non sapevo che il broker fa cose strane come questa!
grazie e saluti,
hugues
Ho cambiato il gridMaker per usare l'OrderMagicNumber invece del commento. Ho anche fatto qualche piccola modifica sulla costruzione del commento.
Ecco il risultato.
con i saluti, cori
dato che avevo già fatto alcune modifiche io stesso, ho integrato le tue modifiche nella versione più recente.
Ho fatto 1 piccola variazione: per mantenere attive le mie attuali griglie, ho messo un test su magic OR gridname...
puoi controllare se ho fatto bene?
sembra ok. Ma dovresti definire il GridName come extern, che ho cambiato, perché non mi serviva come parametro.
saluti, cori
Potete cambiare la linea:
if (MathAbs( OrderOpenPrice() - atRate ) < inRange) // non cercare il prezzo esatto ma la prossimità del prezzo (meno della gridsize)
a
if (MathAbs( OrderOpenPrice() - atRate ) < (inRange*0.9)) // non cercare il prezzo esatto ma la vicinanza del prezzo (meno della dimensione della griglia) - aggiunto 0.9 a causa di errori di pont fluttuante
e questo corregge il problema.
Mi dispiace per qualsiasi inconveniente...
abbracci
Questo problema è già presente?
Ho trovato qualcosa di simile nel vecchio MQL2.
Il modo davvero sicuro per aggirare questo problema è quello di fare qualcosa come
intOOP = MathRound( OrdeOpenPrice() / Point );
per tutte le vostre variabili doppie. Allora avete tutte le variabili int diritte che sono comparabili senza errori.
È un po' più da scrivere per mantenerlo chiaro e comprensibile, ma è meno difettoso.
con i saluti,
cori
saluti,
abbracci
1) cambiato la logica per UseMACD, wantLongs, wantShorts. In precedenza, se useMACD era impostato, l'EA prendeva long e short, indipendentemente dai flag wnatLongs e wantShorts. Ora, useMACD non sovrascrive queste bandiere in modo da poter essere solo long con useMACD o solo short.
2) Ho aggiunto un ulteriore controllo per assicurarmi che non ci fossero ordini aperti dalla parte sbagliata dell'EMA se il limitEMA34 era impostato. Quello che succedeva era che gli ordini erano ben piazzati sopra o sotto l'EMA ma dopo qualche ora l'EMA si spostava... quindi c'erano ordini su entrambi i lati dell'EMA.
3) Sembra che ci sia un bug nell'istruzione switch su OrderType()... non sono sicuro di cosa sia ma si comporta in modo strano. Ho semplicemente eliminato le istruzioni di switch e le ho sostituite con "if"... non mi piace ma funziona!
4) Ho reso il periodo EMA variabile... bello per il backtesting...
Ho anche alcuni script di accompagnamento se qualcuno vuole:
1) per rimuovere gli ordini aperti non completati per una coppia
2) per rimuovere tutti gli ordini aperti per tutte le coppie in una sola volta
3) per chiudere tutte le posizioni e rimuovere gli ordini aperti.
4) per ottenere alcune semplici statistiche sul comportamento della griglia dalle posizioni aperte e dallo storico.
Ecco il codice della V1.08: