Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 813

 
WinProject:
Boa noite, poderia me aconselhar, por favor? Estou lendo FileOpen de seu arquivo .csv de texto. Há três valores em cada linha do arquivo, eles são instrumento, data (em ordem decrescente) e preço. Quero receber o comentário do preço na última data (é a primeira linha), mas o arquivo é sempre lido até o final e recebo o comentário do preço mais antigo (da última linha). Como posso obter o valor do preço desde a primeira linha até o comentário sem nenhuma solução?

FileSeek()

Документация по MQL5: Файловые операции
Документация по MQL5: Файловые операции
  • www.mql5.com
Из соображений безопасности в языке MQL5 строго контролируется работа с файлами. Файлы, с которыми проводятся файловые операции средствами языка MQL5, не могут находиться за пределами файловой "песочницы". общая папка всех установленных на компьютере терминалов  – обычно расположена в каталоге C:\Documents and Settings\All Users\Application...
 
Igor Makanu:

Cada corretor tem seus próprios fornecedores de cotações, muitas vezes há vários deles, mais os algoritmos para suavizar as cotações

Se você precisar de carrapatos reais, transfira seu TS para a MQL5 - há testes por carrapatos reais, você economizará tempo ao testar

Conte-nos brevemente sobre os algoritmos de suavização de citações, o que é isso? mql5 permite testar o histórico do TS por carrapatos, ou seja, o resultado será um a um com requotes e lacunas, e há uma oportunidade de realizar um teste em carrapatos levando em conta o Bid Asc, requotes e lacunas?

 
Seric29:

Conte-nos brevemente sobre os algoritmos para suavizar as citações, quais são eles? No mql5 há uma oportunidade de testar o TS no histórico de carrapatos, ou seja, o resultado será um a um levando em conta as requisições e lacunas, e há uma oportunidade de testar em carrapatos levando em conta o Bid Asc, bem como as requisições e lacunas?

todas as informações estão disponíveis publicamente neste fórum, sobre as mensagens administrativas de busca de ticks 6-8 anos atrás

sobre a qualidade dos testes - artigos

 
Alexey Viktorov:

Talvez tente abrir um volume de fechamento oposto e aplicar OrderCloseBy?

Saudações. Você pode me dizer o que estou fazendo de errado?

OrderCloseBy() dá erro 3

3

ERR_INVALID_PARÂMETROS_DE_COMÉRCIO

Parâmetros incorretos

amostra de código

#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict


datetime time; int ticket_buy; int ticket_sell; 
bool open=false; bool close=false;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
ticket_sell=OrderSend(NULL, OP_SELL, 0.1, Bid, 0, 0, 0, "", 0, 0, Red);  

time=TimeCurrent();
//if (Digits() ==3 || Digits()==5) {trailingStep*=10; }
   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {
//---
   
  }
void OnTick(){
if(!open && TimeCurrent()>=time+2600){
   ticket_buy=OrderSend(NULL, OP_BUY, 0.1, Ask, 1, 0, 0, "buy order", 0, 0, Blue);
   open=true;
}
if(!close && TimeCurrent()>=time+3000){
   if(OrderCloseBy(ticket_buy, ticket_sell , Black)){ }
   close=true;
}

}//+------------------------------------------------------------------+
 
Andrey Sokolov:

Saudações. Você poderia me dizer o que estou fazendo de errado?

OrderCloseBy() dá erro 3

3

ERR_INVALID_PARÂMETROS_DE_COMÉRCIO

Parâmetros incorretos

amostra de código

código funciona no testador, arrumarOrderSend(), sem preço normalizado e lote

e a segunda condição - nem todos os corretores permitem o uso do OrderCloseBy() - eu acho que esta é a principal razão do erro

 
Igor Makanu:

o código funciona no testador,

Ele fecha, certo? Que corretor você tem? Eu tenho Alpari.
 
Igor Makanu:

arrumar o OrderSend(), sem preço e lote normalizados


Eu não entendo bem o que normalizar aqui e por quê, quando não há operações matemáticas?
 
Andrey Sokolov:
Não sabe bem o que normalizar aqui e por que quando não há operações matemáticas?

Como você tem que se acostumar a enviar preços normalizados para o servidor, agora o pedido é enviado - amanhã não é, você estará constantemente procurando por seus erros

O que há de complicado nisso? Aqui, copie você mesmo se for complicado:

ticket_sell=OrderSend(_Symbol, OP_SELL, 0.1, Bid,10,
                     NormalizeDouble(0.0,_Digits),NormalizeDouble(0.0,_Digits), "", 0, 0, clrRed);  

operações matemáticas não têm nada a ver com isso, costumava haver um comportamento terminal estranho em novas construções, a todas as perguntas que os desenvolvedores escreviam - escreva seus códigos corretamente - eles estão certos )))

no servidor Metakvot verifique seu código - tudo funciona

SZS: 0 não é 0,0 , então pode não haver um resultado muito bom - também um bom hábito de não procurar por bugs ;)

 
Igor Makanu:

e a segunda condição - nem todos os corretores permitem o uso do OrderCloseBy() - eu acho que esta é a principal razão do erro

Em geral, entendo corretamente que se a Alpari e provavelmente outros não a apóiam, é melhor não usá-la de forma alguma para marcá-la como não funcionando...

 
Andrey Sokolov:

Em geral, estou correto ao assumir que se a Alpari e possivelmente outros não a suportam, é melhor não usá-la de todo, marcá-la como não funcionando?

a função está funcionando

infelizmente, as configurações de cada servidor precisam ser verificadas - há muito poucas soluções universais (os alpares também têm stoplevel = 0, você pode se surpreender com o trailing)

se não estou enganado, no MarketInfo() houve uma solicitação para determinar se um servidor fechará uma posição usando ordem oposta

Razão: