Cierre de medios lotes. - página 15

 
¿Estoy usando esto? Si se combina con "if(OpenOrdersThisPair(Symbol())>0)" arriba, eso debería mantener los EA's separados de cada par? Veo lo que estás diciendo sin embargo. ¿Alguna sugerencia sobre cómo puedo distinguir un comercio que se ha reducido a la mitad contra uno que no tiene utilizando OrderOpenTime()? ¿Una pequeña patada en la dirección correcta...?

//+----------------------------------------------------------------------------------------------------------------------------------------+  
//| Check to see if any order open on this currency pair                                                                                   |
//+----------------------------------------------------------------------------------------------------------------------------------------+   

int OpenOrdersThisPair(string pair)
  {
   int total=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==pair) total++;
     }
   return(total);
  }
 
DomGilberto:
¿Estoy usando esto? Junto con "if(OpenOrdersThisPair(Symbol())>0)" arriba, eso debería mantener los EA's separados de cada par?

No, suponga que tiene 2 EAs ejecutándose y cada uno tiene una Orden abierta, tiene una probabilidad de 50:50 de que la última OrdenSeleccionada() por la función OpenOrdersThisPair() sea la equivocada... la función devolverá una pero puede tener la Orden seleccionada equivocada.
 
Perdóname, pero no entiendo cómo es eso cierto? Me estoy asegurando de que el OrderSymbol()==par? Así que el EA relevante que se adjunta a EURUSD, recogería es el orderselect en EURUSD?
 
¿Esto lo solucionaría? En el diario me dice esto? ¿Qué hay de "OrderSymbol()==OrderSymbol()" lol? si es ESTE símbolo... no estoy seguro si eso es retardado o no...

   if(OpenOrdersThisPair(Symbol())>0) //If there is a trade open = do below, which ever is applicable.
     {
     if(OrderSelect(OrderTicket(),SELECT_BY_TICKET, MODE_TRADES)==True)
         {   
         Print("The Symbol is: ", OrderSymbol());  
         }
         
         if(OrderType()==OP_BUY && OrderOpenPrice() > OrderStopLoss() && OrderSymbol()==OrderSymbol())
               {
               CloseHalfOrder(); // Closes half at 1:1 - then calls another void to break even on the trade +3.
               }

         if(OrderType()==OP_SELL && OrderStopLoss() > OrderOpenPrice() && OrderSymbol()==OrderSymbol()) // lol? If this symbol is, this symbol...
               {
               CloseHalfOrder1(); // Closes half at 1:1 - then calls another void to break even on the trade +3.
               }
            
2013.08.08 18:51:21	2010.02.08 01:00  Trend Fishing 3 Exits GBPJPY,H1: The Symbol is: GBPJPY

 

Ah! ¿Y si comparo la OrderCloseTime() y la OrderOpenTime()?

Seguramente esta sería la MEJOR manera de hacer lo que quiero? ¿De esta manera puedo añadir tantas funciones OrderClose como quiera? Después de todo, podría simplemente seleccionar la operación en el historial que tuviera el mismo OrderOpenTime() que el actual "OP_BUY", pero si el OrderCloseTime() > OrderOpenTime(), entonces esto detendría el OrderClose(), cerrando las mitades continuamente!?

Que alguien me diga, por favor, que tengo algo con lo que trabajar aquí :( jaja.

 
DomGilberto:
Perdóname, pero no entiendo cómo es eso cierto? Me estoy asegurando de que el OrderSymbol()==par? Así que el EA relevante que se adjunta a EURUSD, recogería es el orderselect en EURUSD?

Primero se hace un OrderSelect() . . . luego se comprueba . . .

if(OrderSymbol()==pair) total++;

. . y eso está bien para esa función, si los símbolos no coinciden no se incrementa la cuenta . . pero sigue significando que la última Orden seleccionada no era para el símbolo con el que estás trabajando.

Necesitas un bucle adicional y encontrar una orden válida y luego salir del bucle . . entonces tienes la Orden Seleccionada correcta.

 
Estoy confundido, he probado mi EA en 16 pares diferentes, simultáneamente esta semana y nunca ha seleccionado el equivocado :s? ¿Me estoy perdiendo algo?
 
DomGilberto:
Estoy confundido, he probado mi EA en 16 pares diferentes, simultáneamente esta semana y nunca ha seleccionado el equivocado :s? ¿Me estoy perdiendo algo?
Por lo que veo parece posible que pueda seleccionar la orden equivocada, yo lo arreglaría para estar seguro en lugar de arriesgarlo. Revisa tu código, si no puede ocurrir entonces no necesitas arreglarlo.
 

DomGilberto:
I thought that too - It says I need OrderSelect() before using OrderType, but it works? I only ever have one order open at any given time...

I can't think of how to use OrderOpenTime() to my advantage and stop CloseHalfOrder being called every time...

EA cierra parcialmente la orden, EA necesita saber qué orden no debe cerrar parcialmente de nuevo, por lo que obtiene OrderOpenTime() antes de cerrar parcialmente. Codifique el EA para no cerrar parcialmente las órdenes en ese par de divisas con ese mismo OrderOpenTime() de nuevo.

 
SDC:

EA cierra parcialmente la orden, EA necesita saber qué orden no debe cerrar parcialmente de nuevo, por lo que obtiene OrderOpenTime() antes de cerrar parcialmente. Codifique el EA para no cerrar parcialmente las órdenes en ese par de divisas con ese mismo OrderOpenTime() de nuevo.


Sí, estoy empezando a llegar allí ahora - Supongo que tengo que comparar con las operaciones que se han cerrado en la historia en el mismo OrderSymbol()?

El problema que tengo es que estoy tratando de cerrar parcialmente la misma "OP_BUY" o "OP_SELL" hasta 4 veces a diferentes precios... Creo que la pregunta que debería hacer es, ¿puedo conseguir una manera, en la que tengo una regla que TODOS los cierres parciales (de cualquier lote y precio en UNA operación dada) sólo se cerrarán parcialmente UNA vez en sus parámetros predefinidos "OrderClose()" establecidos ...

Esta forma en que estoy buscando hacerlo ahora con la comparación de la OrderOpenTime() esencialmente sólo funcionará una vez, y restringirá cualquier otro tipo de función OrderClose () de suceder en absoluto ... Quiero encontrar una forma en la que pueda tener una regla aplicada a 4 funciones OrderClose()... (si eso tiene sentido?)

Sé que la gente está sugiriendo abrir 4 órdenes, pero sin profundizar demasiado, es menos eficiente para mí hacerlo de esa manera.