[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 620
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
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);
}