Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 219

 
artmedia70:
Todas las compras y todas las ventas son dos guiones diferentes. Eso estaba claro desde el principio. La pregunta es: ¿debe cerrar absolutamente todas las posiciones? ¿O debería cerrar sólo las posiciones que están en el gráfico donde se ejecuta el script? ¿Debe cerrar las posiciones abiertas manualmente o las posiciones abiertas por un Asesor Experto, o ambas?

De lo contrario, pueden escribir cualquier mensaje de error, comprobaciones, etc. Creo que este script no necesita nada de eso. Yo no uso EAs, yo sólo trier ahora, no tengo planes de clases en mi vida en el próximo mes, he decidido comprobar forex.
 
bambastik:
Todo es absolutamente, pero según el tipo de gráfico en el que se basa el script, para hacerlo lo más sencillo posible, es mejor obtener todo tipo de mensajes de error. No uso Asesores Expertos, sólo estoy probando en este momento, no planeo ninguna actividad en mi vida en el próximo mes, por eso decidí echar un vistazo a forex.

Por tanto, es el tratamiento de los errores de negociación lo que marca la diferencia entre un buen guión y un tutorial en este caso. ¿Quieres aprender de ello o quieres que funcione al 100%?

Si sólo quieres el principio, aquí lo tienes:

//-----------------------------------------------------------------------------+
void start() {
   string sy=Symbol();
   int    i, k=OrdersTotal()-1;

   for (i=k; i>=0; i--) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderSymbol()!=sy)  continue;
         if (OrderType()>1)      continue;
         if (OrderType()==OP_BUY)   OrderClose(OrderTicket(),OrderLots(),Bid,5,Blue);
         if (OrderType()==OP_SELL)  OrderClose(OrderTicket(),OrderLots(),Ask,5,Red);
         }
      }
   return;
}
//-----------------------------------------------------------------------------+

Cierra tanto la compra como la venta.

No hay ningún tipo de gestión de errores. Puede cerrar sólo la Compra o sólo la Venta para usted - elimine una línea.

Bueno... sólo comprar:

//-----------------------------------------------------------------------------+
void start() {
   string sy=Symbol();
   int    i, k=OrdersTotal()-1;

   for (i=k; i>=0; i--) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderSymbol()!=sy)  continue;
         if (OrderType()==OP_BUY)   OrderClose(OrderTicket(),OrderLots(),Bid,5,Blue);
         }
      }
   return;
}
//-----------------------------------------------------------------------------+

Para vender:

//-----------------------------------------------------------------------------+
void start() {
   string sy=Symbol();
   int    i, k=OrdersTotal()-1;

   for (i=k; i>=0; i--) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderSymbol()!=sy)  continue;
         if (OrderType()==OP_SELL)  OrderClose(OrderTicket(),OrderLots(),Ask,5,Red);
         }
      }
   return;
}
//-----------------------------------------------------------------------------+
 

Muchas gracias. Eso es justo lo que necesito. Pero qué son el rojo y el azul y para qué sirve, probablemente muestra el punto de reinicio de cada orden, ¿no? Cuando lo pruebe, lo añadiré a codebase de una vez por artmedia70. Y por cierto, ¿para qué necesitamos el procesamiento de una normal si el guión es preciso y el desarrollador confía en él?

Y a lo mejor no hace falta que los añada por cierto y el propio desarrollador que es artmedia70 los añadirá al codebase, resultarán ser necesarios allí, y yo no tengo cuenta allí, y a los comentarios no podré contestar ni una palabra, ¿eh?

 
bambastik:

Muchas gracias. Pero es justo lo que necesito. Pero qué son el rojo y el azul y para qué sirve, probablemente muestra el punto de reinicio de cada orden, ¿no? Cuando lo pruebe, lo añadiré a codebase de una vez por artmedia70.

No, no a la base del código, en absoluto. Estoy acostumbrado a hacer cosas fiables, no tutoriales :)

Si te hubiera enseñado un guión normal, me habrías dicho que, como todo el mundo, he vuelto a escribir todo tipo de "errores"... Pero... no puedes prescindir de ellos. Esto es trabajar con nuestro dinero.

El azul y el rojo son el color de la marca de cierre.

 
artmedia70:

No, no hace falta una base de gatos. Estoy acostumbrado a hacer cosas fiables, no tutoriales :)

Si te hubiera enseñado un guión normal, me habrías dicho que yo, como todo el mundo, escribía todo tipo de erratas... Pero... no puedes prescindir de ellos. Este es un trabajo con nuestro dinero.

El azul y el rojo son el color del icono de cierre.


Entiendo todo lo de la kotobaza, lo del rojo y el azul también, en general una vez más muchas gracias por tu ayuda, pero no me pondré a cotorrear a no ser que sea muy raro, el internet imho debe estar más allá de las reverencias y los halagos y llevar sólo el pensamiento y por cierto uno puede ser cien veces más respetuoso que tú mil) pero es lírico) en general artmedia70 muchas gracias, muy script ayudó y en la kotobaza con ella no iré. Tengo un montón de ellos en la historia que pensaban así y donde están ahora. imho, el dinero será abolido pronto real, dejará una virtual y la cal, por lo que todo el mundo podría tener una cuenta con estrictamente identificable no más de una cierta cantidad, el resto en el presupuesto, etc. así que estoy de acuerdo con ellos, pero el proceso de sus actividades es sí, interesante. p.s. pedir disculpas por la verbosidad.
 
bambastik:

Por cierto, ¿por qué hay que procesar un script normal si está claro y el desarrollador confía en él?

El desarrollador sólo tendrá confianza en su programa si éste puede manejar los errores devueltos por el servidor de comercio. Si no se gestiona el error, el programa puede tropezar al primer error. El error NO es un error del programa, sino un error devuelto por el servidor de comercio. Por ejemplo, el script anterior no obtiene datos frescos. Así que el servidor puede devolver un error sobre el precio equivocado. Para ello, se debe tratar de recibir el entorno comercial más reciente antes del cierre - por favor, ejecute el comando RefreshRates() o, en lugar del precio de cierre Ask o Bid, utilice el precio obtenido utilizando MarketInfo(Symbol(),MODE_ASK) o MarketInfo(Symbol(),MODE_BID);

Entonces el script tomará esta forma (para Vender):

//-----------------------------------------------------------------------------+
void start() {
   string sy=Symbol();
   int    i, k=OrdersTotal()-1;
   
   for (i=k; i>=0; i--) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderSymbol()!=sy)  continue;
         if (OrderType()==OP_SELL)  {
            double pp=MarketInfo(sy,MODE_ASK);
            OrderClose(OrderTicket(),OrderLots(),pp,5,Red);
            }
         }
      }
   return;
}
//-----------------------------------------------------------------------------+

Y si tratas de procesar otros errores devueltos por el servidor, crecerá hasta esos valores cuando digas - "lo has vuelto a hacer..." :)

 

Ahora lo entiendo y sí, es importante. El internet no es bueno aquí, el hardware es joven también, así que no es realmente sabio confiar en ellos para el doscientos por ciento completo, pero el riesgo es una cosa noble =) pero gracias de nuevo por la adición, lo añadiré tanto a la compra como a la venta.

¿Es adecuado para comprar?

void start() {
string sy=Symbol();
int i, k=OrdersTotal()-1;

for (i=k; i>=0; i--) {
if (OrderSelect(i,SELECT_BY_POS)) {
if (OrderSymbol()!=sy) continue;
if (OrderType()==OP_BUY) {
double pp=MarketInfo(sy,MODE_BID);
OrderClose(OrderTicket(),OrderLots(),pp,5,Blue);
}
}
}
return;
}

Y si necesito eliminar sólo 3 órdenes de compra de las 5 disponibles, cuyo valor es el mayor, ¿el script aumentará de tamaño? Y una pregunta más, si no me molesto en preguntar, porque estas comprobaciones llevan todo el tiempo, me pregunto ¿qué script tiene más probabilidad de deslizamiento que el que tiene comprobaciones o el que no tiene comprobaciones de errores?

 
bambastik:

Ahora lo entiendo y sí, es importante. Internet no es bueno aquí, es un hecho, el hardware es joven también, por lo que no es realmente sabio confiar en ellos para el doscientos por ciento completo, pero el riesgo es una cosa noble =) pero gracias de nuevo por la adición, lo añadiré tanto a la compra como a la venta.

¿Es esto correcto para comprar?

Sí. Pero eso no es todo... ;)

Esta secuencia de comandos, además de los errores similares no procesados, también tocará las órdenes "ajenas". Es decir, si tiene un EA trabajando en este símbolo, el script cerrará sus posiciones, y el EA las abrirá de nuevo. Así es como se "pelearán" entre ellos.

Para evitarlo, es necesario limitar el guión en términos de magia. Es decir, añadir una línea if (OrderMagicNumber()>0) continue; entonces el script sólo funcionará con órdenes abiertas manualmente.

Para vender:

//-----------------------------------------------------------------------------+
void start() {
   string sy=Symbol();
   int    i, k=OrdersTotal()-1;
   
   for (i=k; i>=0; i--) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderMagicNumber()>0)  continue;
         if (OrderSymbol()!=sy)     continue;
         if (OrderType()==OP_SELL)  {
            double pp=MarketInfo(Symbol(),MODE_ASK);
            OrderClose(OrderTicket(),OrderLots(),pp,5,Red);
            }
         }
      }
   return;
}
//-----------------------------------------------------------------------------+

Y hay mucho más que perfeccionar para una fiabilidad "normal". Llegará con el tiempo, no lo dudes. ;)

 
artmedia70:

Sí. Pero eso no es todo... ;)

Esta secuencia de comandos, además de los restantes errores similares no procesados, también tocará las órdenes "ajenas". Es decir, si tiene un EA ejecutándose en este símbolo, el script cerrará sus posiciones, y el EA las reabrirá a su vez. Así es como se "pelearán" entre ellos.

Para evitarlo, es necesario limitar el guión en términos de magia. Es decir, añadir una línea if (OrderMagicNumber()>0) continue; entonces el script sólo procesará las órdenes abiertas manualmente.


No sé cómo hacerlo, nunca llegaré a los asesores expertos, indicadores, señales y demás, así que me aburro jugando al Dota y me pongo a hurgar en el gráfico, me encanta mirar el movimiento del mismo, es muy bonito, así que estoy así, para el desarrollo general y ahora entiendo lo que es una orden magik que abren los no automáticos y los no asesores, aunque probablemente sean las mismas personas ;)
 
¿puede escribir: un script/asesor para cerrar dos órdenes opuestas en n*pips en beneficio?