Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 198

 
-Aleks-:

¿Seguro que has mirado el último código que has publicado? Si es así, necesito un descanso... Gracias.
Rastrea la variable"c".
 
Artyom Trishkin:
Rastrea la variable"c".

Sí, gracias. Ya veo, pero todavía no le encuentro sentido a este código.

Victor Nikolaev: ¡gracias por su ayuda!

 

¡Buenos días a todos!

Por favor, díganme si se puede cambiar el valor del NÚMERO MAJIC en una orden que ya ha sido cerrada y aparece en la lista de órdenes cerradas.

Es decir, cambiar el valor del NÚMERO MAJIC después de cerrar la orden.

Si es posible, entonces qué función debe usarse para cambiarlo. No encontré tal función en el trabajo de Kim.

Gracias.
 
ANDREY:

¡Buenos días a todos!

Por favor, díganme si se puede cambiar el valor del NÚMERO MAJIC en una orden que ya ha sido cerrada y aparece en la lista de órdenes cerradas.

Es decir, cambiar el valor del NÚMERO MAJIC después de cerrar la orden.

Si es posible, entonces qué función debe usarse para cambiarlo. No encontré tal función en el trabajo de Kim.

Gracias.

No puedes. ¿Y por qué lo necesita? ¿Quizás haya otra solución al problema?
 
-Aleks-:

No se puede. ¿Por qué querrías hacer eso en primer lugar? ¿Hay otra solución al problema?

Gracias por el consejo.

Mientras esperaba una respuesta, se me ocurrió algo. Si no funciona, escribiré lo que necesito.

¿Puedes darme una pista?

if(OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY)) // si el último pedido
si ( OrderType ()==OP_SELL)// SEL

X = OrderProfit( );// almacenar el valor de TakeProfit

if (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY)) // si el último pedido
si ( OrderType ()==OP_SELL)// SEL

if(X < 0)// y si esta Venta se cerró en la parada

ABRIR OTRO PEDIDO

PREGUNTA

Cómo codificar una adición a estas condiciones.

No sólo la última orden, sino también la penúltima y la penúltima deben cerrarse en el momento de la parada

y sólo entonces

PARA ABRIR UNA ORDEN MÁS.

Gracias.



 
geratdc:Por ahora he realizado los cambios recomendados en el código en el Bloc de notas. Por favor, compruebe si he corregido el código correctamente.

Le he echado un vistazo. Lo he corregido. En el probador durante 3 meses este es el resultado

La reducción es grande.

 
¿Puede usted decirme cómo encontrar los números de los últimos 5 cruces en el día actual
 
missha32: Para encontrar el número de barras cruzadas por un número Mach de digamos 5 últimos cruces para el día actual

Si a las 4 de la mañana - no hay muchos bares todavía para hoy. En H4 sólo hay 6 barras en un día. es necesario establecer el número de barras a buscar o el número de cruces.

//+-------------------------------------------------------+
//| Подсчет пересечений MA                    PROBA_MA.mq4|
//+-------------------------------------------------------+
#property strict

extern int Баров = 500;  // Баров для подсчета пересечений МА
extern int MA_1  =10;
extern int MA_2  =100;

void OnStart()
{
  int Бар, Счетчик;
  double MA_1_Предыдущая, MA_2_Предыдущая,
         MA_1_Следующая,  MA_2_Следующая;

  ObjectsDeleteAll(); // Удалить вертикальные линии

  for(Счетчик=0, Бар=0; Бар<Баров; Бар++) // Начинаем с послнего бара
  {
    MA_1_Предыдущая = iMA(_Symbol,0,MA_1,0,MODE_EMA,PRICE_CLOSE,Бар+1);
    MA_1_Следующая  = iMA(_Symbol,0,MA_1,0,MODE_EMA,PRICE_CLOSE,Бар);
    MA_2_Предыдущая = iMA(_Symbol,0,MA_2,0,MODE_EMA,PRICE_CLOSE,Бар+1);
    MA_2_Следующая  = iMA(_Symbol,0,MA_2,0,MODE_EMA,PRICE_CLOSE,Бар);

    if((MA_1_Предыдущая>=MA_2_Предыдущая && MA_1_Следующая<=MA_2_Следующая) ||
       (MA_1_Предыдущая<=MA_2_Предыдущая && MA_1_Следующая>=MA_2_Следующая))
    {
      Счетчик++;
      Alert(Счетчик, "  Бар = ", Бар, "  T = ",Time[Бар]);

      // Создать вертикальную линию
      ObjectCreate( (string)Счетчик+"_"+(string)Бар,OBJ_VLINE,0,Time[Бар],0);

      if(Счетчик == 5) break;  // 5 линий есть - выход
    }
  }
}

distancias grandes = tendencia

 

¿Puedes darme una pista?

if(OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY)) // si el último pedido
si ( OrderType ()==OP_SELL)// SEL

X = OrderProfit( );// almacenar el valor de TakeProfit

if (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY)) // si el último pedido
si ( OrderType ()==OP_SELL)// SEL

si(X < 0)// y si esta Venta se cerró en la parada

ABRIR OTRO PEDIDO

PREGUNTA

Cómo codificar una adición a estas condiciones.

No sólo la última orden, sino también la penúltima y la penúltima deben cerrarse en el momento de la parada

y sólo entonces

PARA ABRIR UNA ORDEN MÁS.

Gracias.
 

Necesito algún tipo de indicador para cambiar el indicador, quiero dibujar una línea de alta a baja en el gráfico horario cada 24 horas, y obtener los datos de la longitud de la línea y la pendiente y poder trabajar con estos datos en el código, no soy un gran experto en mql4 si escribo desde cero, ¿gran problema?

Tengo una recta estirada de dos coordenadas, por más que le dé la vuelta no tiene sentido, por favor ayúdenme, tal vez no debería haberme metido con la herramienta.

#property indicator_chart_window
//---- input parameters
extern int   CountDays     =22;
extern int   GMT           =0;
extern color pivot         =Gold;
extern color day           =Yellow;
extern color metka         =MidnightBlue;

//---- indicator buffers
double range[];
double ny_close[];
double low[];
double high[];
datetime time1;
datetime time2;
datetime ny_time[];

int shift, num;
int ny_shift[];
datetime prevDay=0;
bool fTime;
// ----
void ObjDel()
{
   if (ObjectsTotal() > 0)
   for (num=0;num<=CountDays;num++)
   {
   ObjectDelete("PPw["+num+"]");   
          
   }
   ObjectDelete("mPw");           
}
// ----
void PlotLine(string name,double value,double value1,double line_color,double style)
{
   double valueN=NormalizeDouble(value,Digits);
   double valueN1=NormalizeDouble(value1,Digits);
   bool res = ObjectCreate(name,OBJ_TREND,0,time1,valueN,time2,valueN1);
   ObjectSet(name, OBJPROP_WIDTH, 1);
   ObjectSet(name, OBJPROP_STYLE, style);
   ObjectSet(name, OBJPROP_RAY, false);
   ObjectSet(name, OBJPROP_BACK, true);
   ObjectSet(name, OBJPROP_COLOR, line_color);
} 
//***********
void PlotVLine(string name,double tm,double line_color)
{
   bool res = ObjectCreate(name,OBJ_VLINE,0,tm,0);
   ObjectSet(name, OBJPROP_WIDTH, 0);
   ObjectSet(name, OBJPROP_STYLE, 2);
   ObjectSet(name, OBJPROP_COLOR, line_color);
} 
//***********
void PlotPrice(string name, double value, double line_color)
{
    double valueN=NormalizeDouble(value,Digits);
    bool res = ObjectCreate(name, OBJ_ARROW, 0, time2,valueN);
    ObjectSet(name, OBJPROP_COLOR, line_color);
    ObjectSet(name, OBJPROP_WIDTH, 1);
    ObjectSet(name, OBJPROP_ARROWCODE, SYMBOL_RIGHTPRICE);
}       
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
   fTime = true;
   IndicatorBuffers(2);
   SetIndexBuffer(0,range);
   SetIndexBuffer(1,ny_close);
   return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+   
int deinit()
{
   ObjDel();
   Comment("");
   return(0);
}
//+------------------------------------------------------------------+
//| LNX_Pivots_v3.1                                                    |
//+------------------------------------------------------------------+
int start()
{
   int i;
   double P;
  
   datetime cDay = iTime(NULL,PERIOD_D1,0) + (GMT-Period()/60.0)*3600;
   if (cDay != prevDay || fTime)  
   {
   ObjDel();
   ArrayResize(ny_time,CountDays+1);
   ArrayResize(ny_shift,CountDays+1);
   ArrayResize(high,CountDays+1);
   ArrayResize(low,CountDays+1); 
   ArrayResize(range,CountDays+1);    
      for (shift=0;shift<=CountDays;shift++)
      {
      ny_time[shift]  = iTime(NULL,PERIOD_D1,shift) + (GMT-Period()/60.0)*3600;
      ny_shift[shift] = iBarShift(NULL,0,ny_time[shift]);
      ny_close[shift] = iClose(NULL,0,ny_shift[shift]);        
      }
     
 for (shift=0;shift<=CountDays-1;shift++)
      {
      int length = ny_shift[shift+1]-ny_shift[shift];
   
      high[shift] = High[iHighest(NULL,0,MODE_HIGH,length,ny_shift[shift])];
      low[shift]  = Low[iLowest(NULL,0,MODE_LOW,length,ny_shift[shift])];
      range[shift] = high[shift] - low[shift]; 
      }
  
  for (shift=0;shift<=CountDays-1;shift++)
      {
  
           
      P  = (ny_close[shift]+high[shift]+low[shift])/3;
      

      time1 = ny_time[shift]+Period()*60;    
         
         if (shift==0) 
         {
         time2 = ny_time[shift] + 24*3600+Period()*60 ;
         PlotVLine("pV0",time2,day);
         PlotPrice("mPw",P,metka);
                 
         }
         else
         time2 = ny_time[shift-1]+Period()*60;
         PlotVLine("pV["+shift+"]",time1,day);
            
      int pstyle=0;
   PlotLine("PPw["+shift+"]",P,P,pivot,pstyle); // *********две координаты*******

}
   fTime = false;
   prevDay = cDay;
   }           
   return(0);
}
//+------------------------------------------------------------------+