[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 279
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
Lancia l'algoritmo, a parole, perché è un po' poco chiaro...
Approssimativamente come segue:
//determina il numero totale di giorni di trading.
OrderSelect(0,SELECT_BY_POS,MODE_HISTORY);
Days=MathRound((TimeCurrent()-OrderOpenTime())/(3600*24) + 1);
poi per il periodo dato, calcolare il profitto/giorni = %/giorno
Ho bisogno di calcolare i giorni del fine settimana per questo intero periodo ed escludere dal calcolo:
profitto/(giorni di assenza)
Approssimativamente come segue:
//determina il numero totale di giorni di trading.
OrderSelect(0,SELECT_BY_POS,MODE_HISTORY);
Days=MathRound((TimeCurrent()-OrderOpenTime())/(3600*24) + 1);
poi per il periodo dato, calcolare il profitto/giorni = %/giorno
Ho bisogno di calcolare i giorni del fine settimana per tutto il periodo ed escludere dal calcolo:
profitto/(giorni di assenza)
Controllate di avere lo storico necessario per il periodo e calcolate il vostro "profitto/giorno". Basta non usare il calendario (costanti nella tua formula) e questo è tutto. Solo i giorni di trading vanno nella storia (ci sono anche i giorni festivi). Legatevi alle barre giornaliere, per esempio.
Se vuoi specificamente usare un calendario (gregoriano o giuliano, per esempio). Qual è il trucco, c'è un nuovo bar, c'è una nuova canzone?
Approssimativamente come segue:
//determina il numero totale di giorni di trading.
OrderSelect(0,SELECT_BY_POS,MODE_HISTORY);
Days=MathRound((TimeCurrent()-OrderOpenTime())/(3600*24) + 1);
poi per il periodo dato, calcolare il profitto/giorni = %/giorno
Ho bisogno di calcolare i giorni del fine settimana per questo intero periodo ed escludere dal calcolo:
profitto/(giorni di assenza)
Puoi calcolare il numero di barre giornaliere dalla data di inizio del test.
Puoi contare il numero di barre giornaliere con più di 20 ore (per escludere i giorni di riposo parziale). Puoi tracciare un nuovo giorno come se fosse apparsa una nuova barra, e così via (come leggere l'intera storia dei trade e calcolare date uniche).
Puoi contare il numero di barre giornaliere dalla data di inizio del test.
Puoi contare il numero di barre giornaliere con più di 20 ore (per escludere i fine settimana incompleti). Puoi tracciare un nuovo giorno quando appare una nuova barra, e così via (come leggere l'intera storia degli scambi e contare le date uniche).
Controllate di avere la storia necessaria per il periodo e contate i vostri "profitti/giorni". Basta non usare quelli del calendario (costanti nella tua formula) e questo è tutto. Solo i giorni di commercio sono inclusi nella storia (ci sono anche i giorni festivi). Legatevi alle barre giornaliere, per esempio.
Se vuoi specificamente usare un calendario (gregoriano o giuliano, per esempio). Qual è il trucco, c'è un nuovo bar, c'è una nuova canzone?
L'ho fatto in questo modo:
OrderSelect(0,SELECT_BY_POS,MODE_HISTORY);
Days=MathRound((TimeCurrent()-OrderOpenTime())/(3600*24));
for(i=0; i<Days; i++)
{
if(TimeDayOfWeek(CurTime()-i*24*3600)==6 || TimeDayOfWeek(CurTime()-i*24*3600)==7) Days3++;
}
Giorni-=Giorni3;
Ho fatto questo:
OrderSelect(0,SELECT_BY_POS,MODE_HISTORY);
Days=MathRound((TimeCurrent()-OrderOpenTime())/(3600*24));
for(i=0; i<Days; i++)
{
if(TimeDayOfWeek(CurTime()-i*24*3600)==6 || TimeDayOfWeek(CurTime()-i*24*3600)==7) Days3++;
}
Giorni-=Giorni3;
no, con questo orderelect si selezionano gli ordini nella storia (UNA volta), poi se ne va solo uno (l'ultimo). Non c'è niente di confuso?
Fai una ricerca di ordini nel ciclo e applica le tue condizioni ad ogni ordine.
// Cerca tutti gli ordini nel ciclo
for(int i=0;i<=OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS, MODE_HISTORY))
{
// Se il simbolo e il numero magico corrispondono, l'ordine è nostro
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
{
// Controlla qui.
}
}
}
No, con questo orderelect si selezionano gli ordini nella storia (UNA volta), poi si va solo su uno (l'ultimo). Non c'è niente di confuso?
Passa attraverso gli ordini nel ciclo e applica le tue condizioni ad ogni ordine.
// Cerca tutti gli ordini nel ciclo
for(int i=0;i<=OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS, MODE_HISTORY))
{
// Se il simbolo e il numero magico corrispondono, l'ordine è nostro
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
{
// Controlla qui.
}
}
}
Beh, ovviamente ho sbagliato:
TimeDayOfWeek(CurTime()-i*24*3600)==7
invece di 7 dovrebbe essere 0.
Controllato, su conti che hanno più di una settimana. Sembra mostrare correttamente.
Come si calcola l'iMA?
C'è un posto dove posso trovare come viene calcolata la funzione iMA (o è classificata)?
In particolare sono interessato a MODE_LWMA.
Voglio guardare e modificare a mio piacimento, ma qualcosa googled il codice sorgente non ha ottenuto
Beh, ovviamente ho sbagliato:
TimeDayOfWeek(CurTime()-i*24*3600)==7
invece di 7 dovrebbe essere 0.
Controllato, su conti che hanno più di una settimana. Sembra mostrare correttamente.