Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1598
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Sólo añadir que NO SE GARANTIZA que el terminal tenga y dé suficiente historial.
en el ejemplo anterior no hay ninguna referencia a la historia
por lo que se garantiza que el resultado de OrderSelect() es verdadero
UPD: OrderSelect en 4 funciona muy bien, lo probé una vez - para las órdenes de mercado el tiempo de acceso a las propiedades de la orden.... realmente es millones de veces por segundo, no quiero buscarlo, creo que estaba discutiendo con el moderador Artem, pero como dicen "todas las puntas son diferentes", me gusta - guardarlo
Hola, se necesitan datos sobre la detracción de cada operación.
¿Puede alguien conocer un script que recoja estas estadísticas y las presente en forma de informe?
Gracias
Hola, se necesitan datos sobre la detracción de cada operación.
¿Puede alguien conocer un script que recoja estas estadísticas y las presente en forma de informe?
Gracias
for(int i=OrdersTotal()-1;i>=0;i--) {
if (!OrderSelect(i,SELECT_BY_POSITON,MODE_TRADES)) continue;
double prosad=DBL_MIN;
if (OrderType()!=OP_BUY && OrderType!=OP_SELL) continue;
for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) {
double delta=( OrderType()==OP_BUY? OrderOpenPrice()-iLow(OrderSymbol(),PERIOD_M1,j) : iHigh(OrderSymbol(),PERIOD_M1,j)-OrderOpenPrice() );
delta /= MarketInfo(OrderSymbol(),MODE_POINT);
if (delta>prosad) prosad=delta;
}
PrintFormat("Максимальная просадка по ордеру %d = %d пунктов , %f денег",OrderTicket(),(int)(prosad),prosad*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE);
}
está "escrito a mano", sin probar, lleno de errores :-) sólo tienes que ajustarlo a tus necesidades y utilizarlo
for(int i=OrdersTotal()-1;i>=0;i--) {
if (!OrderSelect(i,SELECT_BY_POSITON,MODE_TRADES)) continue;
double prosad=DBL_MIN;
if (OrderType()!=OP_BUY && OrderType!=OP_SELL) continue;
for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) {
double delta=( OrderType()==OP_BUY? OrderOpenPrice()-iLow(OrderSymbol(),PERIOD_M1,j) : iHigh(OrderSymbol(),PERIOD_M1,j)-OrderOpenPrice() );
delta /= MarketInfo(OrderSymbol(),MODE_POINT);
if (delta>prosad) prosad=delta;
}
PrintFormat("Максимальная просадка по ордеру %d = %d пунктов , %f денег",OrderTicket(),(int)(prosad),prosad*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE);
}
escrito "a mano", no revisado, lleno de errores :-) ajústelo a sus necesidades y utilícelo
gracias, ¡intentaré averiguarlo!
@Igor Makanu, muchas gracias por tus respuestas sobre la clasificación de las órdenes en el terminal. Probablemente los guarde como una matriz de estructuras y los clasifique yo mismo. Las dudas se debían principalmente a que temía que esas acciones realizadas en cada tic tuvieran un notable impacto negativo en el rendimiento.
Entonces, ¿por qué clasificar en cada garrapata? Suficiente sólo cuando el número de entradas cambia o la lista cambia completamente...
en el ejemplo anterior no hay ninguna referencia a la historia
por lo que se garantiza que el resultado de OrderSelect() es verdadero
UPD: OrderSelect en 4 funciona muy bien, lo estuve probando una vez - para las órdenes de mercado el tiempo de acceso a las propiedades de la orden.... realmente son millones de veces por segundo, no quiero buscarlo, creo que estaba discutiendo con el moderador Artem, pero es como dicen "todas las puntillas difieren", si te gusta, quédate con ella