[¡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 159

 
1Rakso >> :

1) ¿Y cómo se hace para deshabilitarlo, a través de variables externas?

2) ¿Puedo configurarlo de manera que la primera orden abierta se cierre al abrirse y las siguientes órdenes 2, 3, etc. no se cierren? Supongamos que abro una orden de compra - esta es la primera orden, luego abro otra orden de compra - la segunda, etc. y luego de esta serie de órdenes sólo la primera orden sería cerrada por СorderClose ?

Consulte las páginas de direcciones en https://www.mql5.com/ru/forum/105913

1) Aproximadamente así -

extern bool      AutoClose = True;
.......................................


//********* Закрытие позиций ****************************************
if ( AutoClose) {  
//----переменные для закрытия позиций ----
double Stochast_0 =iStochastic(NULL,0, Stochastic_period,3,3,MODE_SMA,0,MODE_MAIN,0);
double Stochast_1 =iStochastic(NULL,0, Stochastic_period,3,3,MODE_SMA,0,MODE_MAIN,1);
//----------------------------------------------------------------------
  for (int v=0; v<OrdersTotal(); v++)                             {       
      if (OrderSelect( v, SELECT_BY_POS, MODE_TRADES))               {           
        if (OrderSymbol()==Symbol()&& OrderMagicNumber()== MagicNum)   { 
//-----------------------------------------------------                  
if (OrderType() == OP_BUY) { 
      if( Stochast_1>75 && Stochast_0<75)     {
           OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); // закрываем позицию
                // return(0); // выходим
                }       
     }  
 //--------------------------------------------------------
if (OrderType() == OP_SELL) { 
      if( Stochast_1<25 && Stochast_0>25)    {
                 OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // закрываем позицию
                // return(0); // выходим
                }       
     }  
 //-------------------------------------------------------                       
    }  // Symbol()  
  } // select
 } //total
} //Close_

2)

Eliminar el bloqueo ( // ) antes de

// return(0); // exit

y entonces sólo se cerraría la primera (o última) posición.

 
PyMbIH >> :

Hola a todos ))))

Ayuda.

Acabo de empezar a programar mql4.

Escribir un asesor experto.

¿Cómo lo hago?

Quiero que mi Asesor Experto trabaje sólo los lunes.

//Открытие и закрытие  позиций только в понедельник  
      if (TimeDayOfWeek(TimeCurrent()) == 1)
         return (0);  
 
rid писал(а) >>

>> Gracias.

 
Vinin >> :

Gracias, Vinin =)

 
rid >> :

Busque en las "Posiciones de cierre". En la señal del indicador".

1) Aproximadamente así -

2)

Eliminar el bloqueo ( // ) antes de

// return(0); // exit

y entonces sólo se cerrarán las primeras posiciones.

¡Gracias, rid!

Me has ayudado mucho, todavía hay gente amable)

Lo tengo todo, voy a leer las cuentas, espero no haberte quitado mucho tiempo)

 

Por favor, ayuda.

Si durante la prueba visual del EA 1.mq4 (adjunto) pongo en un gráfico el indicador 3-cci-h3 (adjunto), entonces, como parece, con exactamente los mismos parámetros de las señales cci calculadas del indicador y el cci real (texto del objeto en la esquina superior derecha) no coinciden.

¿POR QUÉ?

¿Por qué no funcionan las alertas en este indicador?

Código de asesor experto:

double lasthigh, lastlow, lasthigh2=200000, lastlow2=0, lastpos=0, t[2];

int start()
{Comment("");
lasthigh=High[1]; lastlow=Low[1];
if( lasthigh< lasthigh2) lasthigh2= lasthigh;
if( lastlow> lastlow2) lastlow2= lastlow;
t[0]= lasthigh2;
t[1]= lastlow2;  
string s1="lasthigh2 *** "+DoubleToStr( t[0],5);
string s2="lastlow2 *** "+DoubleToStr( t[1],5);
string str[2];
str[0]= s1;
str[1]= s2;
color col=Lime;
     for(int y=0; y<2; y++)
     {ObjectCreate("textSignal"+ y,OBJ_LABEL,0,0,0,0,0);    
      ObjectSet("textSignal"+ y, OBJPROP_CORNER,1);
      ObjectSet("textSignal"+ y, OBJPROP_XDISTANCE,35-25);
      ObjectSet("textSignal"+ y, OBJPROP_YDISTANCE, y*(20)+20+8);
      ObjectSetText("textSignal"+ y, str[ y],15,"Tahoma", col);
     }
  
  if( lastpos==0){if( lastlow2> lasthigh){
  Comment("PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   PRODAGA!!!",
  "PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   "); lasthigh2=2000000; lastlow2=0; lastpos=1;}}
  else {if( lasthigh2< lastlow){Comment("POKUPKA!!!   POKUPKA!!!   POKUPKA!!!   POKUPKA!!!   POKUPKA!!!   POKUPKA!!!   POKUPKA!!!",
  "   POKUPKA!!!   POKUPKA!!!   POKEPKA!!!   POKEPKA!!!   POKEPKA!!!"); lasthigh2=2000000; lastlow2=0; lastpos=0;}}

}


Código del indicador:

//+------------------------------------------------------------------+
//|                                                     i-3CCI-h.mq4 |
//|                                               johnfantom & KimIV |
//|                                              http://www.kimiv.ru |
//|                                                                  |
//|  02.01.2006  CCI с 3-х ТФ в одном флаконе.                       |
//+------------------------------------------------------------------+
#property copyright "johnfantom & KimIV"
#property link      "http://www.kimiv.ru"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 DodgerBlue
#property indicator_maximum 1.4
#property indicator_level1  0
#property indicator_minimum -1.2

//------- Внешние параметры индикатора -------------------------------
extern int CCI_Period_0 = 14;     // Период CCI для текущего ТФ
extern int Level_0      = 100;    // Уровень CCI для текущего ТФ
extern int TF_1         = 60;     // Количество минут первого ТФ
extern int CCI_Period_1 = 14;     // Период CCI для первого ТФ
extern int Level_1      = 100;    // Уровень CCI для первого ТФ
extern int TF_2         = 240;    // Количество минут второго ТФ
extern int CCI_Period_2 = 14;     // Период CCI для второго ТФ
extern int Level_2      = 100;    // Уровень CCI для второго ТФ
extern int NumberOfBars = 1000;  // Количество баров обсчёта (0-все)
extern int ExtBars=3; 
int per;


//------- Буферы индикатора ------------------------------------------
double buf0[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void init() {
  IndicatorDigits(1);

  SetIndexBuffer(0, buf0);
  SetIndexLabel (0, "i-3CCI-h");
  SetIndexStyle (0, DRAW_HISTOGRAM, STYLE_SOLID, 2);
  SetIndexEmptyValue(0, 0);
}

//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
void deinit() {
  Comment("");
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
void start() {
  double cci0, cci1, cci2;
  int    nb1, nb2, count;
  int    LoopBegin, sh;


 	if ( NumberOfBars==0) LoopBegin=Bars-1;
  else LoopBegin= NumberOfBars-1;
  LoopBegin=MathMin(Bars-1, LoopBegin);
  count=IndicatorCounted();
  for ( sh= count; sh>=0; sh--) {
    nb1=iBarShift(NULL, TF_1, Time[ sh+1], False);
    nb2=iBarShift(NULL, TF_2, Time[ sh+1], False);

    cci0=iCCI(NULL, 0   , CCI_Period_0, PRICE_CLOSE, sh+1);
    cci1=iCCI(NULL, TF_1, CCI_Period_1, PRICE_CLOSE, nb1);
    cci2=iCCI(NULL, TF_2, CCI_Period_2, PRICE_CLOSE, nb2);
    
   /* double cci[3];
    cci[0]=cci0;
    cci[1]=cci1;
    cci[2]=cci2;
    string s1="cci-0 *** "+DoubleToStr(cci[0],3);
    string s2="cci-1 *** "+DoubleToStr(cci[1],3);
    string s3="cci-2 *** "+DoubleToStr(cci[2],3);
    string str[3];
    str[0]=s1;
    str[1]=s2;
    str[2]=s3;
    color col=Lime;
     for(int y=0;y<3;y++)
     {ObjectCreate("textSignal"+y,OBJ_LABEL,0,0,0,0,0);    
      ObjectSet("textSignal"+y,OBJPROP_CORNER,1);
      ObjectSet("textSignal"+y,OBJPROP_XDISTANCE,35-25);
      ObjectSet("textSignal"+y,OBJPROP_YDISTANCE,y*(20)+20+8);
      if(cci[y]>=0)col=Lime;else col=Red;
      if(cci[y]>Level_0) col=Aqua;
      if(cci[y]<-Level_0) col=DarkViolet;
      ObjectSetText("textSignal"+y,str[y],15,"Tahoma",col);
     }
*/
    if ( cci0> Level_0 && cci1> Level_1 && cci2> Level_2) { buf0[ sh]=1;
    if ( per != Time[0]) { per = Time[0];
    if( sh<= ExtBars && ExtBars!=-1)
    Alert(Symbol(),Period()," ",
                              TimeYear(Time[ sh]),".",
                              TimeDay(Time[ sh]),".",
                              TimeMonth(Time[ sh]),"; ",
                              TimeHour(Time[ sh]),":",
                              TimeMinute(Time[ sh])," ",
                              "Покупка");}}
    if ( cci0<- Level_0 && cci1<- Level_1 && cci2<- Level_2) { buf0[ sh]=-1;
    if ( per != Time[0]) { per = Time[0];
    if( sh<= ExtBars && ExtBars!=-1)
    Alert(Symbol(),Period()," ",
                              TimeYear(Time[ sh]),".",
                              TimeDay(Time[ sh]),".",
                              TimeMonth(Time[ sh]),"; ",
                              TimeHour(Time[ sh]),":",
                              TimeMinute(Time[ sh])," ",
                              "Продажа");}}
  }
}
//+------------------------------------------------------------------+
 
sergeev >> :

como este para el bystop:




¿Y cómo se fija el pendiente de la propia posición abierta?

 
ArtY0m >> :

¿Cómo se coloca la orden pendiente en sí?

En primer lugar, hay que determinar el precio de apertura de la última posición abierta mediante programación.

Para ello, puede utilizar una función predefinida, por ejemplo

Función PriceOpenLastPos().
Esta función devuelve el precio de apertura de la última posición abierta. La selección de las posiciones a considerar se especifica mediante parámetros externos:
sy - Nombre del instrumento de mercado. Si se establece este parámetro, la función sólo tendrá en cuenta las posiciones del instrumento especificado. El valor por defecto - "" significa cualquier instrumento de mercado. El valor nulo significa el instrumento actual.
op - Operación comercial, tipo de posición. Valores válidos: OP_BUY, OP_SELL o -1. El valor por defecto -1 significa cualquier posición.
mn - Identificador de posición, MagicNumber. El valor por defecto de -1 significa cualquier identificador.
'Funciones útiles de KimIV

//-------

Inserte la función misma al final de su código.

Y lo llamas en la función START y estableces el precio de apertura de la última posición que necesites (compra o venta), por ejemplo.

double OpenPrice=PriceOpenLastPos(NULL,OP_BUY, MAGIC) ;

 
rid >> :

Primero hay que determinar el precio de la última posición abierta de forma programada.

Para ello, puede utilizar una función predefinida, por ejemplo

Función PriceOpenLastPos().
Esta función devuelve el precio de apertura de la última posición abierta. La selección de los puestos a considerar está definida por parámetros externos:
sy - Nombre del instrumento de mercado. Si se establece este parámetro, la función sólo tendrá en cuenta las posiciones del instrumento especificado. El valor por defecto - "" significa cualquier instrumento de mercado. El valor nulo significa el instrumento actual.
op - Operación comercial, tipo de posición. Valores válidos: OP_BUY, OP_SELL o -1. El valor por defecto -1 significa cualquier posición.
mn - Identificador de posición, MagicNumber. El valor por defecto de -1 significa cualquier identificador.

'Funciones útiles de KimIV

//-------

Inserte la función misma al final de su código.

En la función START, la llamas y estableces el precio de apertura de la última posición que quieras (compra o venta), por ejemplo

double OpenPrice=PriceOpenLastPos(NULL,OP_BUY, MAGIC) ;

Muchas gracias))

 

En Indicator, si se cumple una condición, quiero introducir una línea con una nota en un archivo de texto (sin importar la fecha y la hora).

Se crea el archivo y se añade la línea, pero sólo en tiempo real. Yo, en cambio, quiero tomar nota cuando trabaje en la historia. ¿Alguien sabe cómo hacerlo?

Gracias.