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

 
#janela_indicadora de propriedade_separarate_window
#property indicator_buffers 1
#código de propriedade_cores1 azul
//--------------------------------------------------------------------
duplo tampão[];
//--------------------------------------------------------------------
int init()
{
SetIndexStyle(0,DRAW_HISTOGRAM, EMPTY,2);
SetIndexBuffer(0,Buffer;)
retorno(0);
}
// -------------------------------------------------------------------
int deinit()
{
retorno(0);
}
//--------------------------------------------------------------------
int start()
{
int StartBar = Barras - IndicatorCounted() - 1;
for(int i = StartBar; i >= 0; i--)
Buffer[i] =(iClose("EURGBP",0,i)-iOpen("EURGBP",0,i))/MarketInfo("EURGBP",MODE_POINT)+
(iClose("EURAUD",0,i)-iOpen("EURAUD",0,i))/MarketInfo("EURAUD",MODE_POINT);
retorno(0);
}

//---------------------------------------------------------------------

Desculpe, não sei como formatar o texto com código .

Este é um simples contra-indicador ( soma dos corpos de instrumentos em pips sobre o tempo atual ) instrumentos qualquer . Cada barra do histograma começa com "O" e termina no final do período de tempo . Por exemplo, o cronograma atual é H1, às 12h00 mostra "0" e às 13h00 mostra "+20" e o gráfico de barras mostra claramente = +20. Mas durante esta hora as leituras foram -50 e +60, mas o indicador não as mostra, devemos adicionar um buffer para Buffer baixo[i] e um para Buffer alto[i]. Não podemos usar Alto e Baixo porque estes valores vêm em momentos diferentes para cada símbolo escrito no indicador. Quero que o segundo buffer fixe o valor máximo de Buffer[i] do gráfico menor (M5) no gráfico atual (H1), e o terceiro buffer fixe o valor mínimo de Buffer[i] do gráfico menor (M5) no gráfico atual (H1). Caro, quem pode aconselhar o quê?

 
vitek2010:

Desculpe, não sei como codificar o texto.

Não podemos usar Alto e Baixo porque estes valores vêm em momentos diferentes para cada instrumento especificado no indicador.

E fechar para cada instrumento ocorre ao mesmo tempo, durante a vida da vela? Então é uma opinião errada, os carrapatos vêm todos em momentos diferentes))))

 
trader781:
A questão é que SEMPRE haverá perda de pedidos com algum lote que também terá que ser coberto pelo restante dos pedidos. O gatilho é o tempo de fechamento. Se fecharmos mesmo uma, toda a cadeia será perdida. Portanto, a questão é saber como arrasto o preço médio de todos os selecionados.

Portanto, temos que passar por todas as ordens "necessárias" do loop e calcular este preço médio. Então, quando o preço atual se desviar do preço médio calculado na direção necessária, devemos cobrar novamente o laço com a modificação de todos os pedidos.

Se não quisermos ler o preço médio em cada carrapato, podemos lê-lo apenas ao adicionar outro pedido.

 
Alexey Viktorov:

Portanto, temos que passar por todas as ordens "necessárias" do loop e calcular este preço médio. Então, quando o preço atual se desviar do preço médio calculado na direção necessária, devemos cobrar novamente o laço com a modificação de todos os pedidos.

Se não quisermos contar o preço médio em cada tick, só podemos contá-lo ao adicionar outro pedido.

Se você não se importa, basta explicar como posso calcular o preço médio quando a grade de pedidos é distribuída de forma desigual (onde OrderType()<2). Isso é tudo.
 
Vitalie Postolache:

E Fechar para cada instrumento vem ao mesmo tempo, durante a vida da vela? Não estou falando de carrapatos, estou falando de fixar as leituras mínimas e máximas do buffer indicador).

Não estou falando de carrapatos, estava dizendo que deveríamos fixar as leituras mínimas e máximas do buffer indicador calculado em um período menor, na lacuna de um período maior tentarei mostrá-lo na captura de tela:

[img]https://charts.mql5.com/13/642/eurgbp-w1-instaforex-group.png[/img]

Vou considerar a semana 05.12 (cruz vermelha) este gráfico de barras pelo indicador mostrado acima mostra claramente que o movimento total do par no final da semana foi decrescente em 95 pontos, mas não mostra quantos pontos foram decrescentes ou ascendentes durante a semana.

E aqui nesta tela você pode ver a dinâmica deste indicador no gráfico H1 durante esta semana:

[img]https://charts.mql5.com/13/642/eurgbp-h1-instaforex-group.png[/img]

O indicador tinha valor mínimo de 400 e depois subiu para 700 e fechou em 160 (a diferença de números em duas telas não é importante)

preciso de todos esses valores em um indicador em uma barra do histograma e o mínimo, máximo e fechado (neste caso no wiki). idealmente no prazo atual a partir daquele que você especificar nas configurações do cronograma

fiz isso com mt4 insta via cópia do site mcl5

 
trader781:
Se não for difícil, basta explicar como posso calcular o preço médio quando a grade de pedidos é distribuída de forma desigual(onde OrderType()<2). Isso é tudo.

Espero que você consiga descobrir.

for(int i=0; i<OrdersTotal(); i++) {
  if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
   if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic) {
    if(OrderType()==OP_BUY) {
      _BuyProfit+=OrderProfit()+OrderSwap()+OrderCommission(); // совокупный профит  по всем Sell
      _BuyLot+=OrderLots(); //совокупный лот по всем Sell
    }
    if(OrderType()==OP_SELL) {
      _SellProfit+=OrderProfit()+OrderSwap()+OrderCommission(); // совокупный профит  по всем Sell
      _SellLot+=OrderLots(); //совокупный лот по всем Sell
    }
}}}

double TickValue= MarketInfo(_Symbol,MODE_TICKVALUE);

if(_BuyLot  > 0) { BuyAwerage = NormalizeDouble(Bid-(_BuyProfit/(TickValue*_BuyLot))*_Point,_Digits); } else { BuyAwerage=0; }// безубыток buy
if(_SellLot > 0) { SellAwerage= NormalizeDouble(Ask+(_SellProfit/(TickValue*_SellLot))*_Point,_Digits); } else { SellAwerage=0; } // безубыток sell
if(_BuyLot-_SellLot! = 0) { AllAwerage= NormalizeDouble(((_BuyLot>_SellLot)?Bid:Ask)-((_BuyProfit+_SellProfit)/(TickValue*(_BuyLot-_SellLot))*_Point),_Digits); } else { AllAwerage=0; } // общий безубыток
 
Vitaly Muzichenko:

Espero que você pegue o jeito.



double TickValue= MarketInfo(_Symbol,MODE_TICKVALUE);


Podemos falar um pouco sobre este aqui? Eu não entendo o objetivo deste código.
 
trader781:
Podemos falar um pouco sobre isso?

O valor da mudança mínima no preço de um instrumento na moeda do depósito

O valor da tubulação é diferente para cada instrumento e não é igual a "1" como, por exemplo, EUR/USD.

 
Vitaly Muzichenko:

O valor da mudança mínima no preço de um instrumento na moeda do depósito

O valor da tubulação é diferente para cada instrumento e não é igual a "1" como, por exemplo, EUR/USD.

Sim, agora eu vejo

Acontece que você também pode definir uma parada flutuante por exemplo (eqi=balancear*1,1) ou (eqi=balancear*0,9)

existem tais ferramentas?

 
trader781:

Sim, entendi agora.

mas acontece que você também pode definir parada flutuante, por exemplo (eqi=balanço*1,1) ou (eqi=balanço*0,9)

existem tais ferramentas?

Você já tem um preço específico do qual você só precisa arrastá-lo usando o análogo de uma simples rede de arrasto, mas uma simples rede de arrasto é baseada no preço de abertura da posição = OrderOpenPrice() , enquanto aqui ele é baseado no preço médio calculado e modifica todas as posições por um nível