[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 387

 
biragr:

Obrigado por sua atenção, mas não entendo sua pergunta. Você pode definir a linha para qualquer data, e quando o gráfico chegar a ela, a EA irá acionar? Ou talvez eu não entenda algo, se você não se importa em explicar.
Ok, você definiu a linha no gráfico diário. E se estiver no relógio? A hora de abertura do pedido será definida pela linha ou estritamente definida? Você precisa definir o cronograma para um mês com linhas ou um Expert Advisor está seguindo meu link o suficiente?
 
kolyango:

Ajude, por favor! O indicador https://www.mql5.com/ru/code/10067 precisa ser convertido em uma simples EA de trabalho (como exemplo). Prinzip of action:

No par sobre o qual o EA será lançado, assim que o valor for igual a 0,9570, abra uma ordem de mercado para vender 0,1 lote com um número majestoso (para que os EA em janelas diferentes não confundam as ordens), Stop-Loss 100p, Take-Profit 200p.

Profissionais, não podemos passar sem vocês!



Ajude um iniciante!
 

kolyango:

No par sobre o qual o EA será lançado, assim que o valor for igual a 0,9570, abra uma ordem de mercado para vender 0,1 lote com um número majestoso (para que os EA em janelas diferentes não confundam as ordens), Stop-Loss 100p, Take-Profit 200p.

Ajuda para um iniciante!
Qual é o objetivo de se escrever uma EA única? Coloque uma ordem pendente e ela funcionará da maneira que você quiser. E estabelecer EAs sobre as majors, porque a pausa terá zero majors.
 
Reshetov:
Qual é o objetivo de se escrever uma EA única? Faça uma pausa e ela se desencadeará da maneira que você quiser. E configurar os EAs para as majors, porque a pausa terá zero majors.

Preciso descobrir como fazer isso com um indicador.
 

qual é o problema? O problema é que a ordem nem sempre abre quando a linha é atravessada, ou seja, às vezes abre e às vezes não... Embora funcione com o mesmo princípio...

//+------------------------------------------------------------------+
//|                                                      Вайкофф.mq4 |
//|                                                   Sergey Kodolov |
//|                                              84232676421@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Sergey Kodolov"
#property link      "84232676421@mail.ru"



int total,sum,sumr;  
datetime TimeBarH, TimeBarL;

int Crossed (double nach, double kon, double cenaniz, double cenaverh)
{
   static int last_dir = 0;
   static int cur_dir = 0;
   
   if(nach<cenaverh && kon>cenaverh)cur_dir=1;
   if(nach>cenaniz && kon<cenaniz)cur_dir=2;
   
   if(cur_dir != last_dir)
   {
      last_dir=cur_dir;
      return(last_dir);
   }
   else
      return(0);
}


  
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }

  
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
                     
bool NewBar = New(); //работаем только с нового бара

int volot = volotilnost(NewBar); //определяем волотильность
Hfr(NewBar,volot); //определяем фрактал верхний
Lfr(NewBar,volot); //определяем фрактал нижний

      double BuyLine, SellLine;
   
      BuyLine = ObjectGet("upline",OBJPROP_PRICE1);
      SellLine = ObjectGet("downline",OBJPROP_PRICE1);

int isCrossed = Crossed(Open[0],Bid,SellLine,BuyLine); //говорит о пересечении баром линии
OrderOpenFunction(isCrossed);



//----
   return(0);
  }
//+------------------------------------------------------------------+


bool New()
{
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   //Print("lastbar = ",lastbar," curbar = ",curbar);
   if(lastbar!=curbar)
   {
      lastbar = curbar;
      //Print("ypa");
      return(true);
   }
   else
      return(false);
}

int volotilnost (bool NewBar)
{
   if(NewBar == true)
   {
      for(int i=0;i<=kolbar;i++)
      {
         sum = sum + MathAbs(High[i]-Low[i])*1000;
         //Print(sum);
      }
      sumr = sum/kolbar;
      Print(sumr);
      return(sumr);
   }   
}

void Hfr(bool NewBar, int volot)
{
   if(NewBar == true)
   {
      if(volot > kolbarv)
      {
         if(iHigh(Symbol(),TF,5)<iHigh(Symbol(),TF,4))
         {
            if(iHigh(Symbol(),TF,4)<iHigh(Symbol(),TF,3))
            {
               if(iHigh(Symbol(),TF,2)<iHigh(Symbol(),TF,3))
               {
                  if(iHigh(Symbol(),TF,1)<iHigh(Symbol(),TF,2))
                  {
                     ObjectDelete("upline");
                     ObjectCreate("upline",OBJ_HLINE,0,0,(iHigh(Symbol(),TF,3)));
                     TimeBarH = iTime(Symbol(),TF,3);
                  }
               }
            }
         }
      }   
   }   
}
         

void Lfr(bool NewBar, int volot)
{
   if(NewBar == true)
   {
      if(volot > kolbarv)
      {
         if(iLow(Symbol(),TF,5)>iLow(Symbol(),TF,4))
         {
            if(iLow(Symbol(),TF,4)>iLow(Symbol(),TF,3))
            {
               if(iLow(Symbol(),TF,2)>iLow(Symbol(),TF,3))
               {
                  if(iLow(Symbol(),TF,1)>iLow(Symbol(),TF,2))
                  {
                     ObjectDelete("downline");
                     ObjectCreate("downline",OBJ_HLINE,0,0,(iLow(Symbol(),TF,3)));
                     TimeBarL = iTime(Symbol(),TF,3);
                  }
               }
            }
         }
      }   
   }   
}

void OrderOpenFunction(int isCrossed)
{
   total = OrdersTotal();
   if(total<1)
   {
      if(isCrossed == 1)
      {
         OrderSend(Symbol(),OP_BUY,lots,Ask,slip,Bid-TS*Point,Bid+TP*Point,"Покупка",Magic,0,Green);
      }
      if(isCrossed == 2)
      {
         OrderSend(Symbol(),OP_SELL,lots,Bid,slip,Ask+TS*Point,Ask-TP*Point,"Продажа",Magic,0,Red);
      }
   }   
}
Acho que o erro está em isCrossed, mas não consigo encontrá-lo lá... Apaguei alguma parte do código (onde guardo alguns dados em arrays), porque sobrecarrega o código, mas se precisar dele, também ficarei feliz em compartilhá-lo com você
 
Boa noite! Coloquei um pedido de bylimit pendente, sem parada, erro 130 !!!! O que pode ser? Ou estou fazendo asneira de novo? Por favor, me aconselhem!
 

Olá.

Você pode me dizer como descrever o cruzamento da linha principal e a linha de sinal do estocástico?

 

Algo como isto, em minha mente

F=iStochastic( Symbol(), 0, 5, 3, 3, MODE_SMA, 1,MODE_MAIN , 0) ;
   SIGNAL=iStochastic( Symbol(), 0, 5, 3, 3, MODE_SMA, 1,MODE_SIGNAL , 0) ;
   if (F==SIGNAL) {Урра!!!!; }
 

mais uma pergunta, por que o programa diz que esse objeto existe, quando na verdade ele não existe (eu apenas olho para o monitor e não vejo o objeto claramente)

void DrawLines()
{
   ObjectCreate("line1",OBJ_TREND,0,ArrayH[1],iHigh(Symbol(),TF,iBarShift(Symbol(),TF,ArrayH[1])),ArrayH[2],iHigh(Symbol(),TF,iBarShift(Symbol(),TF,ArrayH[2])));
   Print(GetLastError());
}

iBarShift(Símbolo(),TF,ArrayH[1]) - dá o número da barra, eu verifiquei tudo através de Print(). Mas GetLastError me dá erro 4200 - Eu não entendo o que é o que =)

 
kolyango:

Preciso descobrir como fazer isso a partir de um indicador...

Não há como sair do indicador