Input colocado manualmente virar uma linha horizontal ?

 

Prezados,

Tenho um valor Input X ((no mini índice seria por exemplo X = 92500 (só um exemplo))). Este valor eu digito nos parâmetros do EA-teste que estou estudando em conta Demo

Toda vez que o preço atual cruza este valor X para cima abre de imediato uma compra, quando cruza para baixo fecha a compra e abre uma venda, e vice-versa

Toda vez que eu quero um novo valor X tenho que abrir o EA digitar clicar em OK duas vezes, etc. É chato


= Queria um bloco lógico que ao inserir no código o Input X aparecesse no gráfico em forma de uma linha horizontal, e se eu mover esta linha, ao soltá-la num determinado valor, o Input X assumiria de imediato este novo valor.


Como seria esse tal bloco lógico ?

 
sergiomt:

Prezados,

Tenho um valor Input X ((no mini índice seria por exemplo X = 92500 (só um exemplo))). Este valor eu digito nos parâmetros do EA-teste que estou estudando em conta Demo

Toda vez que o preço atual cruza este valor X para cima abre de imediato uma compra, quando cruza para baixo fecha a compra e abre uma venda, e vice-versa

Toda vez que eu quero um novo valor X tenho que abrir o EA digitar clicar em OK duas vezes, etc. É chato


= Queria um bloco lógico que ao inserir no código o Input X aparecesse no gráfico em forma de uma linha horizontal, e se eu mover esta linha, ao soltá-la num determinado valor, o Input X assumiria de imediato este novo valor.


Como seria esse tal bloco lógico ?

Tem que programar pra C@cete... não é trivial... Como tudo mo MT5/MQL5

;)

 

Blz Flávio, agradeço d+ pela resposta tão direta (e sincera). Deixarei a linha horizontal para um futuro...

Há uma outra utilidade que não sei se é fácil mas que ajudaria nos meus estudos, que seria a seguinte:

Eu tenho um input <ValorX>, quando o preço BID (passei a usar BID e não mais Current) está maior que ValorX abre compra, menor abre venda

Quando ele fica indeciso faz muitas viradas de mão gerando vários loss mas trata-se apenas de um estudo em conta demo

Tem stoploss (SL) e take profit (TP), tudo padrão igual aos códigos que constam na biblioteca aqui da MQL5, sem nenhum "algo a mais" nem personalização

O que eu gostaria é que quando a ordem fechasse por ter atingido SL ou TP o ValorX mudasse a passasse a ser imediatamente igual ao preço BID

Exemplo: Digamos que valorX é 96000. SL é 95000 e TP é 96500

Quando numa compra fechar porque o preço chegou no TP (96500) se o próximo BID for 96505 (ou 95995) este passará a ser o novo ValorX. O mesmo ocorre se o preço cair e bater no SL (95000). Ou vice-versa no caso de ser uma venda.

Uma vez mudado e agora sendo um novo valor (não mais aquele digitado no Input), a lógica continua, ou seja, se preço BID for maior que este novo valorX compra, se for menor, vende.

Algo assim:


if (ValorX=sl || ValorX=tp)

ValorX=( _Symbol , SYMBOL_BID);


rs, totalmente leigo. Quis codificar isso => Se ValorX for igual ao stoploss (SL) ou (I I) igual ao takeprofit (TP), então ValorX passa a ser igual ao preçoBID do simbolo em questão


BOM DIA (a todos)

 

RESOLVI

Acrescentei ao código o bloco abaixo:



//+------------------------------------------------------------------+

//| TradeTransaction function                                        |

//+------------------------------------------------------------------+

void OnTradeTransaction(const MqlTradeTransaction &trans,

                        const MqlTradeRequest &request,

                        const MqlTradeResult &result)

  {

//--- get transaction type as enumeration value 

   ENUM_TRADE_TRANSACTION_TYPE type=trans.type;

//--- if transaction is result of addition of the transaction in history

   if(type==TRADE_TRANSACTION_DEAL_ADD)

     {

      long     deal_entry        =0;

      double   deal_profit       =0.0;

      double   deal_volume       =0.0;

      string   deal_symbol       ="";

      long     deal_magic        =0;

      long     deal_reason       =-1;

      if(HistoryDealSelect(trans.deal))

        {

         deal_entry=HistoryDealGetInteger(trans.deal,DEAL_ENTRY);

         deal_profit=HistoryDealGetDouble(trans.deal,DEAL_PROFIT);

         deal_volume=HistoryDealGetDouble(trans.deal,DEAL_VOLUME);

         deal_symbol=HistoryDealGetString(trans.deal,DEAL_SYMBOL);

         deal_magic=HistoryDealGetInteger(trans.deal,DEAL_MAGIC);

         deal_reason=HistoryDealGetInteger(trans.deal,DEAL_REASON);

        }

      else

         return;


      if(deal_symbol==m_symbol.Name() && deal_magic==m_magic)

         if(deal_entry==DEAL_ENTRY_OUT)

           {

            if(deal_reason==DEAL_REASON_SL)

               ExtValorX=m_position.PriceCurrent();

            else if(deal_reason==DEAL_REASON_TP)

               ExtValorX=m_position.PriceCurrent();

           }

     }

  }

/