Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 155

 
Alexander Antoshkin:

O que você pode...?

Calcule quantos hobbits são necessários para trocar uma lâmpada?

Enviá-lo para freelance? Escrever "leia lá"?

Como encontrar a coordenada de fechamento de séries de pedidos na história como no exemplo (planejo traçar uma linha neste ponto)

Já fiz esta pergunta em 151 páginas deste tópico, mas nenhuma solução plausível foi encontrada. https://www.mql5.com/ru/forum/160683/page151



Você deve procurar por uma série de pedidos com a mesma barra fechada na história. O momento deste bar será aquele que você está procurando.
 
Alexander Antoshkin:

O que você pode...?

Calcule quantos hobbits são necessários para trocar uma lâmpada?

Enviá-lo para freelance? Escrever "leia lá"?

Nós podemos fazer muitas coisas:)

O problema do hobbit não tem solução de tamanho único.

Caso você não tenha entendido, minha resposta foi do mesmo vídeo queVitalie Postolache citou.

Mas falando sério:

Como encontrar a coordenada de um negócio fechando uma série de ordens na história como no exemplo (planejo traçar uma linha neste ponto)

Já fiz esta pergunta em 151 páginas deste tópico, mas nenhuma solução foi encontrada. https://www.mql5.com/ru/forum/160683/page151

Eu não li o ramo pelo link. Mas seria assim:

Determinar o fato do fechamento de várias ordens (um ou diferentes tipos) dentro de X pontos (o intervalo de X pontos é necessário porque na realidade todos os negócios podem não fechar pelo mesmo preço), determinar o preço médio de fechamento e traçar uma linha por ele.

 
Artyom Trishkin:
Procure no histórico uma série de pedidos com a mesma barra de fechamento. O momento deste bar será aquele que você está procurando.
Este é o mesmo problema que meu método de solução: dependendo do ping e do número de ordens, todas as negociações na mesma vela podem não fechar...
 
Alexey Kozitsyn:
Este é o mesmo problema do meu método de solução: dependendo dos pings e do número de ordens, todas as negociações na mesma vela podem não fechar...
Para M1 eu concordo. Para outros, é improvável. A menos que uma ordem próxima chegue antes da abertura da vela. Haverá dois conjuntos de pedidos. Pegue o último de dois adjacentes.
 
Artyom Trishkin:
Para M1 eu concordo. Para outros, é improvável. Se apenas antes da abertura de um candelabro foi recebida uma ordem de fechamento. Haverá dois conjuntos de pedidos. Pegue o último de dois adjacentes.

Poucos dados foram fornecidos aqui para decidir: várias embalagens podem ser fechadas na mesma vela (se você verificar, digamos, velas de hora em hora ou velas diárias).

 
Vitalie Postolache:


Quero linhas vermelhas paralelas, mas quero que elas se cruzem, e quero que três delas sejam verdes e o resto seja roxo ))))

Ah, sim, e aquela linha reta na forma de um gatinho!

O problema parece errado para você?

 
Alexey Kozitsyn:

Não há dados suficientes para decidir: várias embalagens podem ser fechadas na mesma vela (se você verificar, digamos, a hora ou as velas diárias).

Em qualquer caso, quanto mais preciso, melhor ...

os pedidos são fechados de acordo com a condição de trailing stop sem perda

ou seja

if(b+s>0)
{
for(i=0; i<OrdersTotal(); i+++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && Magic===OrderMagicNumber())
{
dica = OrderType();
OSL = NormalizeDouble(OrderStopLoss(),Digits);
OTP = NormalizeDouble(OrderTakeProfit(),Digits);
OOP = NormalizeDouble(OrderOpenPrice(),Digits);
SL=OSL;
if(tip===OP_BUY)
{
SL=NormalizeDouble(Bid-TrailingStop*Point,Dígitos);
if(SL>OSL && SL>NLb)
{
se(!OrderModify(OrderTicket(),OOP,SL,0,0,White)) Print("Error Order Modify ",GetLastError());
}
}
if(tip===OP_SELL )
{
SL=NormalizeDouble(Ask+TrailingStop*Point,Digits);
if((SL<OSL ||| OSL==0) && SL<NLs)
{
if(!OrderModify(OrderTicket(),OOP,SL,0,0,White)) Imprimir("Error Order Modify ",GetLastError());
}

 
Alexey Kozitsyn:
Escreva seu próprio indicador de MA, que incluiria um buffer adicional no qual os valores são inseridos quando uma nova barra é formada.

Gostaria de discutir um algoritmo para resolver o problema, inclusive para diferentes métodos demédia móvel.

 
Alexey Kozitsyn:

Nós podemos fazer muitas coisas:)

Determinar o fato de fechar várias ordens (do mesmo tipo ou de tipos diferentes) dentro de X pontos (o intervalo de X pontos é necessário porque na realidade todos os negócios podem não fechar pelo mesmo preço), determinar o preço médio de fechamento e traçar uma linha por ele.

int TotalPos=-1;

void start()
{
  if(OrdersTotal()!=TotalPos) { // не мучаем каждый тик
   for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
    if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
     if(OrderSymbol()==Symbol() && OrderType()<=1) {
      History();
     }
  }}} TotalPos=OrdersTotal(); // запомним количество
//--
} 
 
 void History() {
  string Ticket=(string)OrderTicket();
  color col=Red;
  if(OrderType()==0)col=Blue;
  datetime a=OrderOpenTime();
  double b=OrderOpenPrice();
  datetime c=OrderCloseTime();
  double d=OrderClosePrice();
  double prSep=OrderProfit()+OrderCommission()+OrderSwap();
  double prAll=0;
  int    cn=0;
  string hTicket;
   for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
    if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
     if(OrderSymbol()==Symbol() && OrderType()<=1) {
      datetime ct=OrderCloseTime();
      // 60 секунд разницы между закрытием первой и последней в сетке
      if(c<=ct+60 && c>=ct-60) {
        prAll+=OrderProfit()+OrderCommission()+OrderSwap();
        hTicket=(string)OrderTicket();
        cn++;
      }
   }}}
   ObjectCreate(Ticket+'Open',OBJ_ARROW,0,a,b);
   ObjectSet(Ticket+'Open',OBJPROP_COLOR,col);
   ObjectSet(Ticket+'Open',OBJPROP_ARROWCODE,1);
      
   ObjectCreate(Ticket+'Line',OBJ_TREND,0,a,b,c,d);
   ObjectSet(Ticket+'Line',OBJPROP_COLOR,col);
   ObjectSet(Ticket+'Line',OBJPROP_WIDTH,1);
   ObjectSet(Ticket+'Line',OBJPROP_STYLE,STYLE_DOT);
   ObjectSet(Ticket+'Line',OBJPROP_RAY,0);
      
   ObjectCreate(Ticket+'Close',OBJ_ARROW,0,c,d);
   ObjectSet(Ticket+'Close',OBJPROP_COLOR,Green);
   ObjectSet(Ticket+'Close',OBJPROP_ARROWCODE,3);
  
   Ticket=cn>1?hTicket:Ticket;
   ObjectCreate(Ticket+'Profit',OBJ_TEXT,0,c,d);
   ObjectSet(Ticket+'Profit',OBJPROP_ANCHOR,0);
   ObjectSetText(Ticket+'Profit',DoubleToString(prAll,2),10,'Arial',White);
   ObjectSet(Ticket+'Profit',OBJPROP_PRICE1,d);
   ObjectSet(Ticket+'Profit',OBJPROP_TIME1,c+Period()*60*2);

isto deve ser adicionado ao roteiro ...

Levando em conta o fato de que se uma série de ordens de venda forem fechadas

ObjectCreate(Ticket+'Debt B',OBJ_HLINE,0,0,d);
ObjectSet(Ticket+'Debt B',OBJPROP_COLOR,LimeGreen);
ObjectSet(Ticket+'Debt B',OBJPROP_WIDTH,1);

se uma série de ordens de compra for fechada

ObjectCreate(Ticket+'Debt M',OBJ_HLINE,0,0,d);
ObjectSet(Ticket+'Debt M',OBJPROP_COLOR,Red);
ObjectSet(Ticket+'Debt M',OBJPROP_WIDTH,1);

Você pode ajudar?
 
-Aleks-:

Gostaria de discutir um algoritmo para lidar com a questão, inclusive para diferentes métodos demédia móvel.

Dê uma olhada no arquivo MovingAverages.mqh na pasta Include of the terminal.
Razão: