Olá, você poderia me ajudar por favor - eu tenho um problema: o robô entra em uma posição e no próximo tick ele modifica seu stop-loss para o baixo anterior e eu preciso que esse stop-loss seja modificado somente quando a vela se fecha na qual a posição foi aberta
void TrailingStop()
{
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true);
{
if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if (OrderType()==OP_BUY)
{
double LOW_1 = iLow(NULL,0,1);
bool res=OrderModify(OrderTicket(),OrderOpenPrice(),LOW_1,OrderTakeProfit(),0,White);
if(!res) Print("Ошибка модификации ордера. Код ошибки=",GetLastError());
}
if (OrderType()==OP_SELL)
{
double HIGH_1 = iHigh(NULL,0,1);
res=OrderModify(OrderTicket(),OrderOpenPrice(),HIGH_1,OrderTakeProfit(),0,White);
if(!res) Print("Ошибка модификации ордера. Код ошибки=",GetLastError());
}
}
}
}
return;
}
remjte: Cavalheiros! Você pode me dizer o código que vai parar de testar uma EA quando não há margem suficiente para abrir uma posição? Obrigado!
Se AccountFreeMarginCheck() for inferior a um determinado valor (por exemplo, menos de 50% da AccountFreeMargin) - função de saída de negociação, o teste termina rapidamente porque os loops vazios são quase descarregáveis.
evillive: Se AccountFreeMarginCheck() for inferior a um determinado valor (por exemplo, menos de 50% da AccountFreeMargin) - saída da função de comércio, o teste termina rapidamente, pois os laços vazios quase não estão carregando.
Honestamente, ainda muito verde, você pode me dizer como corrigir este pedaço de código?
zhezheria: Deixe-me escrever de uma maneira mais simples: como escrever esta condição - Não modifique uma ordem aberta até que apareça um novo castiçal
Trabalhar na abertura de um novo bar em um período de tempo correspondente. Muitos exemplos de códigos
Honestamente, ainda muito verde, você pode me dizer como corrigir este pedaço de código?
if (AccountFreeMarginCheck(Symbol(), a_cmd_0, l_lots_4) <= 0.0) return (-1); if (GetLastError() == 134/* NOT_ENOUGH_MONEY */) return (-2); return (l_lots_4);
Não é preciso editá-lo, ele vai se sair bem. A menos que você apenas substitua as variáveis por seus próprios nomes.
Mas se precisarmos de menos risco, então se (AccountFreeMarginCheck(Symbol(), a_cmd_0, l_lots_4) <= AccountFreeMargin()*0.5) retornar (-1); - neste caso, se 50% ou menos de dinheiro livre permanecer após a abertura da posição com o lote especificado, então retornar (-1)
Você pode me dar uma dica, por favor? Preciso escrever uma parte do código onde a segunda ordem da lista será selecionada e depois excluída (pendente). Retorna 4051 quando OrderSelect(1, SELECT_BY_POS, MODE_TRADES)
remjte: Cavalheiros! Você pode me dizer o código que vai parar de testar uma EA quando não há margem suficiente para abrir uma posição? Obrigado!
// проверяем доступность свободных средствif(AccountFreeMarginCheck(Symbol(),OP_BUY,OpenLot)<=0 || GetLastError()==134)
{
Print("It is impossible to open the order Buy, not enough money.");
return(0);
}
// проверяем доступность свободных средствif(AccountFreeMarginCheck(Symbol(),OP_SELL,OpenLot)<=0 || GetLastError()==134)
{
Print("It is impossible to open the order Sell, not enough money.");
return(0);
}
Pomid: Você pode me dar uma dica, por favor? Preciso escrever uma parte do código onde a segunda ordem da lista será selecionada e depois excluída (pendente). Retorna 4051 quando OrderSelect(1, SELECT_BY_POS, MODE_TRADES)
A contagem do pedido começa a partir de 0. Try, OrderSelect(0, SELECT_BY_POS, MODE_TRADES)
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.
Olá, você poderia me ajudar por favor - eu tenho um problema: o robô entra em uma posição e no próximo tick ele modifica seu stop-loss para o baixo anterior e eu preciso que esse stop-loss seja modificado somente quando a vela se fecha na qual a posição foi aberta
ou como se livrar deste erro
Cavalheiros! Você pode me dizer o código que vai parar de testar uma EA quando não há margem suficiente para abrir uma posição?
Obrigado!
Se AccountFreeMarginCheck() for inferior a um determinado valor (por exemplo, menos de 50% da AccountFreeMargin) - saída da função de comércio, o teste termina rapidamente, pois os laços vazios quase não estão carregando.
Honestamente, ainda muito verde, você pode me dizer como corrigir este pedaço de código?
if (AccountFreeMarginCheck(Symbol(), a_cmd_0, l_lots_4) <= 0.0) return (-1);
if(GetLastError() == 134/* NOT_ENOUGH_MONEY */) return (-2);
return (l_lots_4);
Deixe-me escrever de uma maneira mais simples: como escrever esta condição - Não modifique uma ordem aberta até que apareça um novo castiçal
Honestamente, ainda muito verde, você pode me dizer como corrigir este pedaço de código?
if (AccountFreeMarginCheck(Symbol(), a_cmd_0, l_lots_4) <= 0.0) return (-1);
if (GetLastError() == 134/* NOT_ENOUGH_MONEY */) return (-2);
return (l_lots_4);
Não é preciso editá-lo, ele vai se sair bem. A menos que você apenas substitua as variáveis por seus próprios nomes.
Mas se precisarmos de menos risco, então se (AccountFreeMarginCheck(Symbol(), a_cmd_0, l_lots_4) <= AccountFreeMargin()*0.5) retornar (-1); - neste caso, se 50% ou menos de dinheiro livre permanecer após a abertura da posição com o lote especificado, então retornar (-1)
Cavalheiros! Você pode me dizer o código que vai parar de testar uma EA quando não há margem suficiente para abrir uma posição?
Obrigado!
Você pode me dar uma dica, por favor? Preciso escrever uma parte do código onde a segunda ordem da lista será selecionada e depois excluída (pendente). Retorna 4051 quando OrderSelect(1, SELECT_BY_POS, MODE_TRADES)