No soy muy bueno en matemáticas, ¿cómo puedo calcular la distancia desde la apertura de la orden hasta el stop en el código, para poder reemplazar sl por éste?
Anormalizado el valor del lote así
Entonces, queda por entender cómo calcular la distancia desde la posición abierta hasta el stop en el código?
El valor absoluto de la diferencia entre el precio de apertura y el de parada debe dividirse por el paso de precio.
int sl = fabs(OrderOpenPrice()-OrderStopLoss())/_Point;
Y este valor sl entra en la fórmula.
Teniendo en cuenta que se pone un stop calculado por el indicador ATR, basta con
double lot =MathFloor((Free*MaxRisk/100)/(sl/_Point*LotVal)/Step)*Step; //СТРАШНАЯ ФОРМУЛА РАСЧЁТА ОБЪЁМА ЛОТА
Ahora lo entiendo, sólo tengo que entender qué valor debo asignar a los precios de compra y venta.
OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,"ДИВЕРГЕНЦИЯ НА БАЙ АО"); // ОТКРЫВАЕМ БАЙ ОРДЕРOrderSend(Symbol(),OP_SELL,lot,Bid,slippages,Ask+sl,Ask-tp ,"ДИВЕРГЕНЦИЯ НА СЕЛ АО"); // ОТКРКЫВВАЕМ СЕЛ ОРДЕР
En otras palabras, ¿asigno Ask al precio abierto de compra, f al precio abierto de venta asigno Bid?
Teniendo en cuenta que se pone un stop calculado por el indicador ATR, basta con
Y ese sería el tamaño de lote normalizado.
Lo he hecho por código como me has aconsejado. En el principio del código tengo la condición para elegir el tipo de parada - atp o fija.
if(tip_sl==en_po_atr)
{ //ЕСЛИ ТИП СТОП ЛОССА СТОИТ ПО АТР ТО ВЫСЧИТЫВАЕМ ЕГО ИЗ АТР//Print("СТОП ПО АТР, ЕГО РАЗМЕР ");
sl= iATR( NULL,PeriodForWork_sl,atr_sl_period,1);// ПОЛУЧЕНИЕ ЗНАЧЕНИЙ АТР ДЛЯ ВЫСТАВЛЕНИЯ СТОПЛОССАPrint("СТОП ПО АТР, ЕГО РАЗМЕР "+sl);
}
else//ИНАЧЕ- ТО ЕСТЬ ЕСЛИ СТОП ЛОСС ФИКСИРОВАННЫЙ В ПУНКТАХ
{
Print("СТОП ЛОС ФИКСИРОВАННЫЙ В ПУНКТАХ");
sl= razmer_fikc_sl*Point; // ПЕЕРМЕННОЙ СТОП ЛОССА ПРИСВАЕВАЕМ ФИКСИРОВАНОНЕ ЗНАЧЕНИЕ ПУНКТОВ И ДОМНОЖАЕМ НА ПОИНТ
}
Entonces comenté mi normalización y la asigné de esta manera
sl = fabs(OrderOpenPrice()-OrderStopLoss())/_Point;// ПРИСВОИЛ ЗНАЧЕНИЕ КАК СОВЕТОВАЛИ//sl= NormalizeDouble(sl,Digits());// НОРМАЛИЗАЦИЯ ЗНАЧЕНИЯ СТОП ЛОССА ДЛЯ ОТКРЫТИЯ СДЕЛКИ ТО ЧТО БЫЛО ЗАКОМЕНТИРОВАЛ
El cálculo del beneficio es el siguiente en el código. No hay problemas ahí y después de calcular el beneficio he añadido la fórmula de miedo que me han aconsejado.
double lot =MathFloor((Free*MaxRisk/100)/(sl/Point*LotVal)/Step)*Step; //СТРАШНАЯ ФОРМУЛА РАСЧЁТА ОБЪЁМА ЛОТА КОТОРУЮ МНЕ СОВЕТОВАЛИ
Todo fue compilado sin errores. Pero cuando ejecuté la prueba el error aparece en el registro, es una división por cero por lo que entiendo y la prueba se detiene. ¿En qué me he equivocado o qué no he hecho bien?
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
Lo siento, me metí en la conversación aquí, no me di cuenta...
Un tema común, y sus códigos son siempre interesantes...
tomó mucho para mí)
La tarea técnica se entiende mejor en ucraniano
Todavía no estoy a ese nivel, mi lengua materna es el ruso :)
...pero lo entiendo a nivel casualTodavía no tengo ese nivel, mi primer idioma es el ruso :)
Soy de la URSS... tengo dos lenguas maternas)
Soy de la URSS... tengo dos lenguas maternas)
y tenemos tres, todavía surzhik.
No soy muy bueno en matemáticas, ¿cómo puedo calcular la distancia desde la apertura de la orden hasta el stop en el código, para poder reemplazar sl por éste?
Anormalizado el valor del lote asíEntonces, queda por entender cómo calcular la distancia desde la posición abierta hasta el stop en el código?
El valor absoluto de la diferencia entre el precio de apertura y el de parada debe dividirse por el paso de precio.
Y este valor sl entra en la fórmula.
Teniendo en cuenta que se pone un stop calculado por el indicador ATR, basta con
Y este será ya el tamaño de lote normalizado.comprarprecio de apertura
comprar stop loss
difundir
Ahora lo entiendo, sólo tengo que entender qué valor debo asignar a los precios de compra y venta.
En otras palabras, ¿asigno Ask al precio abierto de compra, f al precio abierto de venta asigno Bid?
En el código, abro una orden de la siguiente manera.
¿Quieres decir que asigno la variable Ask al precio abierto de compra y Bid al precio abierto de venta?
A juzgar por esta función, usted ya conoce el stop loss... No entiendo cuál es el problema
Divida el valor absoluto de la diferencia entre el precio de apertura y el precio de parada por el paso de precio.
y este valor sl entrará en la fórmula.
Teniendo en cuenta que se pone un stop calculado por el indicador ATR, basta con
Y ese sería el tamaño de lote normalizado.Lo he hecho por código como me has aconsejado. En el principio del código tengo la condición para elegir el tipo de parada - atp o fija.
Entonces comenté mi normalización y la asigné de esta manera
El cálculo del beneficio es el siguiente en el código. No hay problemas ahí y después de calcular el beneficio he añadido la fórmula de miedo que me han aconsejado.
Todo fue compilado sin errores. Pero cuando ejecuté la prueba el error aparece en el registro, es una división por cero por lo que entiendo y la prueba se detiene. ¿En qué me he equivocado o qué no he hecho bien?