[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 599

 
alsu:
anotar lo que se obtiene y los mensajes que se imprimen en el registro



He mostrado dónde debería entrar, pero no entró, qué fractales debería perforar. también adjunto en el archivo el código y la salida en el archivo txt de prueba (lo cambié, añadí el mío, pero el problema sigue siendo). simplemente, honestamente, ni siquiera sé qué variables controlar (y hay una imagen de la ubicación

)

Archivos adjuntos:
ik.zip  4 kb
 

Tomé la función GetLot (en el archivo) de otro EA. En mi antiguo EA no hay ningún error en sí mismo, pero en mi EA genera

'(' - definición de función inesperada C:\gram Files\BCS Trade Station\experts\ SovetnikStochastic.mq4 (106, 15)
'Free' - variable no definida C:\gram Files\BCS Trade Station\experts\ SovetnikStochastic.mq4 (112, 28)
'Riesgo' - variable no definida C:\gram Files\BCS Trade Station\experts\ SovetnikStochastic.mq4 (112, 33)
'Libre' - variable no definida C:\gram Files\BCS Trade Station\experts\ SovetnikStochastic.mq4 (115, 17)

¿Cuál es el problema?

Archivos adjuntos:
 
¿Por qué os gustan tanto los archiveros? ¿Tienes 100500 líneas de código en tu código fuente?
 

griha:

Tomé la función GetLot (en el archivo) de otro EA. En mi antiguo EA no hay ningún error en sí mismo, pero en mi EA genera

'(' - definición de función inesperada C:\gram Files\BCS Trade Station\experts\ SovetnikStochastic.mq4 (106, 15)
'Free' - variable no definida C:\gram Files\BCS Trade Station\experts\ SovetnikStochastic.mq4 (112, 28)
'Riesgo' - variable no definida C:\gram Files\BCS Trade Station\experts\ SovetnikStochastic.mq4 (112, 33)
'Libre' - variable no definida C:\gram Files\BCS Trade Station\experts\ SovetnikStochastic.mq4 (115, 17)

¿Cuál es el problema?

Hay una llave extra en el código de la función de inicio antes del primer If por eso hay errores. Para facilitar la lectura de los paréntesis, siempre hay que intentar ponerlos primero, y luego escribir todo lo que se necesite en ellos. Mejor aún, hay que ponerlos en una nueva línea con un desplazamiento, para que no se mezclen los bloques separados (por ejemplo, como en el código dado en la página anterior)

P.D:

Creo que el cálculo del lote por esta fórmula

 double Lot     =MathFloor(Free*Risk/100/One_Lot/Step)*Step;    // откидываем лишние знаки после запятой, оставляем 2 знака
no funcionará correctamente para un lote de 0,1 con un paso superior a 0,01, quizás me he perdido algo, pero entonces el lote siempre será igual a 0 ( MathFloor (900*2/100/1324/0,02=0,67975831) = 0, por lo que 0*Paso=0)...
 

No puedo averiguar cómo calcular algo como OrderProfitPips( ) para una orden seleccionada si el par es arbitrario. Es decir, el beneficio en pips, no en la moneda de la cuenta.

Necesito exactamente pips - para analizar la eficacia del comercio de múltiples monedas en diferentes pares. Necesito pips de cuatro dígitos (o apropiadamente de dos dígitos, si el par está en yenes). Considere que la moneda de la cuenta es el USD, y el tamaño del contrato es de 100 000 unidades.

Si el par es el EURUSD, todo es sencillo:

pips = OrderProfit( ) / ( OrderLots( ) * 10. );


Si el par es AUDCHF, es un poco más complicado. Si la cuenta fuera en francos, la fórmula sería exactamente la misma. Pero la cuenta es una cuenta en francos, es decir, OrderProfit() devuelve en dólares. Así que mi ganancia debe ser convertida en francos:

pips = USDCHF * OrderProfit( ) / ( OrderLots( ) * 10. );

¿Verdad?

 
Mathemat:

No puedo averiguar cómo calcular algo como OrderProfitPips( ) para la orden seleccionada si el par es arbitrario. Es decir, el beneficio en pips, no en la moneda de la cuenta.

Necesito exactamente pips - para analizar la eficacia del comercio de múltiples divisas en diferentes pares. Necesito pips de cuatro dígitos (o de dos dígitos, respectivamente, si el par está en yenes). Considere que la moneda de la cuenta es el USD, y el tamaño del contrato es de 100 000 unidades.

Si el par de divisas es EURUSD, todo es sencillo:

pips = OrderProfit( ) / ( OrderLots( ) * 10. );


Si el par es AUDCHF, es un poco más complicado. Si la cuenta fuera en francos, la fórmula sería exactamente la misma. Pero la cuenta es una cuenta en dólares, es decir, OrderProfit() devuelve en dólares. Así que mi ganancia debe ser convertida en francos:

pips = USDCHF * OrderProfit( ) / ( OrderLots( ) * 10. );

¿Verdad?


¿Has leído http://www.fxtrademaker.com/fx_calculation.htm? ¿O es http://thismatter.com/money/forex/leverage-margin-pips.htm?

Por lo que he entendido, PipProfit = USDprofit/lot/Point para EURUSD. Para los pares cotizados inversamente necesitamos tomar la diferencia entre el precio de apertura y el actual y multiplicar por Dígitos: Pips = OrderOpenPrice()-Bid*Digits_coefficient; donde
Digits_coefficient = MathPow(10,Digits);


 

Sí, parece que hay un uso para ambos enlaces. Gracias.

P.D. He decidido no contar en pips sino en la moneda de la cuenta. Los pips de los cruces del yen son demasiado desproporcionados con respecto a los habituales. Y quería sumarlos (de forma convencional, claro)...

 
Mathemat:

Sí, parece que hay un uso para ambos enlaces. Gracias.

P.D. He decidido no contar en pips, sino en la moneda de la cuenta. Son demasiado inconmensurables las cifras de pips de los cruces de yenes con las habituales. Y quería sumarlos (condicionalmente, por supuesto)...


Las pepitas son pepitas, ¿cómo pueden ser desproporcionadas? ¿En qué se diferencia un beneficio de 20 pips en el EURUSD de un beneficio de 20 pips en el JPY? Debes estar contando mal... Pero realmente es más fácil calcular en la moneda de la cuenta.

 
evillive: Pips es pips, ¿cómo pueden ser inconmensurables?

Pues en tu enlace (el segundo) se ve todo:

Usted compra 100.000 unidades de EUR/JPY = 164,09 y vende cuando EUR/JPY = 164,10, y USD/JPY = 121,35.

Beneficio en pips de JPY = 164,10 - 164,09 = 0,01 yenes = 1 pip (Recuerde la excepción del yen: 1 pip de JPY = 0,01 yenes).

Beneficio total en pips JPY = 1 x 100.000 = 100.000 pips.
Beneficio total en yenes = 100.000 pips/100= 1.000 yenes.

Como sólo tiene la cotización de USD/JPY = 121,35, para obtener el beneficio en USD, se divide por el tipo de conversión de la divisa cotizada:

Beneficio total en USD = 1.000/121,35 = 8,24 USD.

Si sólo tiene esta cotización, JPY/USD = 0,00824, que equivale al valor anterior, utilice la siguiente fórmula para convertir los pips en yenes a la moneda nacional:

Beneficio total en USD = 1.000 x 0,00824 = 8,24 USD.

Un beneficio de 8,24 USD (equivalente a 0,824 pips en un lote de EURUSD, por ejemplo) equivale a 100 mil pips de yenes en este ejemplo.

P.D. Me siento como un completo novato...

 
Mathemat:

Pues en tu enlace (el segundo) se ve todo:

Un beneficio de 8,24 USD (equivalente a 0,824 pips en un lote de EURUSD) equivale a cien mil pips de yenes.


Lo estás leyendo mal. Para los pares con cotización inversa, tome la diferencia entre el precio de apertura y el actual y multiplíquela por el multiplicador obtenido de Digits ( Pips = (Bid -OrderOpenPrice())*Digits_coefficient; ) , lo que da (80,60-80,45=0,15) * MathPow(10,Digits) = 15 pips, donde

Digits_coefficient  = MathPow(10,Digits);

No puede ser más sencillo, ¿verdad?

P.D.: Aunque no, podría ser más sencillo ))))

 Pips = (Bid - OrderOpenPrice())/Point; //ордер лонг
 Pips = (OrderOpenPrice() - Ask)/Point; //ордер шорт

Y esta expresión es válida para TODOS los pares de divisas.

Razón de la queja: