[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 279

 
snail09:
Jogue o algoritmo, em palavras, porque é um pouco obscuro...

Aproximadamente como se segue:

//determinar o número total de dias de negociação.

OrderSelect(0,SELECT_BY_POS,MODE_HISTORY);

Days=MathRound((TimeCurrent()-OrderOpenTime())/(3600*24) + 1);

então, para o período determinado, calcular lucro/dia = %/dia

Preciso calcular os dias de fim de semana para todo este período e excluir do cálculo:

lucro/(dias livres)

 

forexnew:

Aproximadamente como se segue:

//determinar o número total de dias de negociação.

OrderSelect(0,SELECT_BY_POS,MODE_HISTORY);

Days=MathRound((TimeCurrent()-OrderOpenTime())/(3600*24) + 1);

então, para o período determinado, calcular lucro/dia = %/dia

Preciso calcular os dias de fim de semana para todo o período e excluir do cálculo:

lucro/(dias livres)



Verifique se você tem o histórico necessário para o período e calcule seus "lucros/dia". Apenas não use calendário (constantes em sua fórmula) e pronto. Somente os dias de negociação entram para a história (também há feriados públicos). Apegue-se aos bares diários, por exemplo.

Se você quiser usar especificamente um calendário (Gregorian ou Julian, por exemplo). Qual é o truque, há um novo bar, há uma nova canção?

 
forexnew:

Aproximadamente como se segue:

//determinar o número total de dias de negociação.

OrderSelect(0,SELECT_BY_POS,MODE_HISTORY);

Days=MathRound((TimeCurrent()-OrderOpenTime())/(3600*24) + 1);

então, para o período determinado, calcular lucro/dia = %/dia

Preciso calcular os dias de fim de semana para todo este período e excluir do cálculo:

lucro/(dias livres)



Você pode calcular o número de barras diárias desde a data de início do teste.

Você pode contar o número de bares diários com mais de 20 bares de hora (para excluir dias parciais de folga) . Você pode acompanhar um novo dia como se um novo bar aparecesse, e assim por diante (como ler toda a história das negociações e calcular datas únicas).

 
splxgf:

Você pode contar o número de barras diárias desde a data de início do teste.

Você pode contar o número de barras diárias em que as barras de hora são mais de 20 (para excluir fins de semana incompletos) . Você pode acompanhar um novo dia à medida que um novo bar aparece, e assim por diante (como ler toda a história das negociações e contar datas únicas).

Em qualquer caso"(3600*24) + 1)" não é uma construção adequada, devemos começar a partir do número de barras.
 
snail09:

Verifique se você tem o histórico necessário para o período e conte seus "lucros/dia". Apenas não use calendários (constantes em sua fórmula) e pronto. Somente os dias de negociação entram para a história (também há feriados públicos). Apegue-se aos bares diários, por exemplo.

Se você quiser usar especificamente um calendário (Gregorian ou Julian, por exemplo). Qual é o truque, há um novo bar, há uma nova canção?

Eu o fiz desta maneira:

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++;
}
Dias-=Dias3;

 
forexnew:

Eu fiz isso:

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++;
}
Dias-=Dias3;

não, com esta ordem - selecione as ordens na história (UM tempo), depois vá apenas uma (a última). Não há nada de confuso?

Faça uma busca de pedidos no laço e aplique suas condições a cada pedido.

// Pesquisar todas as ordens no laço

for(int i=0;i<=OrdensTotal();i++)

{

if(OrderSelect(i,SELECT_BY_POS, MODE_HISTORY))

{

// Se o símbolo e o número mágico combinarem, a ordem é nossa

if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)

{

// Verifique aqui.

}

}

}

 
snail09:

Não, com esta ordem - selecione as ordens na história (UM tempo), depois vá apenas para uma (a última). Não há nada de confuso?

Percorra as ordens no loop e aplique suas próprias condições a cada ordem.

// Pesquisar todas as ordens no laço

for(int i=0;i<=OrdensTotal();i++)

{

if(OrderSelect(i,SELECT_BY_POS, MODE_HISTORY))

{

// Se o símbolo e o número mágico combinarem, a ordem é nossa

if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)

{

// Verifique aqui.

}

}

}

Por que eu preciso de mandados? Só preciso identificar dias únicos da semana que não estão sendo negociados, ou seja, sábado e domingo, subtraídos do número total de dias.
 

Bem, é claro que me enganei:

TimeDayOfWeek(CurTime()-i*24*3600)==7

ao invés de 7, deveria ser 0.

Verificado, em contas com mais de uma semana de existência. Parece estar correta.

 

Como é calculado o iMA?


avatar
90
Eugene1 20.10.2011 16:34

Existe algum lugar onde eu possa encontrar como a função iMA é calculada (ou é classificada)?

Especialmente estou interessado em MODE_LWMA.

Quero olhar e ajustar ao meu gosto, mas algo não foi obtido no google sources

 
forexnew:

Bem, é claro que me enganei:

TimeDayOfWeek(CurTime()-i*24*3600)==7

ao invés de 7, deveria ser 0.

Verificado, em contas com mais de uma semana de existência. Parece estar correta.

Bem, não o faça, então não o faça. Se seu especialista não está no controle de suas ordens, o que ele está fazendo afinal? ...Negociando em um testador?