[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 87

 
sergeev:

713
borilunad 15.01.2013 12:10

Você poderia resolver um mistério: Por que quando eu inseri esta função || isCloseLastPosByTake() == Verdadeiro ||| o especialista no testador começou a desacelerar muito, vezes 10! Esta é uma das 4 condições mutuamente exclusivas, portanto não posso usar a cadeia como em condições somadas para fazer o código funcionar mais rápido. O que você pode me aconselhar? Agradecemos antecipadamente seus conselhos!

Essa função percorre as ordens para encontrar o último fechamento no valor do take. Reformular esta função para acelerá-la. A função de Kim é universal, o que significa que você pode se livrar de um monte de coisas desnecessárias. Mais uma vez, tudo depende da lógica de seu Consultor Especialista.
 

Você pode me dizer como abrir uma ordem de compra? Condições de ordem de vendase(OrderTotal()==0&& ma0<ma1 && ma1<ma2). Entendo que devemos usarum interruptor. O que devo escrever em vez de(x,a,b)?

if(OrdensTotal()==0)

switch(x)case'a':caso'b':

Agradecemos antecipadamente!


 
artmedia70:
Essa função percorre as ordens para encontrar a última fechada na tomada. Reformular esta função para acelerá-la. Todos eles são universais no programa de Kim, o que significa que muitas coisas desnecessárias podem ser removidas deles. Mais uma vez, tudo depende da lógica de seu Consultor Especialista.
Muito obrigado! Eu estava pensando que eu poderia usar algum operador, mas eles não passam por casos com "ou" para uma e a mesma ação.
 
KoOr:

Você pode me dizer como abrir uma ordem de compra? Condições de ordem de vendase(OrderTotal()==0&& ma0<ma1 && ma1<ma2). Entendo que devemos usarum interruptor. O que devo escrever em vez de(x,a,b)?

if(OrdensTotal()==0)

switch(x)case'a':caso'b':

Agradecemos antecipadamente!




if(OrdersTotal()==0)
 {
  if( ma0<ma1 && ma1<ma2) OrderSend(....,OP_SELL,.......);
  if( ma0>ma1 && ma1>ma2) OrderSend(....,OP_BUY,.......);
 }
Apenas um pedido será aberto, não mais do que isso, seja para vender ou para comprar.
 

Eu tenho lutado o dia todo para entender porque a função retorna -1

int typ(string t, int m)
{  datetime z=0 ; int p=-1,i;
   int d=OrdersHistoryTotal();
   if ( t=="0") t=Symbol(); 
   for( i=0;i<=d;i++){
   if ( OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) ) {                     
   if ( (OrderSymbol() == t || t=="0" ) && ( OrderMagicNumber() == m || m==-1 ) ){
   if ( OrderCloseTime()>z&&OrderType()<=1)  
   {
   z =OrderCloseTime(); 
   p =OrderType();
   }}}}
return(p);
} 

A chamada é assim

Comment(typ("0",-1));

Todos os pedidos estão na história!

Qual pode ser o erro?

 
VOLDEMAR:

Eu tenho lutado o dia todo para entender porque a função retorna -1

A chamada é assim

Todos os pedidos estão na história!

Qual pode ser o erro?



Comment(typ(Symbol(),-1));
Não há "0", há "EURUSD", "AUDUSD" etc.
 
Sepulca:


Não existe tal símbolo "0", existe "EURUSD", "AUDUSD" etc.

Se não houver tal símbolo se ( t=="0") t=Símbolo(); então faça t igual ao nosso símbolo ao qual a EA está anexada;
 
mas como pode ser que a condição se DayOfWeek( ) ==1 ... ...seria reunido em uma terça-feira?
 
VOLDEMAR:

Se não houver tal símbolo se ( t=="0") t=Símbolo(); então faça t igual ao nosso símbolo ao qual a EA está anexada;

Desculpe, eu não notei... Então aqui está ele:

for( i=0;i<d; i++){

O último número de pedido é OrdersTotal()-1; Mas não é essa a questão. Eu experimentei, acontece que o histórico de pedidos fechados não é visível no testador, na conta demo seu código funciona.

 

Eu não tenho o que você escreveu no meu código.

Eu tenho.

int d=OrdersHistoryTotal();

e passa primeiro...

Bem, não importa, eu encontrei o problema em outro lugar no código ....