Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
O código abaixo funciona perfeitamente depois que você me ajudou, obrigado homem.
E eu renomeei como você disse, funciona bem, mas só estou me perguntando, estou fazendo algo errado?
( só estou me preocupando)
Preocupar-se se seu código vai funcionar é muito normal (na verdade, é saudável). Frequentemente veremos códigos que compilam mas não fazem o que queremos (por causa de erro humano e/ou falta de conhecimento).
A melhor maneira é adquirir o hábito de imprimir variáveis e verificar códigos de retorno. Uma vez que você tenha testado, você pode remover as declarações de impressão.
Usando seu trecho de código acima, você poderia adicionar uma simples impressão ("valor SL: "+sl") e então verificar seu registro de especialista para ver se os valores são os que você espera.
É simples, se funcionar como projetado, você não faz nada de errado, senão simplesmente não funciona.
#Checkmark - Fechado
Sim! Aceito esta etiqueta de bitmap já demorou muito tempo de minha parte. Finalmente, eu tenho o que quero...
Claro, grande homem, obrigado por sua ajuda.
Eu resolvo meu problema como abaixo do código.
{
// Sell set Stop Loss with bitmap label
// when bitmap label shows - ON
if ( ObjectGetInteger( 0, "bitmap label on off", OBJPROP_STATE ) == true )
{
sl = Bid + points_to_change( stoploss * 10 );
Print( " | TRUE : Active | ", "Bid: ", Bid, " | ", "Stop Loss: ", sl );
}
// when bitmap label shows - OFF
if ( ObjectGetInteger( 0, "bitmap label on off", OBJPROP_STATE ) == false )
{
sl = 0;
Print( " | FALSE : Inactive | ", "Bid: ", Bid, " | ", "Stop Loss: ", sl );
}
// call your stop loss 'sl'
ticket = OrderSend( ..., sl, ... );
// sounds
if ( ticket > 0 )
{ PlaySound( "ok.wav" ); } else
{ PlaySound( "timeout.wav" ); }
return;
}
A melhor maneira é adquirir o hábito de imprimir variáveis e verificar códigos de retorno. Uma vez testados, é possível remover as declarações de impressão.
Usando seu trecho de código acima, você poderia adicionar uma simples impressão ("valor SL: "+sl") e então verificar seu registro de especialista para ver se os valores são os que você espera.
Eu já o uso, mas às vezes duvido do meu código porque se você verificar minhaquestão#Checkmark , espero que você me entenda mais claramente.
De qualquer forma, obrigado pelo seu tempo.
Por que você está se multiplicando por 10? Se o stoploss está em pips, converta-o via pips_to_change para que funcione em corretores de 4 dígitos.
Ah! sim, cara, boa pergunta, eu já mudei. Obrigado por sua atenção.
#Parar Perdas /Tirar Lucro- Fechado
Obrigado por seus comentários mais claros, Marco.
Agradecimentos especiais a @Marco vd HeijdenTudo de bom para você.
#Ctrl + Botão do Mouse - Aberto
Passei poucas horas, como posso encontrar boa documentação sobre isso, e não consigo encontrar nenhuma boa informação e documentação para isso.
Só preciso quando clico em'Rato esquerdo + Ctrl' para aumentar o tamanho do lote em 0,1. ( normalmente aumenta em 0,01 ).
Eu quero encontrar documentação e artigos com exemplos sobre isso.
Obrigado antecipadamente.
#Ctrl + Botão do Mouse - Aberto
Passei poucas horas, como posso encontrar boa documentação sobre isso, e não consigo ter nenhuma boa informação e documentação para isso.
Só preciso quando clico em'Rato esquerdo + Ctrl' para aumentar o tamanho do lote em 0,1. ( normalmente aumenta em 0,01 ).
Eu quero encontrar documentação e artigos com exemplos sobre isso.
Obrigado antecipadamente.
Não sei de uma maneira fácil de apanhar combinações de teclas. Seria melhor ter um segundo botão para clicar se você quiser aumentar em 0,1 em vez de 0,01.
No entanto, você pode tentar o seguinte:
Verifique se o último evento foi uma tecla CTRL.
Se foi, verifique se este evento é um clique do mouse.
Mas, há alguns problemas com esta abordagem:
1. Se qualquer outro evento gráfico acontecer entre o pressionamento de tecla e o clique do mouse, ele falha.
2. Você terá alguma sobrecarga causada pelo atraso entre o clique do mouse e a liberação da CTRL. As soluções para isto introduzirão seus próprios problemas.
Talvez algumas outras pessoas tenham idéias melhores.
const long &lparam,
const double &dparam,
const string &sparam)
{
static bool wasCTRL=false;
if(wasCTRL && id==CHARTEVENT_CLICK) Print("CTRL+CLICK detected");
wasCTRL=(id==CHARTEVENT_KEYDOWN && lparam==CTRL);
}
//| keydown.mq4 |
//| Copyright 2016, Marco vd Heijden, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Marco vd Heijden, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
bool ctrl_click;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- create timer
EventSetTimer(60);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy timer
EventKillTimer();
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
//---
}
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
if(id==CHARTEVENT_CLICK)
{
//Print("CLICK");
ctrl_click=1;
}
if(id==CHARTEVENT_KEYDOWN)
{
//Print(lparam);// print to identify keycode
if(lparam==17) // ctrl key
{
if(ctrl_click==1)// if mouse click
{
//Do Something when CTRL (keycode 17) is pressed
Print("CTRL+CLICK");
ctrl_click=0; // reset
}
}
ctrl_click=0; // reset if not ctrl
}
}
//+------------------------------------------------------------------+
Acho que sim.
É um pouco diferente tho.