A idéia é que as ordens pendentes que não tenham sido abertas devem ser apagadas dois dias após terem sido colocadas.
min=1440;
Por que você gostaria de rastrear e excluir ordens pendentes? Você deve definir sua data de expiração=TimeCurrent()+min*60+sec; eles mesmos serão apagados após min*60+sec.
Por que você precisa monitorar e apagar as ordens pendentes? Você precisa definir data de expiração=TimeCurrent()+min*60+sec; eles se apagarão após min*60+sec.
Talvez, a ordem pendente feche de acordo com algum algoritmo, portanto fechará em 1 dia se houver outra condição, por exemplo, 2 dias. 2 dias.
OrderOpenTime() retorna o tempo de abertura do pedido.
Para uma ordem pendente, esta função retorna zero.
Hmm, eu rapidamente ajustei o código sem verificar as funções propriamente ditas. Certo, OrderOpenTime() mostra o tempo de abertura da posição pelo corretor, mas não o tempo de aceitação da ordem pendente pelo corretor. Isto é, provavelmente, seria melhor especificar a hora de fechamento imediato no pedido, ou registrar a hora de envio do pedido no número mágico (se não for usado de qualquer forma) e comparar TimeCurrent() com OrderMagicNumber( ).
Boa tarde. Ajude-me a lidar com o indicador personalizado.
Estou resolvendo o problema de determinar a distância até a linha de tendência. Preciso chegar à linha de tendência exatamente no período de tempo em que ela é traçada (independentemente do período de tempo que é aberto no terminal). O valor atual da linha de tendência pode ser obtido usando a função ObjectGetValueByShift. Como os cálculos podem ser feitos apenas pelo tempo aberto, escrevi um pequeno indicador. Fui atraído pelo fato de que a função iCustom tem o parâmetro de tempo, mas me pergunto o quanto este parâmetro é considerado ao chamar o indicador.
Aqui está o indicador:
#property indicator_chart_window#property indicator_buffers 1//-------------------------------------------------------------------- externstring TL_name = "TL_1";
//-------------------------------------------------------------------- double valueBuf[];
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int init() {
//---- indicatorsSetIndexBuffer(0,valueBuf);
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,1, White);
//----return(0);
}
//+------------------------------------------------------------------+//| Custom indicator deinitialization function |//+------------------------------------------------------------------+int deinit() {
//----//----return(0);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+int start() {
int i;
int counted_bars = IndicatorCounted();
//----
i = Bars - counted_bars - 1; // Индекс первого непосчитанного// Цикл по непосчитанным барамwhile(i>=0) {
valueBuf[i] = NormalizeDouble(ObjectGetValueByShift(TL_name,i), Digits);
i--;
}
//----return(0);
}
O indicador considera o valor atual da tendência. Eu chamo o próprio indicador:
Aqui, por exemplo, o tempo PERIOD_D1 é passado para o indicador como um parâmetro, no qual a tendência é traçada e para o qual a distância deve ser calculada.
Calculo a distância para a tendência de forma simples:
Parece ser assim, mas não é assim: ao mudar para outros timings (diferente de D1), o indicador retorna outros valores (correto para os timings para os quais eu mudo). Aqui temos uma pergunta: até que ponto um período é considerado quando se chama a função iCustom? Ou talvez eu tenha estragado o indicador?
Sim, a propósito, esta forma de implementação é mais inteligente. Somente no início havia mais espaço ocupado por funções adicionais. Foi assim que aconteceu:
void FindOrders(int& massive[])
{
int oType;
ArrayInitialize(massiveOfOrders, 0);
for (int i=OrdersTotal() - 1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderMagicNumber() != i_magic) continue;
oType = OrderType();
massiveOfOrders[oType] = massiveOfOrders[oType] + 1;
}
}
int start()
{
int i, oTotal = 0, oPending = 0;
FindOrders(massiveOfOrders);
for (i=0; i<=7; i++)
{
if (i > 1 && i < 6)
{
oPending += massiveOfOrders[i];
}
if (i < 6)
{
oTotal += massiveOfOrders[i];
}
}
pr ("FindOrders(): " + "oTotal = " + oTotal);
pr ("FindOrders(): " + "oPending = " + oPending);
Não há nada a se otimizar, não é mesmo?
Quero dizer, é muito mais conveniente, quando não há absolutamente nada no início. E tudo é chamado puramente por funções. E da última vez verificou-se que o início tem muitos tipos de sobrecrescimento nas principais funções e sobrecrescimento de funções adicionais...
Olá! à procura de erros nesta função.
A idéia é que as ordens pendentes que não tenham sido abertas devem ser apagadas dois dias após terem sido colocadas.
min=1440;
Olá! à procura de erros nesta função.
A idéia é que as ordens pendentes que não tenham sido abertas devem ser apagadas dois dias após terem sido colocadas.
min=1440;
Por que você gostaria de rastrear e excluir ordens pendentes? Você deve definir sua data de expiração=TimeCurrent()+min*60+sec; eles mesmos serão apagados após min*60+sec.
Por que você precisa monitorar e apagar as ordens pendentes? Você precisa definir data de expiração=TimeCurrent()+min*60+sec; eles se apagarão após min*60+sec.
paladin80:
OrderOpenTime() retorna o tempo de abertura do pedido.
Para uma ordem pendente, esta função retorna zero.
OrderOpenTime() retorna o tempo de abertura do pedido.
Para uma ordem pendente, esta função retorna zero.
Boa tarde. Ajude-me a lidar com o indicador personalizado.
Estou resolvendo o problema de determinar a distância até a linha de tendência. Preciso chegar à linha de tendência exatamente no período de tempo em que ela é traçada (independentemente do período de tempo que é aberto no terminal). O valor atual da linha de tendência pode ser obtido usando a função ObjectGetValueByShift. Como os cálculos podem ser feitos apenas pelo tempo aberto, escrevi um pequeno indicador. Fui atraído pelo fato de que a função iCustom tem o parâmetro de tempo, mas me pergunto o quanto este parâmetro é considerado ao chamar o indicador.
Aqui está o indicador:
O indicador considera o valor atual da tendência.
Eu chamo o próprio indicador:
Aqui, por exemplo, o tempo PERIOD_D1 é passado para o indicador como um parâmetro, no qual a tendência é traçada e para o qual a distância deve ser calculada.
Calculo a distância para a tendência de forma simples:
Parece ser assim, mas não é assim: ao mudar para outros timings (diferente de D1), o indicador retorna outros valores (correto para os timings para os quais eu mudo).Aqui temos uma pergunta: até que ponto um período é considerado quando se chama a função iCustom?
Ou talvez eu tenha estragado o indicador?
t = OrderTotal();
por que contar???? contou???
Então, eu o fiz para passar o valor por referência. A lógica é simples!
Na minha versão, a função é mais curta ... :)
Sim, a propósito, esta forma de implementação é mais inteligente. Somente no início havia mais espaço ocupado por funções adicionais. Foi assim que aconteceu:
Não há nada a se otimizar, não é mesmo?
Quero dizer, é muito mais conveniente, quando não há absolutamente nada no início. E tudo é chamado puramente por funções. E da última vez verificou-se que o início tem muitos tipos de sobrecrescimento nas principais funções e sobrecrescimento de funções adicionais...
Bom dia!
Por favor, ajude e explique por que o Expert Advisor não está trabalhando ou negociando?