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
@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. Minhas dúvidas foram principalmente porque temia que tais ações executadas em cada carrapato tivessem um impacto negativo perceptível sobre o desempenho.
Janis Ozols: @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
O Moderador Artem não está discutindo. O Moderador Artem está debatendo :)
Por que isCrossing() não retorna 2???? O isCrossing( ) em si tem um segundo se entrada, mas então não há se entrada em OnTick() quando isCrossing() == 2. Que disparate é esse...
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