assessor especializado - perguntas diversas - página 20

 
#Parar Perdas, Tirar Lucro - Arrastar - Abrir

Desde meu último comentário, iniciei um fórum de pesquisa e artigo para Stop Loss and Take Profit - Object Drags.
Acabo de encontrar apenas este artigo MQL5 COOKBOOK: LIDANDO COM EVENTOS GRÁFICOS TÍPICOS
Mas é para o MT5.

Então, antes de eu começar a ler ou experimentar esse artigo, por favor, me informe se esse artigo seria útil para o MT4...
Também se for possível, por favor, compartilhe comigo um bom artigo para o Objects Drags.

Obrigado de antemão.
 
Sim, o OnChartEvent() é o mesmo para ambos os idiomas.
 
Marco vd Heijden:
Sim, o OnChartEvent() é o mesmo para ambos os idiomas.
É bom saber, posso começar a lê-lo.
Muito obrigado.
 

Também descobri que muitos dos códigos que foram escritos para o MT5 agora também funcionam no MT4.

Sei que, por ter tentado muitas coisas no passado e coisas que não funcionavam há um ano atrás, agora funcionam, o que mostra que eles ainda estão desenvolvendo ativamente ambas as linguagens.

 
Marco vd Heijden:

Também descobri que muitos dos códigos que foram escritos para o MT5 agora também funcionam no MT4.
Sei que, por ter tentado muitas coisas no passado e coisas que não funcionavam há um ano atrás, agora funcionam, o que mostra que eles ainda estão desenvolvendo ativamente ambas as linguagens.

É bom saber disso. Sempre penso ( / preocupo-me ) com isso que a linguagem MT4 não vai usar logo. Obrigado, cara.
 
// I say Once ' Do not turn... ' for ' if ' operator - this is good.
if  ( Morning || Midnight )
{
    // Do not turn on light just for today...
}

// I say Twice ' Do not turn... ' for ' switch ' operator - Q: Can I say ' Once '?
switch ( Today )
{
    case    Morning  :    // Do not turn on light just for today...
    break;
    case    Midnight :    // Do not turn on light just for today...
    break;
}   //---switch Close
Obrigado de antemão.
 

Já li o artigo e verifiquei alguns códigos de outras pessoas para 'CHARTEVENT_OBJECT_DRAG ' que como usar a partir dele.
Mas infelizmente isso não faz sentido para mim. Há pouco, acho que estava perdendo meu tempo com coisas inúteis. Porque o estilo de código deles é realmente diferente do meu.
( meu estilo de código simplesmente simples - como o estilo de código de documentação mql4 - que é o que eu estou entendendo um pouco mais )

Apenas meu propósito quando arrasto o objeto 'Stop Loss, Take Profit, Pending Orders' que poderia se mover com aquele objeto. ( claro que todas elas poderiam ser separadas )

Também fui visto um script EA para modificar pedidos ( sl, tp etc. ) - e funciona sem ' CHARTEVENT_OBJECT_DRAG '... Espero que você saiba o que quero dizer.

Agora, eu realmente preciso de ajuda apenas com um simples exemplo para ' CHARTEVENT_OBJECT_DRAG ' com HLine ou Trendline Object. Ou uma explicação clara ou apenas algo bom ( / mais claramente ) comentário.
Eu já gastei muito tempo e ainda estou pesquisando sobre isso. Espero receber uma resposta em breve.

Tudo de bom para você.
Obrigado de antemão.

 
// I say Once ' Do not turn... ' for ' if ' operator - this is good.
if  ( Morning || Midnight )
{
    // Do not turn on light just for today...
}

Isto será verdade Manhã OU Meia-noite

// I say Twice ' Do not turn... ' for ' switch ' operator - Q: Can I say ' Once '?
switch ( Today )
{
    case    Morning  :    // Do not turn on light just for today...
    break;
    case    Midnight :    // Do not turn on light just for today...
    break;
}   //---switch Close

Isto tem um caso separado para o período da manhã e um caso separado para o da meia-noite.

Portanto, essas são duas coisas diferentes.

Max Enrik:

Já li o artigo e verifiquei alguns códigos de outras pessoas para 'CHARTEVENT_OBJECT_DRAG ' que como usar dele.
Mas infelizmente isso não faz sentido para mim. Há pouco eu acho que estava perdendo meu tempo com coisas inúteis. Porque o estilo de código deles é realmente diferente do meu.
( meu estilo de código simplesmente simples - como o estilo de código de documentação mql4 - que é o que eu estou entendendo um pouco mais )

Apenas meu propósito quando arrasto objeto ' Stop Loss, Take Profit, Pending Orders ' que poderia se mover com aquele objeto. ( claro que todas elas poderiam ser separadas )

Também vi um script EA para modificar ordens ( sl, tp etc. ) - e funciona sem ' CHARTEVENT_OBJECT_DRAG '... Espero que você saiba o que quero dizer.

Agora, eu realmente preciso de ajuda apenas com um simples exemplo para ' CHARTEVENT_OBJECT_DRAG ' com HLine ou Trendline Object. Ou uma explicação clara ou apenas algo bom ( / mais claramente ) comentário.
Eu já gastei muito tempo e ainda estou pesquisando sobre isso. Espero receber uma resposta em breve.

Tudo de bom para você.
Obrigado de antemão.


Você pode arrastar uma linha quando

OBJPROP_SELECTABLE ==1
OBJPROP_SELECTED ==1

Ambos são verdadeiros e você pode simplesmente ler os valores usando {\i1}-

ObjectGet Double(....

Em vez de

ObjectSetDouble(....
Não é tão difícil e pode ser muito útil.
 
Marco vd Heijden:

Quase não fazia idéia de como posso escrever código para Stop Loss and Take Profit Drags quando comecei a fazer isso, graças a muito homem.
Agora sinto que posso fazer o que quero depois de seu grande comentário.

Mercado Fechado

Portanto, eu já tentei e agora posso conseguir ' OBJPROP_PRICE ' qual deles eu quero.
Quando arrasto o objeto ' HLine ' e depois Imprimir() atualizo uma vez de cada vez. Porque eu uso EventSetTimer( 1 ).

Mas eu preciso do Print() não atualizo uma vez por segundo. Eu gostaria de Print() caso atualize depois que eu parar de arrastar.
Se você me entender, por favor, me ajude ou me dê conselhos.

Tudo de bom para você.

 

Assim, você pode armazenar o valor de OBJPROP_PRICE em um duplo e depois compará-los.

Se forem diferentes, você sabe que o arrastamento foi iniciado, e então se forem iguais novamente, você sabe que o arrastamento foi interrompido.

//+------------------------------------------------------------------+
//|                                                   Drag Hline.mq4 |
//|      Copyright 2017, Marco vd Heijden, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Marco vd Heijden, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

double price; // price variable;
bool drag;     // drag flag
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
   EventSetTimer(1);
//--- create Hline
   ObjectCreate(0,"line",OBJ_HLINE,0,0,Ask);
//--- store value
   price=ObjectGetDouble(0,"line",OBJPROP_PRICE,0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   EventKillTimer();

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//--- compare values
   if(price!=ObjectGetDouble(0,"line",OBJPROP_PRICE,0))
     {
      drag=1;                                          // set drag flag
      price=ObjectGetDouble(0,"line",OBJPROP_PRICE,0); //store new value
     }
   if(drag==1)
     {
      if(price==ObjectGetDouble(0,"line",OBJPROP_PRICE,0))
        {
         drag=0; //reset drag flag
         Alert(" New value set: ", DoubleToString(price));
        }
     }
  }
//+------------------------------------------------------------------+

Ou você pode iniciar um contador uma vez que o arrasto tenha sido detectado, há muitas maneiras de fazer isso,

Razão: