TAKEPROFIT ou STOPLOSS

 

Pessoal preciso movimentar uma informação enquanto movimento o TP ou o SL nessa foto abaixo estou segurando a linha TP que movimentei para cima, quando eu solto a caixa de texto se movimenta para a nova posição, porem, eu preciso saber o valor enquanto estou movendo o SL ou o TP

Como posso fazer isso ?


meu mouse não apareceu no print...

no lado esquerdo tem algumas informações que se movimenta e se auto edita enquanto movimento as linhas, é isso que eu preciso fazer, como a caixa de texto.

obrigado.

 
zuqueto200:

Pessoal preciso movimentar uma informação enquanto movimento o TP ou o SL nessa foto abaixo estou segurando a linha TP que movimentei para cima, quando eu solto a caixa de texto se movimenta para a nova posição, porem, eu preciso saber o valor enquanto estou movendo o SL ou o TP

Como posso fazer isso ?


meu mouse não apareceu no print...

no lado esquerdo tem algumas informações que se movimenta e se auto edita enquanto movimento as linhas, é isso que eu preciso fazer, como a caixa de texto.

obrigado.

Tudo depende do que exatamente você deseja fazer .... se a ideia é saber qual o VALOR de preço no grafico, você pode fazer assim:

em OnInit adicione a linha:

ChartSetInteger(ChartID(), CHART_EVENT_MOUSE_MOVE, true);

isto fará que que os eventos de movimento do mouse seja capturados, em OnChartEvent você deve filtrar o evento CHARTEVENT_MOUSE_MOVE, desta forma o dparam terá o valor Y então você deverá converter este valor para o preço, usando a função ChartXYToTimePrice, desta forma você tera o preço correspondente onde o mouse está. O código ficaria mais ou menos assim

void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)
  {
        datetime dt;
        int w = 0;
        double price;

        switch(id)
        {

        ... outros eventos ...

                case CHARTEVENT_MOUSE_MOVE:
                        ChartXYToTimePrice(ChartID(), (int)lparam, (int)dparam, w, dt, price); // Price indica onde no grafico o mouse esta ... use isto depois ...
                        break;
        };
  }

talvez seja isto que você queira, mas se o valor financeiro do Stop Loss e Take Profit a coisa irá continuar e irá depender de outras coisas.

Neste caso você terá que fazer alguns calculos, pegue o valor conseguido na função ChartXYToTimePrice e efetue ou uma subtração, do valor onde a ordem será aberta, ou esta aberta, isto irá lhe dar uma quantidade de pontos ou ticks, em alguns casos este é o valor financeiro, mas em outros é preciso fazer uma nova fatoração, multiplicando este valor encontrado por uma constante que varia de ativo para ativo, esta constante é conseguida usando a seguinte formula:

double v1 = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE) / SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE);

tudo que você terá que fazer é multiplicar este valor de v1 pelo valor conseguido do calculo anterior, onde você havia conseguido a quantidade de ticks, assim você terá o financeiro aproximado, mas para deixar o valor finaceiro correto você ainda terá que dividir este ultimo resultado pelo volume que esta sendo negociado, e isto é conseguido pela seguinte formula:

double Volume = nC * SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN);

onde nC é o numero de contratos, ou melhor dizendo o fator de alavancagem da operação, desta forma finalmente você terá o valor financeiro, e ao mover o mouse, este valor será mostrado ....

double vfinanceiro = nTicks * v1 / Volume; // nTicks é conseguido subtraindo a posiçao do mouse com a posição de abertura da posição ...

Creio que seja esta a sua duvida ...😁👍

Razão: