[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 104

 

O número do dia do mês é adicionado ao comentário do pedido. Como posso calcular quantos pedidos (fechados) existiam durante o dia com o comentário deste dia?

Eu não sei como fazer isso.

comentário = Dia();

int OpenOrdersDayHistory(símbolo de corda, tipo int, int magic, comentário de corda)
{
int n;
int f = 0;
int total = OrderHistoryTotal();
for (n = total - 1; n >= 0; n--)
{
OrderSelect(n,SELECT_BY_POS,MODE_HISTORY);
if (OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic && OrderMagicNumber() == comment)
{
f++;
}
}
Print("order count = ",f,");
return(f);
}

 
Para serega393
Seu comentário por trás da função é um fio ou um número inteiro?
A função parece ser composta corretamente. Coloque uma impressão de todas as variáveis que chegam dentro para ver uma imagem clara.
 
serega393 писал(а) >>

O número do dia do mês é adicionado ao comentário do pedido. Como posso calcular quantos pedidos (fechados) existiam durante o dia com o comentário deste dia?

Eu não sei como fazer isso.

comentário = Dia();

int OpenOrdersDayHistory(símbolo de corda, tipo int, int magic, comentário de corda)
{
int, s.f;
int f = 0;
int total = OrderHistoryTotal();
para (n = total - 1; n >= 0; n--)
{
OrderSelect(n,SELECT_BY_POS,MODE_HISTORY);
if (OrderSymbol() == símbolo && OrderType() == tipo && OrderMagicNumber() == magia && OrderComment() == comentário)
{
f++;
}
}
Imprimir("quantidade do pedido = ",f,");
retorno(f);
}

comment = TimeDay(iTime(Symbol(),Period(),0)) ;
E o mesmo quando se trata de enviar pedidos!
 
StatBars >> :
E o mesmo quando se trata de enviar pedidos!

>> É melhor assim:

   comment = TimeDay(TimeCurrent());
É mais rápido, mais fácil e mais confiável.
 

bool UseTF = true;


int start()
{

string comment = TimeDay(TimeCurrent());

if (OpenOrdersDayHistory(Symbol(), OP_SELLL, 123, comment) > 0)
{
UseTF = false;
Print("No");
}
mais
{
UseTF = true;
Print("Sim");

}

if (UseTF == true)
{
int ticket = OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, 0, Ask+10*Point, comment, 123, 0, Green);
}
return(0);
}

int OpenOrdersDayHistory(símbolo de corda, tipo int, int magic, comentário de corda)
{
int n;
int f = 0;
int total = OrderHistoryTotal();
for (n = total - 1; n >= 0; n--)
{
OrderSelect(n,SELECT_BY_POS,MODE_HISTORY);
if (OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic && OrderMagicNumber() == comment)
{
f++;
}
}
Print("order count = ",f,");
return(f);
}

Aqui você experimenta. Não lê ordens na história.

 

Boa tarde a todos.

Eu não consegui "marcar" adequadamente a abertura de ordens pendentes em meu código. Eu li o tutorial, ajuda e outras coisas. A resposta provavelmente está aí, mas não consigo descobrir...


O problema é o seguinte. Tenho um período de tempo durante o qual procuro o preço máximo e mínimo e atribuo esses valores a duas variáveis globais. Então precisamos abrir uma ordem pendente a esse preço. Não posso decidir o ponto de preço. Quero especificar corretamente o intervalo do preço atual.

1.Pergunta - como é a função do preço do bar atual, por exemplo, às 6 horas da manhã?

2 Como especificar o parâmetro do bilhete a fim de fechar o pedido?

Ou outra forma de fechar uma das duas ordens previamente abertas?

Tenho que tentar desta maneira...


para (int i=1; i<=OrdensTotal(); i++)

{

if(OrderSelect(i,SELECT_BY_POS)==verdadeiro)

{

int T=OrderTicket();

int Cur_Hour2=Hour(); // tempo do servidor em horas

double Cur_Min2=Minute(); // Tempo do servidor em minutos

double Cur_time2=Cur_Hour2 + Cur_Min2/100; // Tempo do servidor

Alerta(Cur_time2);

se (Cur_time2>=Time_of_buy_sell_2)

OrderClose(T,1,Ask,3,Red);

}

retornar; // Sair do início()


Por favor, não julgue estritamente:)

 
TheXpert писал(а) >>

É melhor assim:

E mais rápido, mais fácil e mais confiável.

Eu concordo, mas minha ênfase foi mais na outra.

 
serega393 писал(а) >>

Tente isto. Não lê ordens na história.

Ele lê tudo normalmente. Verifique que comentário você tem após o fechamento. Alguns corretores acrescentam suas próprias entradas ao comentário quando um pedido é fechado.

 
int start()
{
   string comment = TimeDay(TimeCurrent());   
   if ( OpenOrdersDayHistory(Symbol(), OP_BUY, 123, comment) <3)   
   {      
      UseTF = true;      
      Print("Yes");   
   }
   else   
   {      
      UseTF = false;      
      Print("No");   
   }    
   
   if ( UseTF == true)   
   {      
      int ticket = OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, 0, Ask+100*Point, comment, 123, 0, Green);   
   }
   return(0);
}

int OpenOrdersDayHistory(string symbol, int type, int magic, string comment)
{   
   int n;   
   int f = 0;   
   int total = OrdersHistoryTotal();    
   for ( n = total - 1; n >= 0; n--)   
   {      
      OrderSelect( n, SELECT_BY_POS, MODE_HISTORY);
      Print(OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic," ",StringFind(OrderComment(), comment,0)>=0);
      if (OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic && StringFind(OrderComment(), comment,0)>=0)          
            f++;   
   }    
   Print("колл-во ордеров = ", f,"");   
   return( f);
} 
 
Você pode sugerir uma EA que feche todas as posições (e também as não lucrativas) quando um certo lucro for alcançado e remova todas as ordens pendentes não cumpridas?