El código fue proporcionado por cortesía de sangmane. Acumula ganancias para un intervalo individual definido de 24 horas:
Código insertado extern int CumProfitStart = 00;
Código insertado if(AllowTrade == True) TradeTaken = No ( DoubleToStr(cummulativeProfit(CumProfitStart),2) );
Código insertado #91;color=negro#93;doble #91;/color#93; cummulativeProfit(int startHour) int totalHistory = OrdersHistoryTotal();/obtener el número de pedidos en segundo plano en el grupo de pedidos dual profit = 0;/establece el beneficio inicial = 0 datetime thistime = TimeCurrent();/ahora use TimeCurrent() en lugar de Time#91;0#93;, para evitar defectos lógicos cuando se ejecuta en un ciclo de 24 horas datetime startTime = StrToTime(TimeToStr(thistime,TIME_DATE) startHour :00);/construir startTime basado en startHour y el día, mes, año actual if(thistimelt;startTime) startTime = startTime-24*60*60;/comprobar si la hora actual está detrás de startTime, restar startTime por 24 horas para(int I = totalHistory-1; igt;=0; t --) OrderSelect(I, SELECT_BY_POS, MODE_HISTORY);/comprobar si la hora de cierre de la orden es posterior a la hora de inicio, salir del bucle if(OrderCloseTime() lt; startTime) break; beneficio = BeneficioPedido(); return(NormalizeDouble(beneficio,2));/acumular beneficio
He intentado cambiar este código en particular, de la siguiente manera, para contar el número de transacciones en un período de 24 horas definido individualmente. Esto funciona bien las primeras 24 horas, cuenta los intercambios, borra el conteo a cero al comienzo del intervalo de 24 horas subsiguiente pero no acumula un conteo después de eso:
Código insertado extern int CountTradesStart = 00;
Comentario de código insertado... Número de transacciones ahora =, cummulativeTradeCount(CountTradesStart), \n,
Código insertado #91;color=red#93;int#91;/color#93; cummulativeTradeCount(int startHour) int totalHistory = OrdersHistoryTotal();/obtener el número de pedidos en segundo plano en el grupo de pedidos int TradeCount = 0;/establecer el recuento inicial = 0 datetime thistime = TimeCurrent();/ahora use TimeCurrent() en lugar de Time#91;0#93;, para evitar defectos lógicos cuando se ejecuta en un ciclo de 24 horas datetime startTime = StrToTime(TimeToStr(thistime,TIME_DATE) startHour :00);/construir startTime basado en startHour y el día, mes, año actual if(thistimelt;startTime) startTime = startTime-24*60*60;/verifica si la hora actual está detrás de startTime, resta startTime por 24 horas #91;color=red#93;for(int k = totalHistory-1; kgt;=0; k--) #91;/color#93; OrderSelect(k, SELECT_BY_POS, MODE_HISTORY);/comprobar si la hora de cierre de la orden es posterior a la hora de inicio, salir del bucle if(OrderCloseTime() lt; startTime) break; should (OrderSymbol()==Symbol() OrderMagicNumber() == MagicNumber) TradeCount ; retorno (Número de comercio);/
No puedo por mi vida determinar lo que está mal. ¡Cualquier ayuda será apreciada!