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

 

Trader7777:

evillive:

Si cambias el orden, será del antiguo al nuevo. Pero mientras tanto, de lo nuevo a lo viejo, e incluso a través de uno a veces puede pasar.


si se hace for (int i = OrdersTotal()-1; i>0; i--) se cerrará de nuevo a viejo!

Trader7777:

No lo entiendo, si te da pereza decirme qué es lo que falla, ¿por qué me impones una función que no necesito según mi TS?

Si un pedido con número OrdersTotal() -1 es el más nuevo para ti y el pedido con número 0 es el más antiguo, no tengo nada más que decir. Cuando los ojos de una persona se cierran, sólo se abren por su propia voluntad, nadie puede forzarlos.

for (int i =0; i<OrdersTotal();i++) //i++ кто будет писать, Пушкин? Зачем сочинять химеру FOR + WHILE???

Por cierto, ¿qué función le he "impuesto" inadvertidamente?

 
Bueno la quimera no es crucial, en general debería funcionar, solo tengo una duda sobre el recuento, se incrementa en las bahías y en las ventas, pero hay una comprobación de cantidad ligada a ella.
 
splxgf:

¿Por qué se comparan k y n con el número total de pedidos cerrados?

Elnúmero de pedidos se contará sólo para los pedidos del tipo otype:
Bueno esa quimera no es crucial, en general debería funcionar, solo tengo una duda sobre el recuento, se incrementa durante las bahías y las ventas, pero hay una comprobación de la cantidad ligada a ella.

El parámetro otype se pasa a la función, y para esta llamada en particular sólo se contarán las órdenes de otype.

 
Mr.Profit:

El parámetro otype se pasa a la función, y para esta llamada en particular el recuento se hará sólo para las órdenes de otype.


La función puede comprimirse un par de veces. Ya lo hemos puesto en práctica y hemos visto que funciona en tiempo real. (en realidad necesitamos una función separada para cerrar órdenes con RefreshRates y otras cosas).

double n = NormalizeDouble (CTbuy/2,1);

if (count<n) 

Por ejemplo, cuatro órdenes de CTbuy estarán abiertas, divididas por dos, serán dos. La condición de comparación cerrará sólo una.

P.D. Aunque, no, no lo soy. pero la cuestión de lo que no nos gusta sigue abierta.

 
splxgf:

pero la cuestión de lo que no le gusta sigue abierta.


¿Incluso mi opción en la página anterior?
 

Amigos, por qué molestarse con el problema de borrar parte de la red:

Arreglar los valores de los tickets en la primera búsqueda sin borrar, y luego simplemente ir a través de la matriz y borrar todo por ticket - y nada saltará en cualquier lugar y el orden correcto estará allí.

 
Mr.Profit:

¿Incluso mi versión en la página anterior?

void CloseHalfOrders(int otype) {
  if (otype!=OP_BUY || otype!=OP_SELL) return;
  int count = CountTrades(otype)/2; 
  for (int i =0; i<OrdersTotal();i++) 
    if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
       if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype){
         if (otype == OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,0,Lime); 
            else OrderClose(OrderTicket(),OrderLots(),Ask,0,Lime);
         count--; i--;
         if (count<1) return;
         Sleep(1000);
       }
}
Puedes optimizar para siempre.
 
splxgf:

La optimización puede ser eterna.

if (otype!=OP_BUY ||&& otype!=OP_SELL) return;
;-)
 

Buenas tardes. Soy un novato. Algo extraño ha ocurrido con mi cuenta. Por favor, ayúdenme con consejos.

El stop loss no se activó en la demo. La pérdida en el conjunto SL debería ser de unos 50, pero en realidad picó 158. ¿Cómo ha ocurrido esto?

 
moloko:

Buenas tardes. Soy un novato. Algo extraño ha ocurrido con mi cuenta. Por favor, ayúdenme con consejos.

El stop loss no se activó en la demo. La pérdida en el conjunto SL debería ser de unos 50, pero en realidad picó 158. ¿Cómo ha ocurrido esto?

Está bien que sea una demo, pero es más una pregunta para la empresa de corretaje, es más un foro de codificación.
Razón de la queja: