Adición de la tasa de capitalización a EA
Adición de la tasa de capitalización a EA

 

Publi

Página 1 de 353 123 ??ltimo??ltimo
Resultados 1 al 10 de 22

Tema: Adición de la tasa de capitalización a EA

  1. #1
    He estado tratando de agregar la tasa de capitalización a un EA sin suerte. He recibido ayuda de otros, pero dicen que necesito usar una variable global con la que nunca me he metido y no sé cómo usarla.

    Lo que debo hacer es encontrar el saldo de la cuenta () desde el comienzo del día, la semana y el mes. Podría ser el saldo de cuenta () al cierre de ayer, la semana pasada o el mes pasado, ya que sería el mismo que el saldo de apertura y no cambiaría.

    ¿No hay una forma de decir: DailyOpenBalance = (AccountBalance(),Period_D1,1)

    Sé que eso no funcionará... pero tiene que haber algún código simple para encontrar el saldo de cierre de ayer.

    Cualquier ayuda sería muy apreciada.

    Esto está en la parte superior del código para que pueda elegir lo que quiero usar:
    Código insertado cadena externa SECCIÓN1 = =====Gestión de riesgos/dinero=====; cadena externa Comentario1.1 = Saldo, Equidad, Margen Libre; cadena externa BalanceToUse = margen libre; cadena externa Comentario1.2 = Diario, Semanal, Mensual; cadena externa Compounding_Rate = Diariamente;
    Esto es lo que tengo que cambiar lo que quiero usar:
    Código insertado/|---------Usado para tasa compuesta if(Compounding_Rate == Daily) CompoundingToUse = DailyOpenBalance;/Compuestos diarios if(Compounding_Rate == Weekly) CompoundingToUse = WeeklyOpenBalance;/Compuestos semanales if(Compounding_Rate == Monthly) CompoundingToUse = MonthlyOpenBalance;/Compuestos mensuales/|---------Usado para el saldo de la cuenta if(BalanceToUse == Balance) AccountBalanceToUse = AccountBalance();/Usa Saldo if(SaldoAUsar == Equidad) SaldoDeCuentaAUsar = EquidadCuenta();/Usa Equity if(BalanceToUse == Free Margin) AccountBalanceToUse = AccountFreeMargin();/Utiliza margen libre
    Esto es lo que otro miembro me ha dicho que debo usar:
    Código insertado bool isNewDay() { datetime dtSaved = GlobalVariableGet(DayStartTime); datetime dtCurr = iTime( Symbol(), PERIOD_D1, 1 ); if ( ( dtSaved == 0 ) || ( dtCurr gt; dtSaved ) ) { GlobalVariableSet( DayStartTime, dtCurr ); GlobalVariableSet( DailyOpenBalance, BalanceToUse ); } } bool isNewWeek() { datetime dtSaved = GlobalVariableGet( WeekStartTime ); datetime dtCurr = iTime( Symbol(), PERIOD_W1, 1 ); if ( ( dtSaved == 0 ) || ( dtCurr gt; dtSaved ) ) { GlobalVariableSet( WeekStartTime, dtCurr ); GlobalVariableSet( WeeklyOpenBalance, BalanceToUse ); } } bool isNewMonth() { datetime dtSaved = GlobalVariableGet( MonthStartTime ); datetime dtCurr = iTime( Symbol(), PERIOD_MN1, 1 ); if ( ( dtSaved == 0 ) || ( dtCurr gt; dtSaved ) ) { GlobalVariableSet( MonthStartTime, dtCurr ); GlobalVariableSet(MonthlyOpenBalance, BalanceToUse); } }
    Esto es lo que estoy usando para el tamaño del lote que ya funciona, pero en lugar de CompoundingToUse tengo AccountBalance() en su lugar, solo lo agrego para que pueda ver cómo estoy tratando de hacer esto:
    Código insertado si (AutoCalculateLots) SLPoints = MathAbs(SL - Ask)/Point; BalanceDeCuentaEnRiesgo = CapitalizaciónParaUsar * PorcentajeDeCuentaEnRiesgo100; tamaño del lote = SaldoDeCuentaEnRiesgo * PorcentajeDeRiesgo100PuntosSL(MarketInfo(Symbol(), MODE_TICKVALUE)); Lotes = tamaño del lote;
    Si este código funciona como está... alguien, por favor, dígame cómo hacer que funcione. He intentado todo lo que se me ocurre... pero con la falta de saber codificar... no puedo hacerlo funcionar.

  2.                         
    Publicidad
  3. #2
    Cita Iniciado por ;
    Ups
    Bueno, entiendes el punto. Debería estar haciendo lo que usted quiere que haga ahora.
    Gracias por la ayuda... ¡Estuve a punto de romper otro monitor! jajaja siempre recibo algunos errores... ¡me cabrean MUCHÍSIMOOOOOOOOO! lol voy a probarlo a ver como funciona.

  4. #3
    Ups
    Bueno, entiendes el punto. Debería estar haciendo lo que usted quiere que haga ahora.

  5. #4
    Código insertado OrderSelect(OT, SELECT_BY_POS, MODE_HISTORY); if(OrderOpenTime() gt; BalanceTime) ¡AHHHH! OrderOpenTime()

  6. #5
    Puse el resto del código en la parte superior donde int start() es: Código insertado/ ---------------------------- ------------------------------------------------ /| Inicio (llamado después de cada marca) |/ -------------------------------------------------------- -------------------------------------------- int start() { datetime StartCompounding = 0; datetime dtDayStart = iTime(Symbol(),PERIOD_D1,0); datetime dtWeekStart = iTime(Symbol(),PERIOD_W1,0); datetime dtMonthStart = iTime(Symbol(),PERIOD_MN1,0);/|---------Usado para la tasa de capitalización if(Compounding_Rate == Daily) StartCompounding= dtDayStart ;/Compuestos diarios if(Compounding_Rate == Weekly) StartCompounding= dtWeekStart ;/Compuestos semanales if(Compounding_Rate == Monthly) StartCompounding= dtMonthStart ;/Compuestos Mensualmente double SaldoCuentaAUsar = SaldoAsOf(EmpezarComposición);/Comprobar la contraseña-----------------------------------

  7. #6
    Este es el final de mi código: Código Insertado/ ------------------------------------- --------------------------------------- /| Funciones de error |/ -------------------------------------------------------- -------------------------------------------- cadena de descripción de error (código int) { cadena de error; cambiar (código) { caso 0: caso 1: error = sin error; interrupción; caso 2: error = error común; ruptura; case 3:error=parámetros comerciales no válidos;break; case 4:error=el servidor comercial está ocupado;break; case 5:error=versión antigua del terminal de cliente;break; caso 6: error = sin conexión con el servidor comercial; ruptura; case 7:error=no hay suficientes derechos;break; case 8:error=solicitudes demasiado frecuentes;break; caso 9: error = operación comercial defectuosa; interrupción; case 64:error=cuenta deshabilitada;break; case 65:error=cuenta inválida;break; caso 128: error = tiempo de espera de comercio; interrupción; caso 129: error = precio no válido; ruptura; case 130:error=paradas inválidas;break; caso 131: error = volumen comercial no válido; interrupción; case 132:error=mercado cerrado;break; case 133: error=el comercio está deshabilitado;break; case 134:error=no hay suficiente dinero;break; caso 135: error = cambio de precio; rotura; caso 136: error = fuera de comillas; ruptura; case 137:error=el intermediario está ocupado;break; case 138:error=recitar;romper; case 139:error=orden bloqueada;break; case 140:error=solo se permiten posiciones largas;break; case 141:error=demasiadas solicitudes;break; caso 145: error = modificación denegada porque la orden está demasiado cerca del mercado; rotura; case 146:error=el contexto comercial está ocupado;break; caso 4000: error = sin error; romper; caso 4001: error = puntero de función incorrecto; romper; case 4002:error=el índice del arreglo está fuera de rango;break; caso 4003: error = no hay memoria para la pila de llamadas de función; interrupción; caso 4004: error = desbordamiento de pila recursiva; ruptura; case 4005:error=no hay suficiente pila para el parámetro;break; case 4006:error=no hay memoria para la cadena de parámetros;break; caso 4007: error = no hay memoria para la cadena temporal; ruptura; caso 4008: error = cadena no inicializada; romper; caso 4009: error = cadena no inicializada en matriz; ruptura; caso 4010: error = no hay memoria para la cadena de matriz; romper; caso 4011: error = cadena demasiado larga; interrupción; case 4012:error=resto de cero dividir;romper; caso 4013: error = cero dividir; romper; case 4014:error=comando desconocido;break; case 4015:error=salto incorrecto (nunca generó error);break; caso 4016: error = matriz no inicializada; romper; case 4017:error=llamadas dll no permitidas;break; caso 4018: error = no se puede cargar la biblioteca; interrupción; caso 4019: error = no se puede llamar a la función; interrupción; case 4020:error=no se permiten llamadas a funciones expertas;break; case 4021: error=memoria insuficiente para la cadena temporal devuelta por la función;break; case 4022:error=el sistema está ocupado (nunca generó un error);break; caso4050:error=recuento de parámetros de función no válido;rotura; caso 4051: error = valor de parámetro de función no válido; romper; case 4052:error=función de cadena error interno;break; caso 4053: error = algún error de matriz; ruptura; caso 4054: error = matriz de serie incorrecta usando; romper; case 4055:error=error de indicador personalizado;break; case 4056:error=los arreglos son incompatibles;break; case 4057:error=error de procesamiento de variables globales;break; case 4058:error=variable global no encontrada;break; case 4059:error=la función no está permitida en el modo de prueba;break; case 4060:error=función no confirmada;break; caso 4061: error = error de envío de correo; interrupción; caso 4062: error = parámetro de cadena esperado; interrupción; case 4063:error=parámetro entero esperado;break; case 4064:error=doble parámetro esperado;break; case 4065:error=array como parámetro esperado;break; caso 4066: error = datos de historial solicitados en estado de actualización; interrupción; caso 4099: error = fin de archivo; ruptura; case 4100:error=algún error de archivo;break; caso 4101: error = nombre de archivo incorrecto; rotura; case 4102:error=demasiados archivos abiertos;break; case 4103:error=no se puede abrir el archivo;break; case 4104:error=acceso incompatible a un archivo;break; case 4105:error=ningún pedido seleccionado;break; caso 4106: error = símbolo desconocido; romper; caso 4107: error = parámetro de precio no válido para la función comercial; interrupción; case 4108:error=ticket inválido;break; case 4109:error=no se permite el comercio;break; case 4110:error=largos no permitidos;break; case 4111:error=no se permiten shorts;break; case 4200:error=el objeto ya existe;break; case 4201:error=propiedad de objeto desconocido;break; case 4202:error=el objeto no existe;break; case 4203:error=tipo de objeto desconocido;break; case 4204:error=sin nombre de objeto;break; caso 4205: error = error de coordenadas del objeto; romper; case 4206:error=no hay subventana especificada;break; predeterminado: error = error desconocido; }/interruptor final (código) retorno (error); }//end string errordescription(int code)/Esta sección es una función, por lo que debe colocarse al final del código fuera del último } double BalanceAsOf(datetime BalanceTime) { double BalanceChange = 0; for(int OT = OrdersHistoryTotal() - 1; OT gt;= 0; OT--) { OrderSelect(OT, SELECT_BY_POS, MODE_HISTORY); if(OrderOpenTime gt; BalanceTime) { BalanceChange = OrderProfit(); } } return(SaldoCuenta() - CambioSaldo); }

  8. #7

    Cita Iniciado por ;
    Cerrar, pero no del todo: [código]/ ------------------------------------- ----------------------------- /| obtiene el saldo de apertura diario, semanal y mensual |/ -------------------------------------------------------- ------------------- datetime dtDayStart = iTime(Symbol(),PERIOD_D1,0); datetime dtWeekStart = iTime(Symbol(),PERIOD_W1,0); datetime dtMonthStart = iTime(Symbol(),PERIOD_MN1,0);/|---------Usado para la tasa de capitalización if(Compounding_Rate == Daily) StartCompounding= dtDayStart ;/Compuestos...
    He hecho eso y me sale 1 error...'gt;' - paréntesis izquierdo esperado... ODIO errores

  9. #8
    Cerrar, pero no del todo: Código insertado/ --------------------------------------- --------------------------- /| obtiene el saldo de apertura diario, semanal y mensual |/ -------------------------------------------------------- ------------------- datetime dtDayStart = iTime(Symbol(),PERIOD_D1,0); datetime dtWeekStart = iTime(Symbol(),PERIOD_W1,0); datetime dtMonthStart = iTime(Symbol(),PERIOD_MN1,0);/|---------Usado para la tasa de capitalización if(Compounding_Rate == Daily) StartCompounding= dtDayStart ;/Compuestos diarios if(Compounding_Rate == Weekly) StartCompounding= dtWeekStart ;/Compuestos semanales if(Compounding_Rate == Monthly) StartCompounding= dtMonthStart ;/Compuestos Mensualmente doble Saldo de cuenta a usar = Saldo a partir de (#91;Iniciar composición#93; double BalanceAsOf(datetime BalanceTime) { double BalanceChange = 0; for(int OT = OrdersHistoryTotal() - 1; OT gt;= 0; OT--) { OrderSelect(OT, SELECT_BY_POS, MODE_HISTORY); if(OrderOpenTime gt; BalanceTime) { BalanceChange = OrderProfit(); } } return(SaldoCuenta() - CambioSaldo); }/ ---------------------------------------------- -------------------- Código insertado/ ------------------------ --------------------------------------------------------- /| obtiene el saldo de apertura diario, semanal y mensual |/ -------------------------------------------------------- ------------------- fecha y hora StartCompounding = 0; datetime dtDayStart = iTime(Symbol(),PERIOD_D1,0); datetime dtWeekStart = iTime(Symbol(),PERIOD_W1,0); datetime dtMonthStart = iTime(Symbol(),PERIOD_MN1,0);/|---------Usado para la tasa de capitalización if(Compounding_Rate == Daily) StartCompounding= dtDayStart ;/Compuestos diarios if(Compounding_Rate == Weekly) StartCompounding= dtWeekStart ;/Compuestos semanales if(Compounding_Rate == Monthly) StartCompounding= dtMonthStart ;/Compuestos Mensualmente double SaldoCuentaAUsar = SaldoAsOf(EmpezarComposición); #91;b#93;//Esta sección es una función, por lo que debe colocarse al final del código fuera del último }#91;/b#93; double BalanceAsOf(datetime BalanceTime) { double BalanceChange = 0; for(int OT = OrdersHistoryTotal() - 1; OT gt;= 0; OT--) { OrderSelect(OT, SELECT_BY_POS, MODE_HISTORY); if(OrderOpenTime gt; BalanceTime) { BalanceChange = OrderProfit(); } } return(SaldoCuenta() - CambioSaldo); }/ ---------------------------------------------- --------------------

  10. #9
    El propósito de mi ejemplo de código es que la entrada es el tiempo después del cual se cuentan todas las transacciones. Entonces podría usar la hora de las 10 barras, 100 barras, 1000 barras anteriores, etc. Todo lo que necesita hacer es calcular la hora de inicio de la semana, inicio del día, inicio del mes, etc., y la función funcionará universalmente.

  11. #10
    O tal vez esto es más simple... pero obtengo errores... ¡GRRRR! Código insertado/ ------------------------------------------------------------ --------------------- /| obtiene el saldo de apertura diario, semanal y mensual |/ -------------------------------------------------------- ------------------- datetime dtDayStart = iTime(Symbol(),PERIOD_D1,0); datetime dtWeekStart = iTime(Symbol(),PERIOD_W1,0); datetime dtMonthStart = iTime(Symbol(),PERIOD_MN1,0);/|---------Usado para la tasa de capitalización if(Compounding_Rate == Daily) StartCompounding= dtDayStart ;/Compuestos diarios if(Compounding_Rate == Weekly) StartCompounding= dtWeekStart ;/Compuestos semanales if(Compounding_Rate == Monthly) StartCompounding= dtMonthStart ;/Compuestos Mensualmente doble Saldo de cuenta a usar = Saldo a partir de (#91;Iniciar composición#93; double BalanceAsOf(datetime BalanceTime) { double BalanceChange = 0; for(int OT = OrdersHistoryTotal() - 1; OT gt;= 0; OT--) { OrderSelect(OT, SELECT_BY_POS, MODE_HISTORY); if(OrderOpenTime gt; BalanceTime) { BalanceChange = OrderProfit(); } } return(SaldoCuenta() - CambioSaldo); }/ ---------------------------------------------- --------------------

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Uso de cookies
Utilizamos cookies propias y de terceros para elaborar información estadística y mostrarle publicidad personalizada a través del análisis de su navegación. Si continúa navegando acepta su uso. Más información y política de cookies.
     

Aviso legal: Ni forosforex.com ni ninguna persona involucrada en forosforex.com aceptarán ninguna responsabilidad por cualquier pérdida o daño en el trading como resultado de la confianza en la información contenida en este sitio web, incluidos datos, cotizaciones, gráficos y señales de compra/venta. Por favor, infórmese plenamente de los riesgos y costes asociados a las operaciones en los mercados financieros, una de las formas de inversión que más riesgos entrañan.
forosforex.com le quiere recordar que los datos contenidos en este sitio web no son necesariamente en tiempo real ni exactos. forosforex.com no asume responsabilidad alguna por las pérdidas en que usted podría incurrir como resultado de la utilización de estos datos. Este acuerdo se rige por su versión en inglés, que prevalecerá siempre que haya alguna discrepancia entre la versión en inglés y la versión en español. Los CFD son un producto difícil de entender, varios organismos reguladores consideran que no es adecuado para inversores minoristas debido a su complejidad y riesgo.
Advertencia de riesgo: Los CFDs son un producto difícil de entender, y puede no ser adecuado para inversores minoristas debido a su complejidad y riesgo. Existe la posibilidad de sufrir una pérdida igual o superior a la inversión. Por lo tanto, no debe invertir o arriesgar dinero que no pueda permitirse perder. Debe asegurarse de que comprende todos los riesgos. Antes de abrir una cuenta en un broker por favor sea consciente e infórmese de los riesgos asociados con el trading. El contenido de este sitio web no debe interpretarse como asesoramiento personal. ForosForex recomienda que busque el consejo de un asesor financiero independiente.