[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 279

 
snail09:
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)

 

forexnew:

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?

 
forexnew:

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).

 
splxgf:

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).

In ogni caso"(3600*24) + 1)" non è una costruzione adeguata, dovremmo partire dal numero di barre.
 
snail09:

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;

 
forexnew:

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.

}

}

}

 
snail09:

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.

}

}

}

Perché ho bisogno di mandati? Ho solo bisogno di identificare i giorni una tantum della settimana che non sono di trading, cioè il sabato e la domenica sottratti dal numero totale di giorni.
 

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?


avatar
90
Eugene1 20.10.2011 16:34

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

 
forexnew:

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.

Beh, non farlo, quindi non farlo. Se il vostro esperto non ha il controllo dei suoi ordini, allora cosa sta facendo? ...Trading in un tester?
Motivazione: