[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 37
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Muchas gracias por su respuesta. Pero aún así, ¿cómo describir la futura barra que sigue a Ask[0],Bid[0]?
Tan pronto como aparezca esta barra futura se convertirá en cero. Y la barra que ahora es [0] será [1].
La demanda y la oferta NO son matrices, sólo hay un valor actual, todos los anteriores se olvidan
Por favor, ayúdenme a entender el cálculo del depósito
porque mi depósito estimado coincide exactamente con el terminal
sólo cuando todas las órdenes están completamente bloqueadas
. Cuando añado una orden más al sistema de órdenes - el resultado del terminal del depósito
siempre difiere de mi depósito estimado muy ligeramente
pero ¡nunca puedo llegar a ser una bala en una bala!
He aquí un ejemplo muy breve:
La cuenta tiene 4 órdenes de 10.00 lotes cada una, dos de ellas bicicletas
y dos ventas. Está claro que la cuenta está en equilibrio y todas las órdenes están bloqueadas
Calculamos el depósito estándar de cada orden, lo dividimos entre 4 y todo pasa de puntillas
El terminal llama exactamente.
Ponemos un byke más a 1.00 lote a 1.4059
Calculamos el depósito. Está claro que para ello tenemos que pagar el depósito estándar
ya que todos los pedidos existentes están en la caja.
Para un apalancamiento de 1:100 tenemos la promesa de la nueva bicicleta
ZALBuy = 140,59*1,00 = 140,59
Por lo tanto, el depósito anterior debe incrementarse en esta cantidad,
. Suma el depósito anterior y el depósito de nuestro 1,00 byte
ZAL=ZALold + ZALBuy = 1407,23 + 140,59 = 1547,82
Después de poner el bye en el terminal el depósito resultó ser de 1547.91
Esto sería aceptable si hubiera puesto el bye 9 puntos más alto que
al tipo de cambio 1.4068 Pues si calculamos el incremento real del depósito
como la diferencia del depósito antes y después, obtenemos exactamente el depósito estándar
para 1.00 lote al tipo de cambio 1.4068
1547.91 - 1407.23 = 140.6801
El cambio de versión del terminal, por desgracia, no ha servido de nada.
-----------------------------------------------
Por favor, perdóneme por tomar su tiempo, pero estosconstantes pequeñas discrepancias son muy molestos para mí
como mi máquina cuenta diferentes opciones,
y el depósito como el equilibrio y el beneficio se utiliza para calcular
todos los parámetros de la cuenta después de ciertas acciones antes de su aplicación
. Así que la precisión es muy deseable aquí.
Tal vez no entienda algo, pero he buscado en la documentación
y no he podido encontrar la razón de esta discrepancia.
Le agradecería mucho su ayuda.
Saludos MADZX
Puedes olvidarte de este ajuste. La re-citación ocurre si la cantina quiere tomar tu dinero, no les importa la brecha, lo harán de todos modos). Esta es la realidad del algotrading la mayoría de las empresas de estafa que se autodenominan "el mejor broker XXXXX" (XXXXXX - insertar nombre de un continente o galaxia, lo que sea)
Cambie o no cambie la configuración, todo sigue igual.
¡Tiene toda la razón! Yo también lo he visto.
Hola, ¿pueden describirme un bar real +1? Por ejemplo, necesito el precio de la siguiente barra, no la actual.
Por lo que he entendido estás intentando obtener información de la máquina del futuro
Si encuentras una manera - comparte, te lo agradecería :)
Saludos a todos. Yo mismo soy nuevo en la programación, así que por favor, resuelve el problema.
Es necesario que varios EAs en la misma cuenta, abran un número limitado de órdenes.
Por ejemplo: 10 EAs pero sólo puede abrir 5 órdenes, pero no más de una por par de divisas.
Esto se ha implementado de la siguiente manera, pero no funciona así.
extern int МаксКолОрдеров = 5;
//+------------------------------------------------------------------+
int ПодсчетОткрОрдеров() {
int k=OrdersTotal();
if (Символ=="0") Символ=Symbol();
for (int i=МаксКолОрдеров; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Символ || Символ=="") {
if (МагикНомер<0 || OrderMagicNumber()==МагикНомер) {
if (OrderMagicNumber()<1) return(True);
}
}
}
}
return;
}
//+------------------------------------------------------------------+
int start()
{
if(ПодсчетОткрОрдеров()==0)ПровТоргУсловий();
}
¡Yo pondría en práctica un programa de este tipo de la siguiente manera:
Los 10 caballos están trabajando cada uno en su propio horario, como si estuvieran en habitaciones adyacentes
y, por lo tanto, ninguno de ellos sabe lo que hace el vecino detrás de la pared - este es el principal problema
para su idea!
Por lo tanto, le indicaría a cada EA que escribiera sus acciones en el archivo de disco
que estará disponible para todos los caballos, ya que está en el directorio de la terminal .
¡Si alguno de ellos tiene un deseo ardiente de hacer algo en su ventana
debe primero analizar este archivo y comprobar la posibilidad de implementar
deseo !
con respecto a su escenario debe añadir en el archivo el número de órdenes
y los pares de divisas en los que están abiertas
. Por ejemplo:
EURUSD 1
GBPUSD 1
EURGBP 0
Aquí vemos que no podemos abrir operaciones enEURUSD yGBPUSD porque el script no permite que
tenga más de una orden por par.
Está claro que habrá tantas líneas como pares en funcionamiento.
Con esta solución todos sus caballos estarán siempre al tanto de lo que ocurre en el momento
, y podrán calcular si se permite o no cualquier acción en el momento.
Cuando se establece una orden en cualquier par, hay que poner 1 en la línea de la derecha
Cuando se cierra, se sustituye por cero
Esto definitivamente va a funcionar, aunque un poco complicado para un novato
. Pero adelante, porque todo el mundo estaba allí - como un novato hasta que llegue el momento!
¡Que tengas una buena caza!
MADZX
Estoy escribiendo una estrategia de retroceso. Necesito colocar una orden de stop por encima (por debajo) del extremo de la vela correspondiente. He aquí un ejemplo:
Está claro que si el cierre está por debajo de la apertura, es una vela bajista, y viceversa - una vela alcista. Quiero saber cómo hacer una condición que diga que la vela anterior es alcista... ...fulano de tal.
Lógicamente, hago una función que determine el tipo de vela.
Entonces debería preguntar de alguna manera si la barra con índice 1 es alcista o bajista... ...y hacer algo...
¿Cómo lo hago?
Yo pondría en práctica un programa de este tipo:
Los 10 caballos trabajan cada uno en su propio horario, como si estuvieran en habitaciones adyacentes
y, por lo tanto, ninguno de ellos sabe lo que hace el vecino detrás de la pared - ¡este es el principal problema
para su idea!
Por lo tanto, le indicaría a cada EA que escribiera sus acciones en el archivo de disco
que estará disponible para todos los caballos, ya que está en el directorio de la terminal .
¡Si alguno de ellos tiene un deseo ardiente de hacer algo en su ventana
debe primero analizar este archivo y comprobar la posibilidad de implementar
deseo !
con respecto a su escenario debe añadir en el archivo el número de órdenes
y los pares de divisas en los que están abiertas
. Por ejemplo:
EURUSD 1
GBPUSD 1
EURGBP 0
Aquí vemos que no podemos abrir operaciones enEURUSD yGBPUSD porque el script no permite que
tenga más de una orden por par.
Está claro que habrá tantas líneas como pares en funcionamiento.
Con esta solución todos sus caballos estarán siempre al tanto de lo que ocurre en el momento
, y podrán calcular si se permite o no cualquier acción en el momento.
Cuando se establece una orden en cualquier par, hay que poner 1 en la línea de la derecha
Cuando se cierra, se sustituye por cero
Esto definitivamente va a funcionar, aunque un poco complicado para un novato
. Pero adelante, porque todo el mundo estaba allí - como un novato hasta que llegue el momento!
¡Que tengas una buena caza!
MADZX
Gracias por el consejo, pero es demasiado complicado. Y luego en tu versión resulta que todo funciona, y se tarda 10 en comprobar la condición de entrada,
Pero sólo se abren los cinco primeros que han llegado a tiempo y luego, cuando uno de ellos se cierra, se vuelve a abrir el primero que cumple las condiciones,
no se limita a EURUSD 1 , GBPUSD 1 , EURGBP 0.
Creo que debería haber una solución más sencilla. Debería ser similar a contar el número total de pedidos con una condición de limitación por un parámetro determinado.
Y la limitación puede establecerse mediante un símbolo o un número mágico no superior a uno.
Aunque tu versión probablemente también funcionaría, pero no puedo decidir cómo implementarla en el código.
Tengo una cosa extraña aquí. Esta es la función de las órdenes de apertura:
aquí está el error:
if(SL < g_stopLevel) SL = g_stopLevel*pt;
si el nivel de parada = 5 entonces usted está tratando de poner un stop loss en 0,00005.
El segundo error es que no se comprueba dónde se está colocando la orden. Si la vela cerró en o cerca de su máximo mínimo, obtendrá el error 130. Como puede ver en la imagen, el servidor abrió una orden de venta en lugar de una sellstop porque intentó abrir una orden sellstop a un precio mayor o igual al precio actual.
Aprende a utilizar la huella. Sólo hay que poner Print(); en el lugar adecuado, poner las variables necesarias entre paréntesis y separarlas con esto: ", así: Print(Price," ",SL); y durante la prueba en el momento de abrir una orden en la pestaña "Expertos" verá a qué equivalen estas variables, y podrá entender qué es lo que está mal.
El registro también mostrará lo que el EA está tratando de hacer, donde establecer un Stop Loss y Take Profit. Allí verá todo lo que necesita.
Lógicamente, hago una función que detecte el tipo de vela.
Trabajemos dentro del inicio de la función.
Primero, creamos una variable en la que escribiremos la dirección de la vela anterior.
int Candle=-1;
Lo llenaremos con algunos valores, uno de los cuales denotará un alcista, otro - bajista. Si es -1, no es nada (no se ha determinado o no tiene dirección close=open).
Valor que propongo utilizar por analogía con una orden comercial 0 - compra, 1 - venta;
entonces tenemos que escribir:
if(Close[1]>Open[1]) Candle=0; else
if(Close[1]<Open[1] Candle=1;
Ahora tenemos una dirección definida y podemos usarla directamente en la función OrderSend( string symbol, int cmd, ...otras cosas...);
if(Candle!=-1) OrderSend( Symbol(),Candle, ...otras cosas...);
o siguiendo su analogía:
if(Candle==0) OpenBuy();
if(Candle==1) OpenSell();
Gracias por el consejo, pero es demasiado complicado. Y luego resulta que todos ellos trabajan en su variante y se necesitan 10 para comprobar la condición de entrada,
y abren primero sólo los cinco que han llegado a tiempo y luego, cuando uno de ellos se cierra, se vuelve a abrir el primero que cumple las condiciones,
no se limita a EURUSD 1 , GBPUSD 1 , EURGBP 0.
Creo que debería haber una solución más sencilla. Debería ser como contar el número total de pedidos con una condición de limitación por un parámetro determinado.
Y tenemos que limitar este número por un símbolo o por un número mágico, o por no más de uno.
Aunque, quizás, tu opción también funcione, pero cómo implementarla en el código, no se me ocurre.
O tal vez así:
Y aquí la funciónhay un error aquí:
si el nivel de parada = 5 entonces usted está tratando de poner un stop loss en 0,00005.
El segundo error es que no se comprueba dónde se está colocando la orden. Si la vela cerró en o cerca de su máximo mínimo, obtendrá el error 130. Como puede ver en la imagen, el servidor abrió una orden de venta en lugar de una sellstop porque intentó abrir una sellstop a un precio mayor o igual al precio actual.
Aprende a utilizar la huella. Sólo hay que poner Print(); en el lugar adecuado, poner las variables necesarias entre paréntesis y separarlas con esto: ", así: Print(Price," ",SL); y durante la prueba en el momento de abrir una orden en la pestaña "Expertos" verá a qué equivalen estas variables, y podrá entender qué es lo que está mal.
El registro también mostrará lo que el EA está tratando de hacer, donde establecer un Stop Loss y Take Profit. Se mostrará todo lo que se necesita.
Yo lo uso así de vez en cuando. Mira, ahora las funciones se ven así:
Leí en el diario:
Así que inicialmente desde el precio de compra hasta el stop fue la diferencia 1,3204 - 1,3194 = 0,001 puntos
Además, 1,3210 - 1,3201 = 0,009 puntos
Y por alguna razón, en el segundo caso, el stop estaba más cerca del precio de entrada, ¡pero no había ningún error! Lo pensé y no lo entendí.
Más tarde corregí el error de otra manera. Ya hay condiciones en el código:
if(precio > Ask) && if(precio < Bid) respectivamente para comprar y vender. ¿O había otra variante? Ahora no tenemos más errores. Pero, sin embargo, me gustaría escuchar la opinión de un programador más experimentado.