[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 12

 
ahí está
Archivos adjuntos:
 
igrok2008 >> :

En tu anterior comentario me has señalado mi fallo, sobre los niveles incorrectos de compra y venta, que (según entiendo) requiere invertir los signos < >.

Para CCI es necesario o no especificar -100????????????????????????

Tómalo y ponlo en el probador

y mostrará donde el resultado es mejor

donde hay un menos o donde no lo hay

y qué número terminará siendo 250 o -250

 

Por favor, escriba o sugiera cómo hacer que una orden se abra cuando aparezca una nueva barra y se cierre cuando ésta se cierre. Me duele la cabeza, no puedo entenderlo ))))

 
vadim2304 >> :

Por favor, escriba o sugiera cómo hacer que una orden se abra cuando aparezca una nueva barra y se cierre cuando ésta se cierre. Ya me duele la cabeza, no puedo pensar en ello ))))

if ( isTime(Period()*60)) { закрытьОткрытыйОрдер(); открытьНовыйОрдер()};


bool isTime(int sec){
   bool res = false;
   static datetime time = 0;
   double min = 0;
   if (TimeCurrent() >= time){
      min = MathFloor( sec / 60);
      if ( min==0) min = 1.0;         
      time = iTime(NULL,PERIOD_H1,0) + (MathFloor(Minute()/ min) + 1) * min * 60;
      res = true;
   } 
   return( res);
}
 
keekkenen >> :

Entiendo que esto es para la barra con marco de tiempo H1, pero donde escribir el código para los precios de apertura y cierre, después de if (isTime(Period()*60)), y lo que significa, por favor descifrar )))

 

malentendido... Period()*60 es para cualquier TF - todo se expresa en segundos, es decir

en M1 - 60 s, M5 - 300 s, etc. (porque Period() en M1 devuelve 1, en M5 - 5...)

Lo escribí en sentido figurado

if ( isTime(Period()*60)) { закрытьОткрытыйОрдер(); открытьНовыйОрдер()};

El significado de esto - cuando aparece una nueva barra, puede cerrar una orden abierta y abrir una nueva.

Si no puedes hacerlo tú mismo, echa un vistazo al tutorial https://book.mql4.com/ru/

 
keekkenen >> :

malentendido... Period()*60 es para cualquier TF - todo se expresa en segundos, es decir

en M1 - 60 seg, M5 - 300 seg, etc. (como Period() en М1 devuelve 1, en М5 - 5...)

Lo escribí en sentido figurado.

La idea es cerrar una orden abierta y abrir una nueva.

Si no puedes hacerlo tú mismo, echa un vistazo a "https://book.mql4.com/ru/" para ver un tutorial.


Y si no hay órdenes abiertas (las cerrará después de esta barra), y sólo abre una nueva orden, no habrá ningún error?

 
satop >> :

Cógelo y mételo en el probador

y te mostrará donde los resultados son mejores.

donde hay un menos o donde no lo hay.

y te mostrará si es 250 o -250.

No te enfades satop. Todos eran principiantes, todos hacían preguntas estúpidas. Piensa en la vuelta al cole. Debe haber habido frikis. Tenían curiosidad, querían aprender. Con el tiempo, por supuesto, los molestaron, pero eso demuestra que los que estaban enojados captaron y entendieron todo más rápido. Pero ambos métodos de enseñanza TIENEN derecho a la vida. César a César......No hay ofensa.......No niego que sea un tonto, pero tengo curiosidad. No te ofendas...

 
vadim2304 >> :

¿Y si no hay órdenes abiertas (las cerrará después de esta barra) y simplemente abrimos una nueva orden, no habrá error?

La cuestión es que la función OrderClose() que cierra la orden toma el número de orden como primer parámetro, y el número de orden sólo se puede obtener llamando a OrderSelect() en las órdenes existentes, por lo que en general el cierre tiene este aspecto...

bool res = false;
int slippage = 3;

for (int i = 0; i < OrdersTotal(); i++) {
   if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES) &&
         OrderSymbol()==Symbol()){

      while (IsTradeContextBusy() || !IsTradeAllowed())
         {Comment("Торговый поток занят ...");Sleep(2000);}               
      res = OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(), slippage,CLR_NONE);
      if ( res){  
         res = true; Comment("Ордер закрыт !");              
      }else{
         Comment("Ошибка - ", msg);
      }
   }
}
  


Si OrdersTotal() = 0, es decir, si no hay órdenes abiertas, el bucle for terminará inmediatamente...

 
igrok2008 >> :

No te enfades satop. Todos eran principiantes, todos hacían preguntas estúpidas. Piensa en la vuelta al cole. Seguro que había frikis. Tenían curiosidad, querían aprender. Con el tiempo, por supuesto, los molestaron, pero se ve que los que estaban enojados captaron y entendieron todo más rápido. Pero ambos métodos de enseñanza TIENEN derecho a la vida. César a César......No hay ofensa.......No niego que sea un tonto, pero tengo curiosidad. >> No te ofendas.

No sé por qué crees que estoy enfadado.

Es sólo mi manera de explicar que

tomando cualquier signo de desigualdad y corriendo

>> en el probador, puede obtener un positivo

el resultado con algún nivel, y no importa qué nivel

positivo o negativo. Y cuando se le preguntó

si se toma el nivel con o sin el menos,

Por desgracia, no hay una distinción clara.