PDA

Ver la versión completa : Ayuda con



gicpknalgegabs
13:38,
Hola a todos. He estado tratando de resolver esto por un tiempo pero no he podido. Algo de ayuda con esto estaría bien. El código siguiente es el que implementa mis transacciones largas, pero sigo recibiendo el error OrderSend 4051 suma de lotes no válida para la función OrderSend. He probado diferentes métodos pero nada parece funcionar. Al usar este código dentro de las dimensiones de mi lote, estoy tratando de obtener muchas dimensiones que solo van a arriesgar mi porcentaje por operación, pero utilizando una pérdida de pérdida variable como referencia. El stoploss varía de comercio a comercio ya que es el mínimo más bajo en 50 velas atrás. Si conoce una forma más simple o mejor que también sería valorada.

Editar: estoy buscando incorporar la administración de riesgodinero en mis transacciones usando este método.

Código de variables:
Código insertado extern int Risk_Percent = 3;/Porcentaje de la cuenta a riesgo por operación. Dual LowestShift = iLowest (Símbolo (), PERIOD_H1, MODE_LOW, 50, 1);/Encuentra la vela usando el más bajo no en 50 velas atrás. Double Lowest = iLow (Symbol (), PERIOD_H1, LowestShift);/Encuentra el mínimo de la vela utilizada por LowestShift double Buy_Take_Profit = ((Bid-Lowest) Ask);/Para hacer el intercambio 1: 1
Código de ejecución:
Código insertado if (Condition1 gt; Condition2) if (Condition3 lt; Condition4) if (Condition5 lt; Bid) if (getOpenOrders () == 0) double Buy_Lots = NormalizeDouble (((AccountBalance () * (Risk_Percent100))(((Bid-Lowest) * 100000) * (MarketInfo (Symbol (), MODE_TICKVALUE)))), 2); Buy_Order = OrderSend (Symbol (), OP_BUY, Buy_Lots, Ask, 30, Lowest, Buy_Take_Profit, NULL, 2000,0, clrGreen);

Bhennhanbo
04:38,
Pls hacer una publicación en el tamaño de la orden. Inserted Code double Buy_Lots También asegúrese de que sea más grande que su corredor lo permita. Por ejemplo, quizás desee enviar 0.005 lotes, lo que no es posible (límite de MT4), o 0.05, sin embargo, su corredor requiere un mínimo de 0.1 lotes. También use Equity, no Balance, tal vez también revise el margen libre

gicpknalgegabs
05:58,
Gracias. Yo hago eso y soy im. Parece que la parte donde Risk_Percent está dividido entre 100 me devuelve 0 en la impresión. Si cambio el riesgo a 100, entonces me da. Sin embargo, parece que no necesita darme un decimal. Comprobaré el mínimo del lote, pero creo que lo anterior es la razón principal detrás del error. Aún un mínimo y un máximo no son malas cosas para planear. Lo cambiaré a equidad. ¿Por qué debería mirar el margen libre?

znansanguinoanpkn
07:19,
Gracias por la respuesta. He estado haciendo exactamente eso y estoy volviendo con información adicional. Parece que el área donde Risk_Percent está dividido por 100 me da en la impresión. Si cambio el riesgo a 100 entonces me da. Sin embargo, parece que no quiere darme un decimal. Comprobaré el mínimo del lote pero creo que lo anterior es la razón del error. Todavía un mínimo y un máximo no son malas cosas para planificar. Lo cambiaré. ¿Por qué tendría que verificar el margen libre?
Ernie11- Risk_Percent debe definirse como un doble doble Risk_Percent = 0.30;/Porcentaje de la cuenta a riesgo por operación.

gicpknalgegabs
08:40,
Gracias por la respuesta. Lo obtuve funcionando ejecutando Risk_Percent * 0.01 en lugar de Risk_Percent100. No entiendo por qué uno funciona y el otro no, ambos dan exactamente la misma respuesta. Si dejara Risk_Percent en un doble, ¿no podría modificarlo en el cuadro de entrada? Siempre sería un valor? Quiero implementar una parada final en particular, pero también tengo una pequeña cantidad de dificultades con ella. Me gustaría que comience una parada final una vez que llega a Xpercent entre OpenOrderPrice y Take_Profit. ¿Puedes echarle un vistazo por favor? Los elementos en negrita son los únicos que cambié de una parada final normal. Factores: Código insertado extern int Start_Trailing_Stop_Percent = 70; extern int Trailing_Stop = 100; double LowestShift = iLowest (Símbolo (), PERIOD_H1, MODE_LOW, 50, 1); double HighestShift = iHighest (Símbolo (), PERIOD_H1, MODE_HIGH, 50, 1); double Lowest = iLow (Símbolo (), PERIOD_H1, LowestShift); double Maximum = iHigh (Symbol (), PERIOD_H1, HighestShift); double Buy_Take_Profit = ((Bid-Lowest) Ask); double Sell_Take_Profit = (Bid- (Mayor-Preguntar)); Trailing Stop: Código insertado para (int I = 0; ilt; OrdersTotal (); I ) {//Seleccione Open trades if (OrderSelect (I, SELECT_BY_POS, MODE_TRADES) == false) {}/Realice la supervisión de parada en Buy Trade if (OrderType () == OP_BUY OrderSymbol () == Símbolo ()) {if (Trailing_Stopgt; 0) {# 91; b # 93; if (Bidgt; -LRB - (((Start_Trailing_Stop_Percent * 0.01) * (Buy_Take_Profit- OrderOpenPrice ())))) OrderOpenPrice ()) {# 91;b # 93; if (OrderStopLoss () lt; Bid-Point * Trailing_Stop) {if (OrderModify (OrderTicket (), OrderOpenPrice (), Bid-Point * Trailing_Stop, OrderTakeProfit (), 0, clrGreen)) return; else {}}}}}/Realizar seguimiento de supervisión en Vender comercio si (OrderType () == OP_SELL OrderSymbol () == Símbolo ()) {if (Trailing_Stopgt; 0) {# 91; b # 93; if (Asklt) ; (OrderOpenPrice () - ((((Start_Trailing_Stop_Percent * 0.01) * (OrderOpenPrice () - Sell_Take_Profit)))))) {# 91;b # 93; if ((OrderStopLoss () gt; (Ask Point * Trailing_Stop)) || (OrderStopLoss () == 0)) {if (OrderModify (OrderTicket (), OrderOpenPrice (), Ask Point * Trailing_Stop, OrderTakeProfit (), 0, clrRed)) return; else {}}}}}}

znansanguinoanpkn
10:01,
Gracias por la respuesta. Lo hice funcionar haciendo Risk_Percent * 0.01 en lugar de Risk_Percent100. No sé por qué uno trabaja y el otro no, ambos ofrecen la misma respuesta. Si hiciera del Risk_Percent un doble, ¿no podría modificarlo desde el cuadro de entrada? ¿Siempre sería un valor fijo? Deseo ejecutar una parada especial, pero también tengo un poco de problemas con ella. Quiero que comience una parada final una vez que llegue al X% entre OpenOrderPrice y Take_Profit. Puedes echar un vistazo por favor. Los componentes en negrita ...
Ernie11- Sí, puedes agregar el externo que lo enfrenta. En cuanto a la parada de monitoreo, no consideraría trabajar en ella sin todo el código de EA.

gicpknalgegabs
11:21,
1 Adjunto (s) Me uniré al EA. Todo eso es una impresión que puse tratando de solucionar el problema. Noté que OrderOpenPrice () en la Lógica de Compra no es exactamente igual al precio abierto cuando se realiza una prueba retrospectiva. Gracias por tomarse el tiempo para verificarlo.
https://www.forexycfds.com/attachments/15276937042088120550.mq4

znansanguinoanpkn
12:42,
1 Adjunto (s)
Adjuntaré el EA. Todo lo que es una impresión que lugar al intentar solucionar problemas. Noté que OrderOpenPrice () de Buy Logic no es el mismo que el precio disponible cuando backtesting. Gracias por tomarse el tiempo para verificarlo. archivo Ernie11- He hecho algunas modificaciones a él - parece funcionar en el ST.
https://www.forexycfds.com/attachments/1527693705186796309.mq4

gicpknalgegabs
14:03,
Hola ciber1. Gracias por la ayuda, acabo de ejecutarlo una vez para ver si funciona y lo hace. La primera vez que implemente el componente de administración de dinero, veré cómo funciona eso. Se supone que debe ayudar para que una transacción no sea más grande que la otra.

gicpknalgegabs
15:24,
Hola ciber1. Noté que estoy obteniendo un poco de OrderModify 130s de ejecutarlo. ¿Sabes por qué? También mueve el stoploss en el% ingresado pero no lo rastrea desde allí, intentaré traer este componente con todo lo que escribió.

gicpknalgegabs
16:45,
Hola ciber1. No estoy obteniendo más de estos errores y lo tengo para rastrear la ofertapregunta después de llegar al punto de inicio (BEPoint) como lo pones. Sin embargo, tengo una consulta sobre tu código. La parte que llama a Trailing_Control solo se activa una vez en cada barra? Lo que significa que el Stoploss simplemente se actualizará una vez por barra?

znansanguinoanpkn
18:05,
Hola. No recibo más de los errores y lo tengo para rastrear la ofertademanda después de alcanzar el punto de inicio (BEPoint) desde que lo colocaste. Sin embargo, realmente tengo una consulta sobre tu código. El componente que llama a Trailing_Control solo se activa una vez por barra? ¿Qué significa que el Stoploss simplemente se actualizará una vez por barra?
Ernie11- Sí, estás en lo cierto. Puede eliminar la condición en caso de que quiera, pero luego controlará cada tic. También tiene razón en que no se incluye monitoreo adicional. Su publicación no era clara en cuanto a lo que quería hacer después de la parada final inicial.

gicpknalgegabs
19:26,
cyber1. Ok, gracias. Nunca había pensado en actualizar una vez por, idea clara. Me encanta codificar tanto como sea posible, pero una vez que me quedo atascado, solicito ayuda solo para esa parte y continúo. ¿Qué otra cosa crees que debería agregar a la ayuda con la parte de administración de dinero que puedes considerar? Gracias de nuevo.