¿Dónde está el ea
El asesor no ha ido a ninguna parte. El asesor está en su sitio:

Quiero perfeccionar el Asesor Experto para mí, ¡pero para hacerlo necesito entender muchas cosas! (No entiendo muchas cosas). Voy a hacer preguntas por partes.
Hay un código:
if(m_need_delete_buy_stop || m_need_delete_sell_stop) { int count_buy_stops=0,count_sell_stops=0; CalculateAllPendingOrders(count_buy_stops,count_sell_stops); if(m_need_delete_buy_stop) { if(count_buy_stops>0) { DeleteOrders(ORDER_TYPE_BUY_STOP); return; } else { m_need_delete_buy_stop=false; return; } } if(m_need_delete_sell_stop) { if(count_sell_stops>0) { DeleteOrders(ORDER_TYPE_SELL_STOP); return; } else { m_need_delete_sell_stop=false; return; } } }
¿Qué hace?
Quiero perfeccionar el Asesor Experto para mí, ¡pero para hacerlo necesito entender muchas cosas! (No entiendo muchas cosas). Voy a hacer preguntas por partes.
Hay un código:
¿Qué hace?
Si se activa la bandera' m_need_delete_buy_stop' ('necesidad de borrar órdenes pendientes de stop de compra') o m_need_delete_sell_stop' ('necesidad de borrar órdenes pendientes de stop de venta')
if(m_need_delete_buy_stop || m_need_delete_sell_stop)
{ proceder a la eliminación.
Calculamos cuántas órdenes pendientes tiene el Asesor Experto en este momento:
int count_buy_stops=0,count_sell_stops=0; CalculateAllPendingOrders(count_buy_stops,count_sell_stops);
Si 'es necesario borrar órdenes pendientes de stop de compra'
if(m_need_delete_buy_stop) { if(count_buy_stops>0) { DeleteOrders(ORDER_TYPE_BUY_STOP); return; } else { m_need_delete_buy_stop=false; return; } }
y el número de órdenes stop de compra colocadas es mayor que cero ('count_buy_stops') - las borramos. Si el número es igual a cero - restablecer el'm_need_delete_buy_stop' bandera.
Hacemos lo mismo si 'es necesario borrar órdenes pendientes de stop de venta' ...
- www.metatrader5.com
Gracias.
Otro código que no entiendo:
//--- trabajamos sólo en el momento del nacimiento de nuevo bar static datetime PrevBars=0; datetime time_0=iTime(m_symbol.Name(),InpWorkTimeFrame,0); if(time_0==PrevBars) return; PrevBars=time_0; if(!RefreshRates()) { PrevBars=0; return; }
Gracias.
Otro código que no entiendo:
Este código hace lo siguiente: funciona sólo una vez - cuando nace una nueva barra.
Este código hace lo siguiente: sólo funciona una vez, en el momento en que nace una nueva barra.
Gracias. Eso es lo que entendí al final:
//--- trabajamos sólo en el momento del nacimiento de nuevo bar // recuerda la hora de apertura del último compás en la variable estática static datetime PrevBars=0; // hora actual (iTime - devuelve el valor de la hora de apertura del bar) datetime time_0=iTime(m_symbol.Name(),InpWorkTimeFrame,0); if(time_0==PrevBars) return; // si el tiempo es diferente porque la condición ha pasado if(time_0==PrevBars) // recuerda la hora PrevBars=time_0; // si las cotizaciones no se han actualizado, entonces restablece la hora de la última apertura de la barra if(!RefreshRates()) { PrevBars=0; return; } // si has llegado hasta aquí, no es un bar nuevo.
Sin tu enlace no me habría dado cuenta)
Gracias. Esto es lo que me di cuenta al final:
No me habría dado cuenta sin tu enlace)
Pequeña corrección. Esto
// si has llegado hasta aquí, no es un bar nuevo. es incorrecto. Es correcto:
// has llegado a este punto, así que el bar es nuevo.
Por cierto, justo debajo está el código:
if(!RefreshRates() || !m_symbol.Refresh()) { PrevBars=0; return; }
Creo que duplica parcialmente el código comentado anteriormente:
if(!RefreshRates()) { PrevBars=0; return; }
Creo que se puede eliminar
Una pequeña corrección. Se trata de
es incorrecto. Es correcto:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Cidomo:
Trabajo con órdenes pendientes (Buy Stop y Sell Stop).
Autor: Vladimir Karputov