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
( Antes de tentar escrever este comentário, acho que pesquisei muito para encontrar uma solução, sim, encontrei fios semelhantes, mas não encontrei solução para esta questão. )
Eu uso o código abaixo para Ordem de Venda que me mostra Stop Loss em pips, ele me mostra o valor correto até quando o Stop Loss se torna Positivo.
Portanto, não tenho idéia de como posso tentar algo para resolver este problema.
Qualquer bom comentário, seria melhor, por favor.
( nota: por enquanto não estou usando o Trailing Stop. Também abaixo do código apenas para atualizações de informações, não para OrderSend() ou coisas similares. )
{
riskinpips=change_to_pips(OrderStopLoss()-OrderOpenPrice());
}
Print("stop loss in pips",DoubleToString(riskinpips,2));
Obrigado de antemão.
( nota: etiquetas de captura de tela feitas por programa de edição de fotos para descrever minha edição )Bem, é o valor mais alto menos o valor mais baixo que lhe dá o resultado para que você possa verificar qual deles é o mais alto
{
// orderstoploss - orderopenprice
}
else if(OrderOpenPrice()>OrderStopLoss())
{
// orderopenprice - orderstoploss
}
Bem, é o valor mais alto menos o valor mais baixo que lhe dá o resultado para que você possa verificar qual deles é o mais alto
{
// orderstoploss - orderopenprice
}
else if(OrderOpenPrice()>OrderStopLoss())
{
// orderopenprice - orderstoploss
}
Eu mesmo rindo que não me importo. Acho que isto poderia me ajudar. Em breve eu vou tentar.
Muito obrigado, Sr. Marco
#Cálculo da moeda de lucro - Fechado
Funciona perfeitamente até o momento.
Muito obrigado @Marco vd Heijden e @whroeder1
#Tempo - Aberto
Desde que comecei a pesquisar sobre Tempo / Relógio para minha EA. Vejo que os autores usam start() JUST em indicador para isso.
Eu uso OnTimer() e OnTick() no meu EA, eu não gostaria de usar start().
Então eu só preciso ter certeza / aprender qual função especial seria melhor para a função Tempo e Relógio?
Continuarei a pesquisar sobre este número 10 horas depois.
( nota: já encontrei poucos indicadores de Tempo e Relógio da página Mql5.com Codebase - mas não gosto de copiar e colar )
Qualquer bom comentário, compartilhamento de fórum, links e outra coisa seria melhor para mim.
Agradecemos antecipadamente.
A função de início é substituída pelo OnStart somente em scripts. Em Expert Advisors e indicadores deve ser renomeada para OnTick e OnCalculate, respectivamente. O código que deve ser executado durante uma operação de programa mql5 deve ser localizado nestas três funções:
Ver: https://www.mql5.com/en/docs/migration
A função de início é substituída pelo OnStart somente em scripts. Em Expert Advisors e indicadores deve ser renomeada para OnTick e OnCalculate, respectivamente. O código que deve ser executado durante uma operação de programa mql5 deve ser localizado nestas três funções:
#Tempo - Aberto
Desde que comecei a pesquisar sobre Tempo / Relógio para minha EA. Vejo que os autores usam start() JUST em indicador para isso.
Eu uso OnTimer() e OnTick() em minha EA, não gostaria de usar start().
Então eu só preciso ter certeza / aprender qual função especial seria melhor para a função Tempo e Relógio?
Continuarei a pesquisar sobre este número 10 horas depois.
( nota: já encontrei poucos indicadores de Tempo e Relógio da página Mql5.com Codebase - mas não gosto de copiar e colar )
Qualquer bom comentário, compartilhamento de fórum, links e outra coisa seria melhor para mim.
Agradecemos antecipadamente.
Use OnTimer().
O uso do TimeLocal() dará uma melhor aparência, mas não será sincronizado com o fuso horário do corretor.
O uso do TimeCurrent() será sincronizado com seu corretor, mas pode atrasar e depois "pular" segundos, dependendo de quando os ticks chegarem. Este exemplo vai destacar o problema:
int OnInit()
{
EventSetTimer(1);
return(INIT_SUCCEEDED);
}
void OnTimer()
{
Comment(StringFormat("%s - Local\n%s - Broker",TimeToString(TimeLocal(),TIME_SECONDS),TimeToString(TimeCurrent(),TIME_SECONDS)));
}
#Tempo - Fechado
Use OnTimer().
O uso do TimeLocal() dará uma melhor aparência, mas não será sincronizado com o fuso horário do corretor.
O uso de TimeCurrent() será sincronizado com seu corretor, mas pode atrasar e depois "pular" segundos, dependendo de quando os ticks chegarem. Este exemplo vai destacar o problema:
int OnInit()
{
EventSetTimer(1);
return(INIT_SUCCEEDED);
}
void OnTimer()
{
Comment(StringFormat("%s - Local\n%s - Broker",TimeToString(TimeLocal(),TIME_SECONDS),TimeToString(TimeCurrent(),TIME_SECONDS)));
}
Fórum sobre comércio, sistemas comerciais automatizados e estratégias comerciais de teste
assessor especializado - perguntas diversas
honest_knave, 2016.11.30 01:28
IMHO seria melhor se você mantivesse todos os seus cálculos de lote juntos, ao invés de dividi-los entre OnChartEvent() e _lotCalc(). Uma função que verifica min / max / step e faz o incremento / decremento.
const long & lparam , // Parameter of type long event
const double & dparam , // Parameter of type double event
const string & sparam // Parameter of type string events
)
{
_lotCalc();
//-------Process Button---------------------------------------------------------|
if ( sparam == _btnLotMinus )
{
ObjectSetInteger( 0, sparam, OBJPROP_STATE, false );
_lotSize = fmax(_lotMin, _lotSize-_lotStep);
_calcUpdade( CALC_CHANGE_LOT );
printf( " | Lot: %.2f ", _lotSize );
return;
} //---if Close
// ...
}
void _lotCalc()
{
//---
_lotMin = SymbolInfoDouble( _Symbol, SYMBOL_VOLUME_MIN );
_lotMax = SymbolInfoDouble( _Symbol, SYMBOL_VOLUME_MAX );
_lotStep = SymbolInfoDouble( _Symbol, SYMBOL_VOLUME_STEP );
//---
}
#Passo de lote - ReOpen
@honest_knave- obrigado por sua maior ajuda sobre Tamanho de Lote e Passo de Lote.
Portanto, eu só preciso melhorar esta parte do código para quando " Lot Size >= ( Lot Step * 100 ) " esse Lot Step aumentar em " Lot Step * 100 ".
if(sparam==lotbuttonplus)
{
if(lotsize>=(lotstep*100))
{
lotstep=lotstep*100;
Print("lot step: ",lotstep);
}
lotmaxdivide=lotmax/lotmax *(lotvalue*10);
lotsize=fmin(lotmaxdivide,lotsize+(( ctrlfalse) ? lotstep*10 : lotstep));
// global variable
infoupdate();
printf("Lot: %.2f ",lotsize);
ObjectSetInteger(0,sparam,OBJPROP_STATE,false);
return;
}
Obrigado antecipadamente.