[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 417

 

Você pode fazer um robô para abrir os dois lados com pequenas paradas com lotes e escolher uma posição vencedora? Ou é uma fantasia?

 

OK com a cor...

A questão é - eu quero "esconder SL" da DM, ou seja, não quero que seja definida com o operador de abertura, mas que seja atribuída a variável dentro do especialista:

TrailingStop duplo externo=25,0;

Lotes duplos externos=0,1;

....
duplo StopB;

.....

if( condição de entrada) {

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,0, "Buy EA",123,0,Green);
StopB=Ask-TrailingStop*Lots; //hide
the stop < - are I doing it right?

}

.....

if( profit exit conditions ||| Ask > StopB)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //
fechar posição
return(0); // sair
}

E onde escrevemos a condição de saída do SL? Juntamente com a condição de fechamento do lucro usando "|||" ou separadamente?

 

Bom dia! Por favor, informe como usar corretamente o iCustom, quero criar condições para as negociações pela cor do indicador, que é desenhada em uma janela de histograma separada:

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

if ( Oct_1==Verde).... etc.

Ao compilar o programa dá um erro, diz "'verde' - variável não definida, qual é a razão?

Eu ficaria muito grato por uma resposta))))

 

Pergunta eliminada, a letra maiúscula tem um significado))))

 
DOCTORS:

OK com a cor...

A questão é - eu quero "esconder SL" da DM, ou seja, não quero que seja definida com o operador de abertura, mas que seja atribuída a variável dentro do especialista:

TrailingStop duplo externo=25,0;

Lotes duplos externos=0,1;


duplo StopB;

.....

if( condição de entrada) {

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,0, "Buy EA",123,0,Green);
StopB=Ask-TrailingStop*Lots; //hide
the stop < - are I doing it right?

}

.....

if( profit exit conditions ||| Ask > StopB)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //
fechar posição
return(0); // sair
}

E onde escrevemos a condição de saída do SL? Juntamente com a condição de fechamento do lucro usando "|||" ou separadamente?

Não sou um profissional, mas estava me perguntando a mesma coisa. Escrevi-o pessoalmente assim (os profissionais me corrigirão quando eles vierem)

Esta parte pega uma ordem em aberto e atribui valores de parada e de tomada a variáveis

// +----------------------------------------------------------------------+
//------- : функция поиска открытых ордеров по символу графика, подхват и установки уровней стопа и профита
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 verifica e fecha na tomada

// +----------------------------------------------------------------------+
//------- : функция проверки тейкпрофита
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 verifica e fecha na 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.S.

Profissionais - não zombem do autodidata, talvez possa ser diferente, mas funciona para mim ....

 
elmucon:

Não sou um profissional, mas estava me perguntando a mesma coisa. Eu pessoalmente escrevi assim (se você é um profissional - me corrija)

Esta parte pega uma ordem em aberto e atribui valores de parada e de tomada a variáveis

esta parte verifica e fecha na tomada

esta parte verifica e fecha na parada

P.S.

Profissionais - não zombem do autodidata, talvez possa ser diferente, mas funciona para mim ....

Tudo está praticamente bem! A única coisa é que há um par de odds na entrada/saída. Bem, e tal estratégia não economiza do escorregamento. Mas muito obrigado!
 

Como posso determinar o cronograma atual da EA?

Se o prazo for M1, preciso cumprir uma condição, e se o prazo for M5, preciso cumprir outra condição.

 
sss2019:

Como posso determinar o cronograma atual da EA?

Se o prazo for M1, preciso cumprir uma condição, e se o prazo for M5, preciso cumprir outra condição.


Usando a função Period()
 
sss2019:

Como posso determinar o cronograma atual da EA?

Se o prazo for M1, preciso cumprir uma condição, e se o prazo for M5, preciso cumprir outra condição.

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


Obrigado. Então, o valor 1 corresponde ao período M1 e o valor 5 corresponde ao período M5, então isso significa que o valor 60 corresponde ao período H1 e o valor 240 corresponde ao período H4, certo?

Eu preciso desta construção para trabalhar: quando o período M1 é selecionado caso 1 e quando o período M15 é selecionado caso 15. Funcionará, ou é necessário fazer o caso 1 caso 2 caso 3 - em ordem?

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