Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 97
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
Boa tarde, senhores!)
Tentando preparar dados para o treinamento de uma rede neural. A tarefa é.
Ter uma matriz, onde por exemplo cada linha (momento de tempo - barra) é um vetor de entrada, e colunas por exemplo 10000. O que fazer se houver dados dinâmicos (número de linhas1, linhas2), e mudança no número em diferentes pontos no tempo.
Por exemplo, uma matriz é carregada em uma rede, cada fila é um vetor de aprendizagem, mas para cada fila, há n número n de filas mudando dinamicamente no tempo.
Uma possível conjectura de solução é adicionar colunas adicionais à matriz igual ao número de colunas na fila dinâmica, acontece que cada vetor terá colunas da denâmica, mas como se fosse de uma fila, apenas prosumed.
por exemplo
1º vetor
1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ... "linha1 dinâmica" 1 1 1 1 1 1
ssssssssssssssssssssssssssssssss "linha2 dinâmica" 1 1 1 1
solução
1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ... "linha1 dinâmica" 2 2 2 2 2 2
Boa tarde, senhores!)
Tentando preparar dados para o treinamento de uma rede neural. A tarefa é.
Ter uma matriz, onde por exemplo cada linha (momento de tempo - barra) é um vetor de entrada, e colunas por exemplo 10000. O que fazer se houver dados dinâmicos (número de linhas1, linhas2), e mudança no número em diferentes pontos no tempo.
Por exemplo, uma matriz é carregada em uma rede, cada fila é um vetor de aprendizagem, mas para cada fila, há n número n de filas mudando dinamicamente no tempo.
Uma possível conjectura de solução é adicionar colunas adicionais à matriz igual ao número de colunas na fila dinâmica, acontece que cada vetor terá colunas da denâmica, mas como se fosse de uma fila, apenas prosumed.
por exemplo
1º vetor
1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ... "linha1 dinâmica" 1 1 1 1 1 1
ssssssssssssssssssssssssssssssss "linha2 dinâmica" 1 1 1 1 1
solução
1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ... "linha1 dinâmica" 2 2 2 2 2 2
https://www.mql5.com/ru/articles/159
Portanto, há a MQL5, como eu a entendo. Ou é idêntico?
Boa tarde. Eu criei um EA, ele funciona bem, mas se eu desligar o terminal com o EA funcionando e voltar a ligar o terminal, o EA começa a contar tudo de novo. Portanto, tenho uma pergunta a fazer. O que eu preciso prescrever no EA, para que ele reinicialize os parâmetros de entrada quando começar?
Boa tarde. Eu criei um EA, ele funciona bem, mas se eu desligar o terminal com o EA funcionando e voltar a ligar o terminal, o EA começa a contar tudo de novo. Portanto, tenho uma pergunta a fazer. O que eu preciso escrever no meu EA, para que ele reinicialize os parâmetros de Entrada quando eu o iniciar?
Saudações. Você pode me dizer o que está errado?
A EA faz pedidos com paradas acima e abaixo do preço. Se um deles aciona, a parada é ajustada se o preço se afastar da parada mais do que o estabelecido, se o preço se mover para a parada então nenhuma mudança.
No início eu escrevi apenas Buy order e funcionou como esperado. Se eu adicionar uma imagem de espelho para venda, as paradas serão corrigidas pelo valor estabelecido, seja qual for o movimento do preço.
Em geral, se separadamente, ou para comprar ou vender - tudo funciona como deveria, mas as duas partes juntas - há um bug.
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
extern double Lot = 0.01;
extern int StopLoss = 50;
extern int Slippage = 5;
extern int Delta = 60;
extern int Delta2 = 170;
extern int Magic = 321;
int ticket;
double price, sl, sl2;
datetime counted_bar = 0;
int OnInit()
{
if (Digits == 3 || Digits == 5)
{
StopLoss *= 10;
Delta *= 10;
Delta2 *= 10;
}
return(INIT_SUCCEEDED);
}
void OnTick() {
////// ПРОДАЖА ///////////////////////////////////////////////////////
if (SellLimitCount()==0 && SellCount()==0)
{
price = NormalizeDouble(Bid - Delta*Point, Digits);
sl = NormalizeDouble(price + StopLoss*Point, Digits);
ticket = OrderSend (Symbol(), OP_SELLSTOP, Lot, price, Slippage, sl, 0, "", Magic, 0, Red);
}
if (SellCount()!=0)
{
if (Bid < (OrderStopLoss() - NormalizeDouble (StopLoss*Point, Digits)))
{
sl = NormalizeDouble (Bid + StopLoss*Point, Digits);
if (OrderModify(ticket, price, sl, 0, 0, Red)) Print ("Sell_Order_Modify_Ok");
else Print ("ERROR_Sell_Order_Modify");
}
}
if (SellLimitCount()!=0)
{
if(Bid > (OrderOpenPrice() + NormalizeDouble (Delta2*Point, Digits)))
{
if (OrderDelete(ticket, Red)) Print ("BuyLimit_Order_Delete_Ok");
else Print ("ERROR_BuyLimit_Odrer_Delete");
}
}
/////////////////////////////////////////////////////////////////////////////////
/////// ПОКУПКА ////////////////////////////////////////////////////////
if (BuyLimitCount()==0 && BuyCount()==0)
{
price = NormalizeDouble(Ask + Delta*Point, Digits);
sl = NormalizeDouble(price - StopLoss*Point, Digits);
ticket = OrderSend (Symbol(), OP_BUYSTOP, Lot, price, Slippage, sl, 0, "", Magic, 0, Blue);
}
if (BuyCount()!=0)
{
if (Ask > (OrderStopLoss() + NormalizeDouble (StopLoss*Point, Digits)))
{
sl = NormalizeDouble (Ask - StopLoss*Point, Digits);
if (OrderModify(ticket, price, sl, 0, 0, Blue)) Print ("Buy_Order_Modify_Ok");
else Print ("ERROR_Buy_Order_Modify");
}
}
if (BuyLimitCount()!=0)
{
if(Ask < (OrderOpenPrice() - NormalizeDouble (Delta2*Point, Digits)))
{
if (OrderDelete(ticket, Blue)) Print ("BuyLimit_Order_Delete_Ok");
else Print ("ERROR_BuyLimit_Orde_Delete");
}
}
///////////////////////////////////////////////////////////////////////////////
}
//+------------------------------------------------------------------+
int BuyLimitCount(){
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true){
if(OrderMagicNumber()==Magic){
if(OrderType()==OP_BUYSTOP)
count++;}}}return(count);}
int BuyCount(){
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true){
if(OrderMagicNumber()==Magic){
if(OrderType()==OP_BUY)
count++;}}}return(count);}
int SellLimitCount(){
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true){
if(OrderMagicNumber()==Magic){
if(OrderType()==OP_SELLSTOP)
count++;}}}return(count);}
int SellCount(){
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true){
if(OrderMagicNumber()==Magic){
if(OrderType()==OP_SELL)
count++;}}}return(count);}
Saudações. Você pode me dizer o que está errado?
A EA faz pedidos com paradas acima e abaixo do preço. Se um deles aciona, a parada é ajustada se o preço se afastar da parada mais do que o estabelecido, se o preço se mover para a parada então nenhuma mudança.
No início eu escrevi apenas Buy order e funcionou como esperado. Se eu adicionar uma imagem de espelho para venda, as paradas serão corrigidas pelo valor estabelecido, seja qual for o movimento do preço.
Geralmente, se separadamente, ou para comprar ou vender, tudo está funcionando como deveria, mas as duas partes juntas - há um bug.
O código inteiro que você nos mostrou é um bug, não é? Pelo menos, a função OnTick é quase inteiramente um bug...
Um bug, você quer dizer todo o código mostrado?