Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1598
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
apenas para acrescentar, NÃO É GARANTIDO que o terminal tenha e venha a ter histórico suficiente.
no exemplo acima não há nenhuma referência à história
portanto, é garantido que o resultado da OrderSelect() é verdadeiro
UPD: OrderSelect em 4 funciona muito bem, testado uma vez - para ordens de mercado o tempo de acesso às propriedades do pedido.... é realmente milhões de vezes por segundo, eu não quero olhar para cima, eu acho que estava discutindo com o moderador Artem, mas é como se eles dissessem "todas as pontas dos pés diferem", se você gosta, fique com ele
Olá, há uma necessidade de dados sobre o saque de cada transação.
Qualquer pessoa pode encontrar um roteiro para coletar tais estatísticas e produzir na forma de um relatório?
Obrigado
Olá, há uma necessidade de dados sobre o saque de cada transação.
Qualquer pessoa pode encontrar um roteiro para coletar tais estatísticas e produzir na forma de um relatório?
Obrigado
for(int i=OrdersTotal()-1;i>=0;i--) {
if (!OrderSelect(i,SELECT_BY_POSITON,MODE_TRADES)) continue;
double prosad=DBL_MIN;
if (OrderType()!=OP_BUY && OrderType!=OP_SELL) continue;
for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) {
double delta=( OrderType()==OP_BUY? OrderOpenPrice()-iLow(OrderSymbol(),PERIOD_M1,j) : iHigh(OrderSymbol(),PERIOD_M1,j)-OrderOpenPrice() );
delta /= MarketInfo(OrderSymbol(),MODE_POINT);
if (delta>prosad) prosad=delta;
}
PrintFormat("Максимальная просадка по ордеру %d = %d пунктов , %f денег",OrderTicket(),(int)(prosad),prosad*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE);
}
está "escrito à mão", não testado, cheio de erros :-) basta ajustá-lo às suas necessidades e usá-lo
for(int i=OrdersTotal()-1;i>=0;i--) {
if (!OrderSelect(i,SELECT_BY_POSITON,MODE_TRADES)) continue;
double prosad=DBL_MIN;
if (OrderType()!=OP_BUY && OrderType!=OP_SELL) continue;
for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) {
double delta=( OrderType()==OP_BUY? OrderOpenPrice()-iLow(OrderSymbol(),PERIOD_M1,j) : iHigh(OrderSymbol(),PERIOD_M1,j)-OrderOpenPrice() );
delta /= MarketInfo(OrderSymbol(),MODE_POINT);
if (delta>prosad) prosad=delta;
}
PrintFormat("Максимальная просадка по ордеру %d = %d пунктов , %f денег",OrderTicket(),(int)(prosad),prosad*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE);
}
escrito "à mão", não verificado, cheio de erros :-) ajustar-se às suas necessidades e uso
obrigado, vou tentar descobrir!
@Igor Makanu, muito obrigado por suas respostas sobre a classificação de pedidos no terminal. Provavelmente vou salvá-los como um conjunto de estruturas e classificá-los eu mesmo. As dúvidas eram principalmente porque eu temia que tais ações executadas em cada carrapato tivessem um impacto negativo perceptível sobre o desempenho.
Então, por que separar em cada carrapato? Basta apenas quando o número de entradas muda ou a lista muda completamente...
no exemplo acima não há nenhuma referência à história
portanto, é garantido que o resultado da OrderSelect() é verdadeiro
UPD: OrderSelect em 4 funciona muito bem, eu estava testando-o uma vez - para ordens de mercado o tempo de acesso às propriedades do pedido.... é realmente milhões de vezes por segundo, não quero procurar, acho que estava discutindo com o moderador Artem, mas como eles dizem "todas as pontas dos pés são diferentes", eu gosto disso - mantenha-o