In questi casi, le imprecisioni di calcolo si accumulano e possono alla fine diventare significative. Pensate di inserirecondizioni chenon cambiano, in realtà costringete il computer a fare calcoli inutili e le vostre condizioninon cambiano.
E sei sicuro chePriceOpenLastClosePos() e PriceCloseLastPos() stiano impostando valori per la stessa posizione?
a partire da if(OrderCloseTime()>time)... allora non è chiaro da dove viene... beh, non importa...
Stampa un biglietto, ma solo l'ultimo. E cosa fare con il penultimo? Non riesco proprio a capire come il secondo biglietto possa essere stampato?
prima scrivo solo Print LastClosetPoz()
prendere il 2° (i) ? OrderSelect(2,SELECT_BY_POS,MODE_HISTORY)....?
Print LastClosetPoz(2) ?? errore ovvio, ma sarebbe logico :)))
Ho provato a mettere altri parametri di una posizione chiusa(prezzi di chiusuradi una posizione di stop) invece di OrderTicket nella linea Ticket=OrderTicket(); - non funziona.
a partire da if(OrderCloseTime()>time)... allora non è chiaro da dove viene...ma va bene...
Stampa un biglietto, ma solo l'ultimo. E cosa fare con il penultimo? Non vedo come fare con il secondo biglietto?
prendere il 2° (i) ? OrderSelect(2,SELECT_BY_POS,MODE_HISTORY)....?
1. si prega di scrivere un pezzo con richiesta di biglietto dalla storia.-la tua domanda.
Per trovare il penultimo, dobbiamo memorizzare il biglietto dell'ultimo (per esempio nella variabile A), poi bisogna eseguire il ciclo un'altra volta e "saltare" questo ordine, cioè per esempio cambiare il
if(OrderSymbol()==Symbol()) aif(OrderSymbol()==Symbol()&& OrderTicket()!=A), o aggiungere una lineaif(Ticket()!=A)continua;
E ho già spiegato che l'indice dell'ordine non coinciderà sempre con quello chiuso nel conto, dato che gli ordini a mercato e quelli in sospeso vengono presi in considerazione insieme e questi ultimi non hanno un prezzo di chiusura, per questo tutti gli ordini vengono analizzati per trovare l'ultimo chiuso e l'ordine con il tempo di chiusura più lungo.
1. per favore, scrivi un pezzo chiedendo un biglietto per l'ultima settimana della storia...-la tua domanda.
Per trovare il penultimo, dovremmo memorizzare il biglietto dell'ultimo (per esempio nella variabile A), poi dovremmo eseguire il ciclo un'altra volta e "saltare" questo ordine, cioè cambiare la linea
if(OrderSymbol()==Symbol()) aif(OrderSymbol()==Symbol()&& OrderTicket()!=A), o aggiungere una lineaif(Ticket()!=A)continua;
domanda principale:
cosa for(int i=0;i<OrdersHistoryTotal();i++) abbiamo bisogno esattamente di OrdersHistoryTotal() quando, per esempio, ho bisogno solo di 2 scambi?
ma perché abbiamo bisogno della linea for(int i=0;i<OrdersHistoryTotal();i++) abbiamo bisogno esattamente di OrdersHistoryTotal() quando, per esempio, ho bisogno solo di 2 scambi?
Aiutatemi se decidessi di scrivere un robot in C/C++, per esempio. Non è un problema scriverne uno, ma come lo collego con metatrader? Come ottenere quotazioni e come inviare un segnale di acquisto/vendita?
Desead: Aiutatemi se decidessi di scrivere un robot in C/C++, per esempio. Non è un problema scriverne uno, ma come lo collego con metatrader? Come ottenere quotazioni e come inviare un segnale di acquisto/vendita?
Non conosco altri linguaggi, ma potrebbe essere possibile scrivere il tuo codice come DLL e poi potrebbe essere possibile chiamare dai programmi MQL.
Sì, ora capisco perché c'è un confronto per il tempo nel ciclo, e il tempo in general....
Capisco anche la LOGICA - segnare "A", poi escludere "A", ma prima, tutte le opzioni DOVE questa "A" può essere appuntata le ho provate - e ancora il consulente mi restituisce l'ultimo biglietto, non il penultimo.
.
Ho inserito 2 cicli (2 funzioni) - il primo originale, il secondo con l'eccezione di "A"... eseguite una dopo l'altra.
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
sì è così che questo punto è ben noto a me...
per favore, scrivi un pezzo richiedendo il biglietto dell'ultima settimana dalla storia... e io ne prenderò la logica...
MISTICA!!!
questo
-----------------------------------------------------------------------------
pp_sell=(-(PriceOpenLastClosePos()-PriceCloseLastPos())*100000); // per valute con dimensione EUR
Stampa (pp_sell);
------------------------------------------------------------------------------------
Stampa -10, come dovrebbe essere, dato che l'ultimo trade SELL ha un profitto di 10
ma se si inseriscono diversi TEMPI DIFFICILI TRA LA STAMPA E LA VARIABILE, per esempio
----------------------------------------------------------------------------
pp_sell=(-(PriceOpenLastClosePos()-PriceCloseLastPos())*100000); // per valute con dimensione EUR
se ( Ora()>=10 && Ora()<20)
{
se ( Stoch_1>Stoch_2) ritorno(0);
else {
se (OrdiniTotali()==0)
{ PlaySound("ok.wav");
if ( GetTypeLastClosePos()==1) Print (pp_sell);
}
Stampa("___");
}
}
ritorno(0);
}
------------------------------------------------------------------------------------
funziona, ma stampa -9 !!!!
qual è il segreto?
In questi casi, le imprecisioni di calcolo si accumulano e possono alla fine diventare significative. Pensate di inserirecondizioni chenon cambiano, in realtà costringete il computer a fare calcoli inutili e le vostre condizioninon cambiano.
E sei sicuro chePriceOpenLastClosePos() e PriceCloseLastPos() stiano impostando valori per la stessa posizione?
{
a partire da if(OrderCloseTime()>time)... allora non è chiaro da dove viene... beh, non importa...
Stampa un biglietto, ma solo l'ultimo. E cosa fare con il penultimo? Non riesco proprio a capire come il secondo biglietto possa essere stampato?
prima scrivo solo Print LastClosetPoz()
prendere il 2° (i) ? OrderSelect(2,SELECT_BY_POS,MODE_HISTORY)....?
Print LastClosetPoz(2) ?? errore ovvio, ma sarebbe logico :)))
Ho provato a mettere altri parametri di una posizione chiusa(prezzi di chiusuradi una posizione di stop) invece di OrderTicket nella linea Ticket=OrderTicket(); - non funziona.
State lavorando con valorinon normalizzati come il doppio. In questi casi, le imprecisioni di calcolo si accumulano e possono diventare significative.
Non è grasso per un computer accumulare fino al 10% di errore in 4 righe? :))))))))))) (in grandi numeri meno del 10%)
1) cosa c'è da salvare se l'ordine chiuso è fisso e tutti i suoi parametri "non galleggiano"?
2) Le condizioni non erano in alcun modo legate al calcolo del parametro di uscita. Erano solo una barriera -lasciare andare-non lasciare andare...
3) E perché allora il risultato non galleggia all'interno del lavoro di un EA, ma galleggia da uno all'altro?
a partire da if(OrderCloseTime()>time)... allora non è chiaro da dove viene...ma va bene...
Stampa un biglietto, ma solo l'ultimo. E cosa fare con il penultimo? Non vedo come fare con il secondo biglietto?
prendere il 2° (i) ? OrderSelect(2,SELECT_BY_POS,MODE_HISTORY)....?
1. si prega di scrivere un pezzo con richiesta di biglietto dalla storia.-la tua domanda.
Per trovare il penultimo, dobbiamo memorizzare il biglietto dell'ultimo (per esempio nella variabile A), poi bisogna eseguire il ciclo un'altra volta e "saltare" questo ordine, cioè per esempio cambiare il
if(OrderSymbol()==Symbol()) aif(OrderSymbol()==Symbol()&& OrderTicket()!=A), o aggiungere una lineaif(Ticket()!=A)continua;
E ho già spiegato che l'indice dell'ordine non coinciderà sempre con quello chiuso nel conto, dato che gli ordini a mercato e quelli in sospeso vengono presi in considerazione insieme e questi ultimi non hanno un prezzo di chiusura, per questo tutti gli ordini vengono analizzati per trovare l'ultimo chiuso e l'ordine con il tempo di chiusura più lungo.
1. per favore, scrivi un pezzo chiedendo un biglietto per l'ultima settimana della storia...-la tua domanda.
Per trovare il penultimo, dovremmo memorizzare il biglietto dell'ultimo (per esempio nella variabile A), poi dovremmo eseguire il ciclo un'altra volta e "saltare" questo ordine, cioè cambiare la linea
if(OrderSymbol()==Symbol()) aif(OrderSymbol()==Symbol()&& OrderTicket()!=A), o aggiungere una lineaif(Ticket()!=A)continua;
domanda principale:
cosa for(int i=0;i<OrdersHistoryTotal();i++) abbiamo bisogno esattamente di OrdersHistoryTotal() quando, per esempio, ho bisogno solo di 2 scambi?
Che ne dici di questo
o(int i=0;i<2;i++) ? (controllato - biglietto =-1....) nda.....tuman...:))
domanda principale:
ma perché abbiamo bisogno della linea for(int i=0;i<OrdersHistoryTotal();i++) abbiamo bisogno esattamente di OrdersHistoryTotal() quando, per esempio, ho bisogno solo di 2 scambi?
Che ne dici di questo
o(int i=0;i<2;i++) ? (controllato - biglietto =-1....) nda.....tuman...:))
Ho finito il commento precedente, vedi. Inoltre, ti ho scritto un codice che cerca l'ultimo trade chiuso sullo strumento corrente.
Aiutatemi se decidessi di scrivere un robot in C/C++, per esempio. Non è un problema scriverne uno, ma come lo collego con metatrader? Come ottenere quotazioni e come inviare un segnale di acquisto/vendita?
Non conosco altri linguaggi, ma potrebbe essere possibile scrivere il tuo codice come DLL e poi potrebbe essere possibile chiamare dai programmi MQL.
Ho finito il commento precedente, vedi.
Sì, ora capisco perché c'è un confronto per il tempo nel ciclo, e il tempo in general....
Capisco anche la LOGICA - segnare "A", poi escludere "A", ma prima, tutte le opzioni DOVE questa "A" può essere appuntata le ho provate - e ancora il consulente mi restituisce l'ultimo biglietto, non il penultimo.
.
Ho inserito 2 cicli (2 funzioni) - il primo originale, il secondo con l'eccezione di "A"... eseguite una dopo l'altra.
Stampa zero....
----------------------------------------------------------------------------------------------------
se ( Ora()>=10 && Ora()<20)
{
LastClosetPoz();Sec_LastClosetPoz();
Stampa ( biglietto2,biglietto);
}
ritorno(0);
}
//--------------------------------------------+
int LastClosetPoz()
{
int Tot=OrdersHistoryTotal(),Ticket=-1; datetime time=0;
se(Tot>0)
{
for(int i=0;i<OrdersHistoryTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
{
se(OrderSymbol()==Symbol())
{
se(OrderCloseTime()>time)
{
time=OrderCloseTime();Ticket=OrderTicket(); A=Ticket;
}
}
}
altrimenti continuare;
}
}
return(Ticket);
}
//--------------------------------------------
int Sec_LastClosetPoz()
{
int Tott=OrdersHistoryTotal(),Ticket2=-1; datetime time2=0;
se(Tott>0)
{
for(int i=0;i<OrdersHistoryTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
{
if(OrderSymbol()==Symbol()&&OrderTicket()!=A)
{
se(OrderCloseTime()>time2)
{
time2=OrderCloseTime();Ticket2=OrderTicket();
}
}
}
altrimenti continuare;
}
}
return(Ticket2);
}