[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 417

 

¿Se puede hacer un robot para abrir en ambos sentidos con pequeños stops con lotes y elegir una posición ganadora? ¿O es una fantasía?

 

Bien con el color...

La pregunta es - Quiero "ocultar SL" de DM, es decir, no quiero que se establezca con el operador de apertura, sino asignarlo a la variable dentro de experto:

extern double TrailingStop=25,0;

extern double Lots=0.1;

....
doble StopB;

.....

if( condición de entrada) {

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0, "Buy EA",123,0,Green);
StopB=Ask-TrailingStop*Lots; /ocultar
el stop < - ¿lo estoy haciendo bien?

}

.....

if( profit exit conditions || Ask > StopB)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //
cerrar posición
return(0); // salir
}

¿Y dónde escribimos la condición de salida de SL? ¿Junto con la condición de cierre de beneficios utilizando "||" o por separado?

 

Buen día, por favor, aconséjenme como usar la función iCustom correctamente, quiero crear condiciones para las operaciones por el color del indicador, que se dibuja en una ventana de histograma separada:

color Oct_1=iCustom(NULL,0, "octava_1");

si ( Oct_1==Verde).... etc.

Al compilar el programa da un error, dice "'verde' - variable no definida, ¿cuál es la razón?

Estaría muy agradecido por una respuesta)))

 

Pregunta eliminada, la letra mayúscula tiene un significado))))

 
DOCTORS:

Bien con el color...

La pregunta es - Quiero "ocultar SL" de las empresas de corretaje, es decir, no quiero establecerlos con el operador de apertura, pero asignarlos a la variable dentro de experto:

extern double TrailingStop=25,0;

extern double Lots=0.1;

....
doble StopB;

.....

if( condición de entrada) {

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0, "Buy EA",123,0,Green);
StopB=Ask-TrailingStop*Lots; /ocultar
el stop < - ¿lo estoy haciendo bien?

}

.....

if( profit exit conditions || Ask > StopB)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //
cerrar posición
return(0); // salir
}

¿Y dónde escribimos la condición de salida de SL? ¿Junto con la condición de cierre de beneficios utilizando "||" o por separado?

No soy un profesional, pero me preguntaba lo mismo. Personalmente lo escribí así (los profesionales me corregirán cuando vengan)

Esta parte recoge una orden abierta y asigna valores de stop y take a las variables

// +----------------------------------------------------------------------+
//------- : функция поиска открытых ордеров по символу графика, подхват и установки уровней стопа и профита
double TradeSymbol()
   {
   int    TotalTradeSymbol = 0;
   int    SendGo           = 0;
   total=OrdersTotal();  
   for(cnt=0;cnt<total;cnt++)
      {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
        {
        if(OrderType()== OP_BUY)
          {
          if(StopLoss   > 0 && Bid < OrderOpenPrice()) {sl = NormalizeDouble(OrderOpenPrice() - StopLoss*Point, Digits);}  
          if(TakeProfit > 0)                           {tp = NormalizeDouble(OrderOpenPrice() + TakeProfit*Point, Digits);}
          }
        if(OrderType()== OP_SELL)
          {
          if(StopLoss   > 0 && Ask > OrderOpenPrice()) {sl = NormalizeDouble(OrderOpenPrice() + StopLoss*Point, Digits);}  
          if(TakeProfit > 0)                           {tp = NormalizeDouble(OrderOpenPrice() - TakeProfit*Point, Digits);} 
          }
        if(OrderStopLoss()   != sl){SendGo++;}
        if(OrderTakeProfit() != tp){SendGo++;}
        if(!UseVirtualTradeLevel && SendGo != 0) {OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,0,CLR_NONE);}
        TotalTradeSymbol++;
        }
      }
    return(TotalTradeSymbol);  
    }
// +----------------------------------------------------------------------+

esta parte comprueba y cierra en la toma

// +----------------------------------------------------------------------+
//------- : функция проверки тейкпрофита
void CheckTakeProfit()
   {
   if(tp == 0)return(0);
   total=OrdersTotal();  
   for(cnt=0;cnt<total;cnt++)
      {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
        {
        if(OrderType()== OP_BUY)
          {
          if(Bid > tp)
            {
            OrderClose(OrderTicket(), OrderLots(), Bid, SleepPage, Lime);
            if(UseSound)PlaySound("ok.wav");
            }
          }
        if(OrderType()== OP_SELL)
          {
          if(Ask < tp)
            {
            OrderClose(OrderTicket(), OrderLots(), Ask, SleepPage, Lime);
            if(UseSound)PlaySound("ok.wav");
            }
          }
        }
      }
    }
// +----------------------------------------------------------------------+

esta parte comprueba y cierra en la parada

// +----------------------------------------------------------------------+
//------- : функция проверки стоплоса
void CheckStopLoss()
   {
   if(sl == 0)return(0);
   total=OrdersTotal();  
   for(cnt=0;cnt<total;cnt++)
      {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
        {
        if(OrderType()== OP_BUY)
          {
          if(Bid < sl)
            {
            OrderClose(OrderTicket(), OrderLots(), Bid, SleepPage, Blue);
            if(UseSound)PlaySound("ok.wav");
            }
          }
        if(OrderType()== OP_SELL)
          {
          if(Ask > sl)
            {
            OrderClose(OrderTicket(), OrderLots(), Ask, SleepPage, Blue);
            if(UseSound)PlaySound("ok.wav");
            }
          }
        }
      }
    }
// +----------------------------------------------------------------------+
P.D.

Profesionales - no se burlen de los autodidactas, tal vez podría ser diferente, pero a mí me funciona ....

 
elmucon:

No soy un profesional, pero me preguntaba lo mismo. Personalmente lo escribí así (si eres un profesional, corrígeme)

Esta parte recoge una orden abierta y asigna valores de stop y take a las variables

esta parte comprueba y cierra en la toma

esta parte comprueba y cierra en la parada

P.D.

Profesionales - no se burlen de los autodidactas, tal vez podría ser diferente, pero a mí me funciona ....

¡Todo está prácticamente bien! Lo único es que hay un par de rarezas en la entrada/salida. Bueno, y tal estrategia no salva del deslizamiento. ¡Pero muchas gracias!
 

¿Puede decirme cómo determinar el plazo actual del EA?

Si el plazo es M1, tengo que cumplir una condición, y si el plazo es M5, tengo que cumplir otra condición.

 
sss2019:

¿Cómo puedo determinar el plazo actual del EA?

Si el plazo es M1, tengo que cumplir una condición, y si el plazo es M5, tengo que cumplir otra condición.


Uso de la función Period()
 
sss2019:

¿Puede decirme cómo determinar el plazo actual del EA?

Si el plazo es M1, tengo que cumplir una condición, y si el plazo es M5, tengo que cumplir otra condición.

if (Period()==1) return; //Условие минуток
if (Period()==5) bool working=true; //Условие пятиминуток
 
splxgf:


Gracias. Así que el periodo M1 corresponde al valor 1, y el periodo M5 corresponde al valor 5, por lo que resulta que el periodo H1 corresponde a 60, y el periodo H4 a 240 ¿verdad?

Necesito que funcione esta construcción: cuando se selecciona el periodo M1 caso 1 y cuando se selecciona el periodo M15 caso 15. ¿Funcionará, o es necesario hacer el caso 1 el caso 2 el caso 3 - en orden?

  switch(Period())
    {
    case 1 : Ba = 60;
    case 5 : Ba = 12;
    case 15 : Ba = 4;
    case 30 : Ba = 2;
    case 60 : Ba = 1;
    }