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

 

Buenas noches.

¿Podría decirme cómo añadir el cierre de todas las posiciones y la eliminación de todas las órdenes al final de la semana de negociación?

Gracias.

 
Antonius:

Buenas noches.

¿Podría decirme cómo añadir el cierre de todas las posiciones y la eliminación de todas las órdenes al final de la semana de negociación?

Gracias.

Escriba un script de este tipo, y luego láncelo en el gráfico cuando quiera cerrar y borrar todo. Eso es todo...

De nada.

 
artmedia70:

Escriba un script de este tipo, y luego láncelo en el gráfico cuando quiera cerrar y borrar todo. La cuestión es...

¡Por favor!



Gracias:) Aclarando la petición.

Necesitamos añadir código al EA que cierre todas las órdenes y posiciones al final de la semana de negociación.

¿Podría escribir este código?

 
Antonius:


Gracias:) Aclarando la petición.

Necesitamos añadir código al EA que cierre todas las órdenes y posiciones al final de la semana de negociación.

¿Podría escribir este código?

Puedo hacerlo. No hay problema. ¿Has hecho alguna vez algo por ti mismo? Este hilo no trata de conseguir cosas gratis, sino de ayudar a la gente que intenta codificar por sí misma.
 
artmedia70:
Puedo hacerlo. No hay problema. ¿Has hecho alguna vez algo por ti mismo? Este hilo no trata de conseguir algo gratis, sino de ayudar a los que intentan codificar por su cuenta.


Lo he buscado en https://book.mql4.com/ru/trading/orderclose.

Buscado en google, en el foro. No encontré ninguno. Quizás estoy escribiendo mal la consulta.

Pensé en preguntar en el hilo de novatos.

 

¿Cómo se prescribe?

Al ejecutar el script:

Aparece una ventana con las pestañas "general" y "parámetros de entrada".

Necesito introducir una fecha en los parámetros de entrada.

¿Es posible que cuando ejecute el script, aparezca un cuadro de fecha, introduzca la fecha, haga clic en ok y todo funcione?

¿Y puedo hacer que el script recuerde la última fecha que introduje?

 
artmedia70:

La función que determina la última posición cerrada en el tope tiene el tipo bool, mientras que usted está tratando de devolver el tipo double de la misma. En consecuencia, devuelve 0 o 1.

Te escribí que debías añadir el paso de una variable por referencia a la misma:

Ahora comprueba el último Buy, por ejemplo:

Así...


Muchas gracias.
 
artmedia70:

La función que determina la última posición cerrada en el tope tiene el tipo bool, y estás tratando de devolver el tipo double desde ella. En consecuencia, devuelve 0 o 1.

Te escribí que debías añadir el paso de una variable por referencia en ella:

Ahora comprueba el último Buy, por ejemplo:

Así...


Hizo todo lo que dijo. Todo compilado...... pero la función no funciona al probar advisor..... todas las posiciones advisor abre 0,1 lote.

double  Magic, Lot;

int start()
  {
        

  
 double Price=iOpen (Symbol (),0,0);
 

          
 int last_order_bar = 0;                                                                                                                        
 int ot = OrdersTotal();                                                                                                                        
                                                                                                                        
 if (ot>0) //если есть ордера в рынке                                                                                                                   
 {                                                                                                                      
   if (OrderSelect (ot-1,SELECT_BY_POS))                                                                                                                        
      if (OrderType ()==OP_BUY || OrderType ()==OP_SELL )                                                                                                                       
         last_order_bar = iBarShift (Symbol (),0,OrderOpenTime ());                                                                                                             
 }                                                                                                                      
                                                                                                                        
 int last_hist_order_bar = 0;                                                                                                                   
 int oht = OrdersHistoryTotal();                                                                                                                        
                                                                                                                
 if (oht>0)                                                                                                                     
 {                                                                                                                      
   if (OrderSelect (oht-1,SELECT_BY_POS, MODE_HISTORY))                                                                                                                         
      if (OrderType ()==OP_BUY || OrderType ()==OP_SELL)                                                                                                                        
         last_hist_order_bar = iBarShift (Symbol (),0,OrderOpenTime ());
                                                                                                        
        }

                                                                                                        
if (ot==0)

 if (Bid ==Price)
//=============================================================== 
  
if(((Open[1]-Close[1])>100*Point)&&((Open[1]-Close[1])<120*Point))
if(((High[1]-Open[1])>40*Point)&&((High[1]-Open[1])<60*Point))
if(((Close[1]-Low[1])>40*Point)&&((Close[1]-Low[1])<60*Point))

//============================================================
                                                                           // задавать минимальное значение лота я не стал,мне кажется для тестера это не обязательно
if (isCloseLastPosByStop(Symbol(), OP_BUY, Magic, Lot))                        
{
Lot=Lot*2;
OrderSend(Symbol(),OP_SELL,Lot,Bid,1,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
else
{

Lot=0.1;        
OrderSend(Symbol(),OP_SELL,1,Bid,Lot,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
   return(0);
  }
//============================================================  
bool isCloseLastPosByStop(string sy, int op, int mn, double ll)       //у Вас перед названием формального  параметра  11 стоял знак &- я его убрал.
{
   double   pt;
   datetime t;                                                       //у вас тип переменной t был int - я сделал datetime
   int       dg, i, j=-1, k=OrdersHistoryTotal()-1;

   for (i=k; i>=0; i--) 
   {
     if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) 
     {
         if (OrderMagicNumber()!=mn)   continue;   // если магик не тот, переходим к следующему
         if (OrderSymbol()!=sy)        continue;   // если символ не тот, переходим к следующему
         if (OrderType()!=op)           continue;   // если тип не тот, переходим к следующему
         if (t<OrderCloseTime()) 
         {
            t=OrderCloseTime();
            j=i;
            }
         }
      }
      
   if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) 
   {
      dg=MarketInfo(OrderSymbol(), MODE_DIGITS);      // количество знаков в цене символа ордера
      pt=MarketInfo(OrderSymbol(), MODE_POINT);       // размер пункта инструмента в валюте котировки ордера
      if (MathAbs(OrderClosePrice()-OrderStopLoss())< 0.5*pt) // Если закрыт по стопу
      { 
         ll=OrderLots();                              // записываем количество лотов в ордере, закрытом по стопу
         return(true);                                // возвращаем истину
         }
      }
      
   return(False);                                     // возвращаем ложь (позиции нету, либо не по стопу)
}

Por favor, dígame cuál es mi error.

No entiendo este punto - como usted ha notado correctamente la función devuelve el valor de tipo bool, pero en la llamada a la función, en la que la función debe poner el valor de tipo bool.

Se sugiere especificar otros tipos de valores.

Gracias.

 
solnce600:

Hice todo lo que dijiste. Todo compila...... pero la función no funciona al probar el EA..... todas las posiciones el EA abre 0.1 lotes.

¿Podría decirme cuál es mi error?

No entiendo este momento - como correctamente notaste la función devuelve valor de tipo bool, pero en la llamada a la función, en la cual la función debe poner valor de tipo bool

¿Sugiere usted que se especifiquen otros tipos de valores .

Gracias.


bool isCloseLastPosByStop(string sy, int op, int mn, double ll)       //у Вас перед названием формального  параметра  11 стоял знак &- я его убрал.

¿Por qué lo has quitado? Si lo hubieras dejado, todo habría funcionado.

 
Vinin:

Por qué quitarlo. Si lo hubieran hecho, todo habría funcionado

Me pregunto ..... qué significa ese cartel.... No se me ocurre nada en el libro de texto al respecto.
Razón de la queja: