Ola, Gostaria da ajuda de alguma alma caridosa para alterar a formula que fiz abaixo. Do modo como esta quando eu click on chart, uma seta de compra e plotada no grafico no exato ponto do mouse click. Gostaria de altera-la para poder, assim que click no grafico a seta fosse para a minima do candle relativo ao ponto clicado. Eu sei que isso e possivel , so nao faco ideia de como.
Valeu.
Olá Marreta,
por favor tente a abordagem abaixo e nos diga se deu certo.
Abraços,
Malacarne
//--- input string InpName="ArrowBuy"; // Object name //--- MqlRates candle[]; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnInit() { //--- ArraySetAsSeries(candle,true); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- int visibleBars = (int)ChartGetInteger(0,CHART_VISIBLE_BARS,0); //--- CopyRates(_Symbol,_Period,0,visibleBars,candle); //--- string comment="Last event: "; //--- select event on chart switch(id) { //--- 1 case CHARTEVENT_CLICK: { comment+="6) mouse click on chart"; //--- object counter static uint sign_obj_cnt; string buy_sign_name="buy_sign_"+IntegerToString(sign_obj_cnt+1); //--- coordinates int mouse_x=(int)lparam; int mouse_y=(int)dparam; //--- time and price datetime obj_time; double obj_price; int sub_window; //--- convert the X and Y coordinates to the time and price values if(ChartXYToTimePrice(0,mouse_x,mouse_y,sub_window,obj_time,obj_price) ) { //--- int barPos = Bars(_Symbol,_Period,obj_time,TimeCurrent()); //--- create object if(!ObjectCreate(0,buy_sign_name,OBJ_ARROW_BUY,0,obj_time,candle[barPos].low)) //OBJ_ARROW_BUY { Print("Failed to create buy sign!"); return; } } } } //--- Comment(comment); }
Perfeito Malacarne, muito obrigado, voce ve, sem sua ajuda levaria anos para descobrir. Vi muitos exemplos de sistemas nos forums MQL5 em ingles, mas quase nada envolvendo click on chart.
Abusando da sua benevolencia, neste exemplo seria facil adicionar um offset em ticks para que a seta ficasse por exemplo 2 ticks abaixo da minima? Seria usando nShift ?
Valeu!
Perfeito Malacarne, muito obrigado, voce ve, sem sua ajuda levaria anos para descobrir. Vi muitos exemplos de sistemas nos forums MQL5 em ingles, mas quase nada envolvendo click on chart.
Abusando da sua benevolencia, neste exemplo seria facil adicionar um offset em ticks para que a seta ficasse por exemplo 2 ticks abaixo da minima? Seria usando nShift ?
Valeu!
Basta definir a variável global
double tickSize = SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE);
e usar
candle[barPos].low-(2*tickSize)
Abraços,
Malacarne
Maravilha Malacarne, alterei a formula para que ao invez de seta apareca uma linha horizontal.
Agora e que o bixo pega, seria possivel adicionar uma segunda linha com um segundo click no grafico? deixe eu explicar melhor, gostaria de clicar a primeira vez e ter a linha horizontal abaixo da minima do candle relativo ao primeiro click, depois ter uma segunda linha acima da maxima do candle ao clicar uma segunda vez no grafico relativo a este segundo click.
Como seria possivel isto? Teria de armazenar o primeiro click para que no segundo mantivesse a linha horizontal do primeiro?
Segue o codigo ate o presente.
Abraco
Valeu!
//+------------------------------------------------------------------+ //| T6.mq5 | //| Copyright 2014, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2014, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00"// input string InpName="HLineLow"; // Object name //--- MqlRates candle[]; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnInit() { //--- ArraySetAsSeries(candle,true); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- int visibleBars = (int)ChartGetInteger(0,CHART_VISIBLE_BARS,0); //--- CopyRates(_Symbol,_Period,0,visibleBars,candle); //--- double tickSize = SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE); //--- string comment="Last event: "; //--- select event on chart switch(id) { //--- 1 case CHARTEVENT_CLICK: { comment+="6) mouse click on chart"; //--- object counter static uint sign_obj_cnt; string buy_sign_name="buy_sign_"+IntegerToString(sign_obj_cnt+1); //--- coordinates int mouse_x=(int)lparam; int mouse_y=(int)dparam; //--- time and price datetime obj_time; double obj_price; int sub_window; //--- convert the X and Y coordinates to the time and price values if(ChartXYToTimePrice(0,mouse_x,mouse_y,sub_window,obj_time,obj_price) ) { //--- int barPos = Bars(_Symbol,_Period,obj_time,TimeCurrent()); //--- create object if(!ObjectCreate(0,buy_sign_name, OBJ_HLINE,0,obj_time,candle[barPos].low-(20*tickSize))) //OBJ_ARROW_BUY { Print("Failed to create buy sign!"); return; } } } } //--- Comment(comment); }
Maravilha Malacarne, alterei a formula para que ao invez de seta apareca uma linha horizontal.
Agora e que o bixo pega, seria possivel adicionar uma segunda linha com um segundo click no grafico? deixe eu explicar melhor, gostaria de clicar a primeira vez e ter a linha horizontal abaixo da minima do candle relativo ao primeiro click, depois ter uma segunda linha acima da maxima do candle ao clicar uma segunda vez no grafico relativo a este segundo click.
Como seria possivel isto? Teria de armazenar o primeiro click para que no segundo mantivesse a linha horizontal do primeiro?
Segue o codigo ate o presente.
Abraco
Valeu!
Ola Malacarne,
tudo bem..
gostaria de saber se é possivel desenvlover o mesmo programa para utilizar no mt4?
grato
Ruiprado
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Ola, Gostaria da ajuda de alguma alma caridosa para alterar a formula que fiz abaixo. Do modo como esta quando eu click on chart, uma seta de compra e plotada no grafico no exato ponto do mouse click. Gostaria de altera-la para poder, assim que click no grafico a seta fosse para a minima do candle relativo ao ponto clicado. Eu sei que isso e possivel , so nao faco ideia de como.
Valeu.