Obrigado por sua ajuda, eu removi o loop while e quebrei para a função iniciar em cada execução de pedido, removi a função IsTesting (por enquanto) e meu OrderSend parece estar funcionando.
Executando-o agora não importa onde eu tenha uma função Print() nada está aparecendo no diário (ou no livro de registro) o pedido inicial abre bem e depois nada - mesmo que eu tenha meu pedido de impressão como a próxima linha no código?
Obrigado por sua ajuda, eu removi o loop while e quebrei para a função iniciar em cada execução de pedido, removi a função IsTesting (por enquanto) e meu OrderSend parece estar funcionando.
Executando-o agora não importa onde eu tenha uma função Print() nada está aparecendo no diário (ou no livro de registro) o pedido inicial abre bem e depois nada - mesmo que eu tenha meu pedido de impressão como a próxima linha no código?
Quando uma função retorna uma int, como OrderSend(), podemos usar um código como este para verificar se a função funcionou e reportar um erro aos logs caso não tenha funcionado...
Eu codifiquei nos erros de impressão, mas nada está sendo impresso para a revista, então eu não posso trabalhar sobre quais erros estão ocorrendo? Ainda estou perdendo algo óbvio? Agora estou de volta para abrir uma venda e depois não poder fechar...
//+------------------------------------------------------------------+//| SMA scripy.mq4 |//| Copyright 2013, MetaQuotes Software Corp. |//| http://www.metaquotes.net |//+------------------------------------------------------------------+#property copyright "Copyright 2013, MetaQuotes Software Corp."#property link "http://www.metaquotes.net"externint z=1234;
int total;
//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int init()
{
//---- int i;
total=0;
if (OrdersTotal()!=0)
{
for (i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS))
{
if ((OrderSymbol()==Symbol())&&(OrderMagicNumber()==z))
{
if ((OrderType()==OP_BUY)&&(iMA(Symbol(),0,6,-3,MODE_SMA,PRICE_CLOSE,0)<iMA(Symbol(),0,21,0,MODE_SMA,PRICE_CLOSE,0)))
{
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,Green);
}
if ((OrderType()==OP_SELL)&&(iMA(Symbol(),0,6,-3,MODE_SMA,PRICE_CLOSE,0)>iMA(Symbol(),0,21,0,MODE_SMA,PRICE_CLOSE,0)))
{
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,Green);
}
else
{
total++;
}
}
}
}
}
//----return;
}
//+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int start()
{
//----int ticket,i,L;
bool x;
if (AccountBalance()>50)
{
//-----double SMA6=iMA(Symbol(),0,6,-3,MODE_SMA,PRICE_CLOSE,0);
Print("SMA6 is ",SMA6);
double SMA21=iMA(Symbol(),0,21,0,MODE_SMA,PRICE_CLOSE,0);
Print("SMA21 is ",SMA21);
double RSI70=iRSI(Symbol(),PERIOD_D1,14,PRICE_CLOSE,0)<70;
Print("RSI70 is ",RSI70);
double RSI30=iRSI(Symbol(),PERIOD_D1,14,PRICE_CLOSE,0)>30;
Print("RSI30 is ",RSI30);
//----if (total==0)
{
if ((RSI70)&&(SMA6>SMA21))
{
ticket=OrderSend(Symbol(),OP_BUY,v(AccountBalance()),Ask,0,0,0,"",z,0,Red);
total+=1;
if (ticket<0)
{
Print("OrderSend Failed", GetLastError());
}
}
if ((RSI30)&&(SMA6<SMA21))
{
ticket=OrderSend(Symbol(),OP_SELL,v(AccountBalance()),Bid,0,0,0,"",z,0,Blue);
total+=1;
if (ticket<0)
{
Print("OrderSend Failed", GetLastError());
}
}
}
//---if (total!=0)
{
L=0;
for (i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS))
{
if ((OrderSymbol()==Symbol())&&(OrderMagicNumber()==z))
{
if ((OrderType()==OP_BUY)&&(SMA6<SMA21))
{
x=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,Green);
if (x==false)
{
Print("Error is ", GetLastError());
}
else total+=-1;
break;
}
if ((OrderType()==OP_SELL)&&(SMA6>SMA21))
{
x=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,Green);
if (x==false)
{
Print("Error is ", GetLastError());
}
else
{
total+=-1;
}
break;
}
else
{
L++;
}
}
total=L;
}
}
}
//----
}
//----return;
}
//+------------------------------------------------------------------+//| expert deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//----//----return(0);
}
//-------------------------------------------------------------------+double v(double k)
{
double v=((k*0.015)/1000);
if (v<MarketInfo(Symbol(),MODE_MINLOT))
{
v=MarketInfo(Symbol(),MODE_MINLOT);
return(v);
}
else
{
return(v);
}
}
//-------------------------------------------------------------------+
duuuuhhhh iRSI é o dobro, mas a comparação resulta 1 - então eu substituí RSI30 e RSI70 por apenas RSI e tive uma comparação e tudo funciona HOORAY! EXCETO quando eu troco o SMA6 para mudar a saída SMA6=0 sempre? por quê?
Obrigado a todos pela ajuda! Espero não incomodar tanto na próxima vez!
Eu codifiquei nos erros de impressão, mas nada está sendo impresso para a revista, então eu não posso trabalhar sobre quais erros estão ocorrendo? Ainda estou perdendo algo óbvio? Agora estou de volta para abrir uma venda e depois não poder fechar...
colocar a EA em um gráfico de uma conta de demonstração
não procure apenas em diário terminal ... procure também em especialistas em terminais .....
o que você vê ali impresso
Imprimir e executar agora :) obrigado por sua ajuda - eu estava definindo erroneamente iRSI<70 como um duplo (já que era uma comparação) e estava causando problemas. Ele imprime agora e funciona como esperado, exceto, se eu mudar o SMA mudar suas impressões SMA=0?
Imprimir e executar agora :) obrigado por sua ajuda - eu estava definindo erroneamente iRSI<70 como um duplo (já que era uma comparação) e estava causando problemas. Ele imprime agora e funciona como esperado, exceto, se eu mudar o SMA mudar suas impressões SMA=0?
Coloque um SMA com as mesmas configurações no gráfico de sua EA e veja o que você fez ...
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
Obrigado por sua ajuda, eu removi o loop while e quebrei para a função iniciar em cada execução de pedido, removi a função IsTesting (por enquanto) e meu OrderSend parece estar funcionando.
Executando-o agora não importa onde eu tenha uma função Print() nada está aparecendo no diário (ou no livro de registro) o pedido inicial abre bem e depois nada - mesmo que eu tenha meu pedido de impressão como a próxima linha no código?
Obrigado por sua ajuda, eu removi o loop while e quebrei para a função iniciar em cada execução de pedido, removi a função IsTesting (por enquanto) e meu OrderSend parece estar funcionando.
Executando-o agora não importa onde eu tenha uma função Print() nada está aparecendo no diário (ou no livro de registro) o pedido inicial abre bem e depois nada - mesmo que eu tenha meu pedido de impressão como a próxima linha no código?
como fica seu código agora ??
duplo, int, string, bool, datetime, cor, ........ o que tenho que usar ???....
Eles são duplos ????
VER O que são valores de retorno de funções ? Como eu os utilizo ? - Fórum MQL4
grande explicação
Quando uma função retorna uma int, como OrderSend(), podemos usar um código como este para verificar se a função funcionou e reportar um erro aos logs caso não tenha funcionado...
. Veja o link que você deu pela WHRoeder e você encontra o que eu tenho escondido aqui com estrelas ......
utilize-o também verificando o fechamento dos negócios
Faça algo assim dentro de seu código.... dessa forma quando o pedido falhar você sabe de que tipo e de onde o erro está vindo
.
o que acontece se o fechamento do pedido falhar.......?????
Tanto o RSI quanto o MA são duplos, então as variáveis precisam ser também não?
https://docs.mql4.com/indicators/iRSI && https://docs.mql4.com/indicators/iMA
Eu codifiquei nos erros de impressão, mas nada está sendo impresso para a revista, então eu não posso trabalhar sobre quais erros estão ocorrendo? Ainda estou perdendo algo óbvio? Agora estou de volta para abrir uma venda e depois não poder fechar...
duuuuhhhh iRSI é o dobro, mas a comparação resulta 1 - então eu substituí RSI30 e RSI70 por apenas RSI e tive uma comparação e tudo funciona HOORAY! EXCETO quando eu troco o SMA6 para mudar a saída SMA6=0 sempre? por quê?
Obrigado a todos pela ajuda! Espero não incomodar tanto na próxima vez!
Tanto o RSI quanto o MA são duplos, então as variáveis precisam ser também não?
https://docs.mql4.com/indicators/iRSI && https://docs.mql4.com/indicators/iMA
Eu codifiquei nos erros de impressão, mas nada está sendo impresso para a revista, então eu não posso trabalhar sobre quais erros estão ocorrendo? Ainda estou perdendo algo óbvio? Agora estou de volta para abrir uma venda e depois não poder fechar...
colocar a EA em um gráfico de uma conta de demonstração
não procure apenas em diário terminal ...
procure também em especialistas em terminais .....
o que você vê ali impresso
colocar a EA em um gráfico de uma conta de demonstração
não procure apenas em diário terminal ...
procure também em especialistas em terminais .....
o que você vê ali impresso
Imprimir e executar agora :) obrigado por sua ajuda - eu estava definindo erroneamente iRSI<70 como um duplo (já que era uma comparação) e estava causando problemas. Ele imprime agora e funciona como esperado, exceto, se eu mudar o SMA mudar suas impressões SMA=0?
Imprimir e executar agora :) obrigado por sua ajuda - eu estava definindo erroneamente iRSI<70 como um duplo (já que era uma comparação) e estava causando problemas. Ele imprime agora e funciona como esperado, exceto, se eu mudar o SMA mudar suas impressões SMA=0?
Coloque um SMA com as mesmas configurações no gráfico de sua EA e veja o que você fez ...
Por que você totaliza += 1;
neste momento eu não sei se as encomendas são bem sucedidas
e se falhar, não vejo que tipo de ordem tentou abrir, pode ser também uma venda que você tentou abrir.