[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 1095

 
Eu não escrevi imediatamente um EA sem indicadores, não há indicadores, apenas pedidos para comprar e vender e assim por diante... e então os períodos que mudaram no testador e o resultado final ainda não é nada que eu não entenda.
 
5drakon:
Eu não escrevi imediatamente um EA sem indicadores, não há indicadores, apenas pedidos para comprar e vender e assim por diante... e então os períodos que mudaram no testador e o resultado final ainda não é nada que eu não entenda.

Você não pode dizer nada sem o próprio Expert Advisor. Eu estou apenas adivinhando.
 

O que devo fazer com Ilan6 para que ele comece a negociar? Quanto dinheiro começa a funcionar e funciona com um centavo?

 
5drakon:
Eu não escrevi imediatamente um EA sem indicadores, não há indicadores, apenas pedidos para comprar e vender e assim por diante... e então os períodos que mudaram no testador e o resultado final ainda não é nada que eu não entenda.

Sim, devemos olhar para o próprio código. Não tem algum tipo de estratégia, com base em quais cálculos abre e fecha os pedidos?
 

Você pode me dizer onde está o erro? Se houver uma ordem de mercado para vender nosso instrumento financeiro, então feche-o e se não houver ordem para comprar, então abra uma ordem para comprar. Aqui tudo é normal com o fechamento, mas ele não os abre uma única vez, mas a cada tic-tac.

//--------------------------------------------------------------------------------------------

extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
int sells=0;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
sells++;
}
}
if (sells==0)
{
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
//--------------------------------------------------------------------------------------------

 
kolyango:

Você pode me dizer onde está o erro? Se houver uma ordem de mercado para vender nosso instrumento financeiro, então feche-o e se não houver ordem para comprar, então abra uma ordem para comprar. Aqui tudo é normal com o fechamento, mas ele os abre não uma vez, mas a cada tique.

//--------------------------------------------------------------------------------------------

extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
int sells=0;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
sells++;
}
}
if (sells==0)
{
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
//--------------------------------------------------------------------------------------------


Ou é melhor fazer isso? Se não houver ordens de venda, não abriremos uma ordem de compra.

extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
}
//--------------------------------------------------------------------------------------------

 

Regra para a execução do for statement


Ao passar o controle para a declaração, executar Expression_1. Embora a Condição de para declaração seja verdadeira: passar o controle para a primeira declaração do corpo do laço, e após todas as declarações do corpo do laço terem sido executadas, executar Expression_2 e passar o controle para o cabeçalho para verificar se a Condição é verdadeira. Se a condição do para declaração for falsa: passe o controle para a declaração que segue o para declaração.

Diga-me: um tick chegou, a condição de operador é verdadeira, o controle é passado adiante - tudo isso acontecerá durante um tick, ou seja, todos esses operadores serão executados durante 1 tick ou não.

extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
}
//--------------------------------------------------------------------------------------------

Ou exatamente quais operadores serão executados durante este tick? Todos os anteriores ou quais serão executados durante o próximo tick? Explicar...

 
kolyango:

Regra para a execução do for statement


Ao passar o controle para a declaração, executar Expression_1. Embora a Condição de para declaração seja verdadeira: passar o controle para a primeira declaração do corpo do laço, e após todas as declarações do corpo do laço terem sido executadas, executar Expression_2 e passar o controle para o cabeçalho para verificar se a Condição é verdadeira. Se a condição do para declaração for falsa: passe o controle para a declaração que segue o para declaração.

Diga-me: um tick chegou, a condição de operador é verdadeira, o controle é passado adiante - tudo isso acontecerá durante um tick, ou seja, todos esses operadores serão executados durante 1 tick ou não.

Ou exatamente quais operadores serão executados durante este tick? Todos os anteriores ou quais serão executados durante o próximo tick? Explicar...


A função start() é executada quando chega o primeiro tick. Se outros carrapatos chegarem enquanto a função estiver em funcionamento, eles serão pulados.

A função de partida será executada completamente de acordo com sua lógica

 
kolyango:

Regra de para a execução de declarações


Ao passar o controle para a declaração, execute Expression_1. Embora a Condição de para declaração seja verdadeira: passe o controle para a primeira declaração do corpo do laço, e após todas as declarações do corpo do laço terem sido executadas, execute Expression_2 e passe o controle para o cabeçalho para verificar se a Condição é verdadeira. Se a condição do para declaração for falsa: passe o controle para a declaração que segue o para declaração.

Diga-me: um tick chegou, a condição de operador é verdadeira, o controle é passado adiante - tudo isso acontecerá durante um tick, ou seja, todos esses operadores serão executados durante 1 tick ou não.

extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
}
//--------------------------------------------------------------------------------------------

Ou exatamente quais operadores serão executados durante este tick? Todos os anteriores ou quais serão executados durante o próximo tick? Explicar...


Já descobrimos. Todos os operadores serão executados se a condição estiver esgotada.
 
Como faço para que este código verifique se já temos ou não uma ordem de compra antes de comprar. Se não há ordens de compra no mercado, então só então execute a compra?
Razão: