por Refresko » 11 Oct 2017, 16:53
diego2015 escribió:Hola Refresko, te cuento que hice esta misma pregunta en el foro de mql5, el mismo día que la hice aquí, el 28 de septiembre. No he tenido suerte, nadie me ha respondido nada. He leído algunos hilos donde los que saben, (que son los que programan freelance, y cobran por eso, porsupuesto) les aclaran a los que hacen alguna consulta que no responden gratis... copio textual algunas frases de las respuesta del siguiente hilo: https://www.mql5.com/es/forum/205655"¿Cuando se le estropea el coche lo lleva al mecánico y le cobra, verdad? ¿O entra en un foro de mecánicos y pide que le expliquen como arreglar la avería usted mismo? Pues aquí es lo mismo....puede que haya quien le ayude, y puede quien piense que el que algo quiere, algo le cuesta." "Normalmente la comunidad suele ayudar en cosas muy precisas y de poca enjundia, pero si ya hay que escribir más de una linea de código y darle al magín...te tocara pagar o tener mucha paciencia y esperar si alguien decide ayudarte" "Te recomiendo que hagas uso del apartado Freelance y lo pongas en manos de un profesional, ya que lo que pides es rematar un trabajo que supuestamente ira al Market y dudo que alguien te ayude." "Tenga en cuenta que esta web tiene tienda, vende señales, EA's, indicadores, scripts...y una gran mayoría lo conformamos programadores. El resto, los que no lo son, dudo que puedan ayudarle, y los que podemos estamos aquí profesionalmente prestando nuestros servicios." en fin... esta dificil Saludos!
es cierto, encontre la pregunta en el foro de mql5 luego de escribir el mensaje aqui. los que saben y ayudan sin tanto interes economico son las personas de USA y rusos. asi que la recomendacion es que pongas la consulta en ingles en el foro de ese idioma. Yo seguire revisando porque me da mucha "rabia" no resolverlo aun, pero ahora ando sin mucho tiempo. cualquier cosa por aqui lo subo.
No puedes cometer/ dos veces el mismo error/ la segunda vez sera/ Por eleccion...
-
Refresko
-
- Mensajes: 165
- Registrado: 12 Dic 2011, 22:56
- Karma: 5
por mascara » 11 Oct 2017, 18:24
diego2015 escribió:Gracias mascara, misteriosamente el indicador no funciona en mi cuenta, simplemente no se dibuja ninguna barra. Tengo la sospecha de que la razón de este problema es que estoy trabajando en una cuenta sin cobertura (sin headge), por lo que no tendrían mucho sentido las sentencias destinadas a informar el numero de posiciones abiertas y en que direcciones. Es solo un supuesto, luego me abro una cuenta con cobertura, lo compruebo y comparto el resultado. Saludos!
Hola, No sé por qué no funcionará ¿?. De todas formas, ya por curiosidad me he abierto una cuenta de prueba en un broker con mt5 y he hecho el siguiente programa. En los comentarios del programa dice qué está contando en Buys / Sells. Según he estado leyendo en la documentación: - Código: Seleccionar todo
void OnTick() { //--- int buys = 0, sells = 0; //PositionsTotal es el número de posiciones abiertas, //En mi cuenta al abrir dos buys ( o dos buys y un sell ) se me unen en una única posicion, //así que siempre tendré una solo, sino, coincidiría una por cada orden supongo... for(int i=0; i <= PositionsTotal()-1; i++) { if(PositionGetTicket(i)>0){ //if(PositionGetString(POSITION_SYMBOL) == Symbol()){ //Si ponemos esta Solo cuentan las del gráfico en curso... if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY){ buys++; }else{ sells++; } // } } } Print("Positions ", "buys: ",buys, "sells :", sells); //OrdersTotal, igual, pero sólo para ordenes pendientes... buys = 0; sells = 0; for(int i=0; i <= OrdersTotal()-1; i++) { if(OrderGetTicket(i)>0){ //if(OrderGetString(ORDER_SYMBOL) == Symbol()){ //Si ponemos esta Solo cuentan las del gráfico en curso... if(EnumToString(ENUM_ORDER_TYPE(OrderGetInteger(ORDER_TYPE))) == EnumToString(ORDER_TYPE_BUY) || EnumToString(ENUM_ORDER_TYPE(OrderGetInteger(ORDER_TYPE))) == EnumToString(ORDER_TYPE_BUY_LIMIT) || EnumToString(ENUM_ORDER_TYPE(OrderGetInteger(ORDER_TYPE))) == EnumToString(ORDER_TYPE_BUY_STOP) || EnumToString(ENUM_ORDER_TYPE(OrderGetInteger(ORDER_TYPE))) == EnumToString(ORDER_TYPE_BUY_STOP_LIMIT)) buys++; if(EnumToString(ENUM_ORDER_TYPE(OrderGetInteger(ORDER_TYPE))) == EnumToString(ORDER_TYPE_SELL) || EnumToString(ENUM_ORDER_TYPE(OrderGetInteger(ORDER_TYPE))) == EnumToString(ORDER_TYPE_SELL_LIMIT) || EnumToString(ENUM_ORDER_TYPE(OrderGetInteger(ORDER_TYPE))) == EnumToString(ORDER_TYPE_SELL_STOP) || EnumToString(ENUM_ORDER_TYPE(OrderGetInteger(ORDER_TYPE))) == EnumToString(ORDER_TYPE_SELL_STOP_LIMIT)) sells++; // } } } Print("Orders ", "buys: ",buys, " sells :", sells); //Deals, igual, los deals dan las órdenes que están abiertas dentro de las posiciones... buys = 0; sells = 0; for(int i=0; i <= PositionsTotal()-1; i++) { if(PositionGetTicket(i)>0){ HistorySelectByPosition(PositionGetInteger(POSITION_IDENTIFIER)); for(int j=0; j <= HistoryDealsTotal()-1; j++) { if(HistoryDealGetTicket(j)>0){ //if(HistoryDealGetString(j,DEAL_SYMBOL) == Symbol()){ //Si ponemos esta Solo cuentan las del gráfico en curso... if(EnumToString(ENUM_DEAL_TYPE(HistoryDealGetInteger(HistoryDealGetTicket(j),DEAL_TYPE))) == EnumToString(DEAL_TYPE_BUY)) buys++; if(EnumToString(ENUM_DEAL_TYPE(HistoryDealGetInteger(HistoryDealGetTicket(j),DEAL_TYPE))) == EnumToString(DEAL_TYPE_SELL)) sells++; } // } } } } Print("Deals ", "buys: ",buys, " sells :", sells); }
Saludos,
-
mascara
-
- Mensajes: 41
- Registrado: 29 Jun 2012, 12:37
- Karma: 3
|
|