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
Olá Mladen, obrigado por sua ajuda, eu apliquei suas mudanças mas não funciona, talvez fosse mais simples se a EA simplesmente ignorasse qualquer comércio aberto existente, ou seja, simplesmente deixá-los abertos, e depois abrir e fechar seu próprio comércio único
No momento, abre e fecha seu próprio comércio, mas também fecha qualquer comércio aberto adicional existente
aumentar
A partir de um código parcial, é o que eu poderia sugerir. Se um parâmetro booleano NoClosesisfor criado, e se esse parâmetro for definido como verdadeiro, ele não deve fechar ordens se aplicado como o snippet (se CB e CS não forem iguais a 1, esse código não fechará ordens).
cumprimentos
Mladen
Olá Mladen, obrigado por sua ajuda, eu apliquei suas mudanças mas não funciona, talvez fosse mais simples se a EA simplesmente ignorasse qualquer comércio aberto existente, ou seja, simplesmente os deixasse abertos, e depois abrisse e fechasse seu próprio comércio único No momento, ela abre e fecha seu próprio comércio, mas também fecha qualquer comércio aberto adicional existente
aumentar
A partir de um código parcial, é o que eu poderia sugerir. Se um parâmetro booleano NoClosesisfor criado, e se esse parâmetro for definido como verdadeiro, ele não deve fechar ordens se aplicado como o snippet (se CB e CS não forem iguais a 1, esse código não fechará ordens).
cumprimentos
MladenIsso é verdade, mas a menos que eu tenha entendido mal, isso significa que o comércio aberto pela EA também nunca fechará, de modo que ela apenas alterna entre a compra e a venda?
Sim. isso é correto
Tanto quanto entendi, essa foi sua idéia: deixar a EA abrir as ordens e então você administraria as ordens (fechando-as) manualmente. Com esse parâmetro, você pode até mesmo mudá-lo de volta para falso e então a EA retomará as ordens de fechamento - assim é "controlável de fora", mais ou menos falando
Isso é verdade, mas a menos que eu tenha entendido mal, isso significa que o comércio aberto pela EA também nunca fechará, de modo que ela apenas alterna entre a compra e a venda?
Sim. Isso é correto - tanto quanto entendi, essa foi sua idéia: deixar a EA abrir as ordens e então você administraria as ordens (fechando-as) manualmente. Com esse parâmetro, você pode até mesmo mudá-lo de volta para falso e então a EA retomará as ordens de fechamento - assim é "controlável por fora", mais ou menos falando
Ah, desculpe-me por ser ambíguo, quero que a EA abra e feche seu pedido e ignore qualquer pedido existente, por exemplo
1. Tenho 5 ordens de venda abertas
2. Eu aplico a EA que abre 1 ordem de compra
3. Agora tenho 5 vender e 1 comprar.
4. A EA agora aciona uma venda para fechar sua compra.
5. Agora tenho 6 pedidos de venda (5 existentes, 1 EA vendido)
6. A EA agora aciona uma compra para fechar sua venda
7. Agora tenho 5 vender e 1 comprar, etc.
Vou fechar as vendas existentes, a EA ignora qualquer outro negócio além do seu próprio, como acima
aumentar
Ele já faz isso se você definir o Magicparameter com um valor diferente de 0 (esta é uma parte do código que verifica no caso de fechar uma ordem de compra pouco antes do fechamento da ordem)
Portanto, se a"Magia" não for igual a 0 e desde que o valor para a Magia seja único, ela fechará somente as ordens abertas por ela mesma
Ah, desculpe-me por ser ambíguo, quero que a EA abra e feche sua ordem e ignore qualquer ordem existente, por exemplo
1. Tenho 5 ordens de venda abertas
2. Eu aplico a EA que abre 1 ordem de compra
3. Agora tenho 5 vender e 1 comprar.
4. A EA agora aciona uma venda para fechar sua compra.
5. Agora tenho 6 pedidos de venda (5 existentes, 1 EA vendido)
6. A EA agora aciona uma compra para fechar sua venda
7. Agora tenho 5 vender e 1 comprar, etc.
Vou fechar as vendas existentes, a EA ignora qualquer outro negócio além do seu próprio, como acimaTrocar uma vez por barra para um período de tempo específico
Olá, queridos fEllA's!
Eu tenho EA (yeeaa, que não) que funciona bem no testador, aceita múltiplos negócios por Barra 4H, como instruído. Agora, ao testar na Demo (Alpari UK) com 11 pares, a EA só leva 1 negociação, enquanto que deve levar mais (3 no máximo, como instruído). Somente a cada barra de 4H, se as condições forem cumpridas.
Eu tenho a função 'Semafor' com código GlobalVariable codificado, e este pedaço de código, para evitar a abertura de múltiplas ordens dentro de 1 TimeFrame (4H neste caso) pré-definido:
//Compra
if (Order === SIGNAL_BUY && ((EachTickMode && !TickCheck) ||| (!EachTickMode && (Bars != BarCount))))
{
se (Somente Sinais)
{
// ------ Alerta deve ser apenas uma vez por sinal OU uma vez a cada 15 ou 30 Minutos
se (CheckAlertTime == iTime (NULL, 5, 0)) retornar(0);
caso contrário CheckAlertTime == iTime (NULL, 5, 0);
if (Alertas) Alerta (Símbolo() + " " + DoubleToStr (Perguntar, Dígitos) + " BUY Signal");
if (PlaySounds) PlaySound (WhichSound);
}
se (!IsTrade && !SignalsOnly)
{
se (CheckAlertTime == iTime (NULL, OncePerBarTF, 0)) retornar (0);
senão CheckAlertTime == iTime (NULL, OncePerBarTF, 0);
//Cheque margem livre
se (AccountFreeMargin() < (1000 * Lotes))
{
Imprimir ("Nós não temos dinheiro. Free Margin = ", AccountFreeMargin()));
devolução(0);
}
if (UseTakeProfit && CloseLotsPercent == 100) TakeProfitLevel = Ask + TakeProfit * Ponto; caso contrário TakeProfitLevel = 0,0;
{
if (MoneyManagement) Lots = NormalizeDouble ((AccountFreeMargin() * Risk / 100 / ((Ask - BuySL) / Point / TickValue)), 2);
else Lots = Lots;
}
se (TradeIsBusy() && IsTradingAllowed() < 0)
retorno (-1);
RefreshRates();
Ticket = OrderSend (Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "7Qi BUY" + MagicNo, MagicNo, 0, DodgerBlue);
se (Ticket > 0)
{
se (OrderSelect (bilhete, SELECT_BY_TICKET, MODE_TRADES))
{
Imprimir ("7Qi BUY" aberto: ("7Qi BUY", OrderOpenPrice()));
se (Alertas) Alerta (Símbolo() + " " + DuploToStr (Pedir, Dígitos) + " COMPRAR aberto");
se (PlaySounds) PlaySound (WhichSound);
}
senão
{
Imprimir ("Error opening BUY: ", Err);
}
}
// TradedThisBar = Bars;
se (EachTickMode) TickCheck = Verdadeiro;
se (!EachTickMode) BarCount = Bars;
TradeIsNotBusy();
retornar (0);
}
}
//-------------------------------------------------
É possível que este código:
se (CheckAlertTime == iTime (NULL, OncePerBarTF, 0)) retornar (0);
else CheckAlertTime == iTime (NULL, OncePerBarTF, 0);
impede a EA de negociar no meio da Hora? Ele verifica somente no início da Barra?
Se eu usar a função "TradedThisBar = Bars" eu teria que deixar a EA somente em 1 TimeFrame, correto?
A função "Semáforo" também é codificada em TrailingStops, PartialCloseLots também.
Obrigado a todos por sua ajuda,
Divirta-se,
Simon
Eslovênia
Iiiiiik - Eu encontrei o problema
Hi!
Encontrei o problema - é muito provavelmente uma combinação de:
se (TradeIsBusy() /*&& IsTradingAllowed()*/ < 0)
retorno (-1);
//-----------------------------------------------------------------------------------------
int IsTradingAllowed (int MaxWaitingSec = 30)
{
se (!IsTradeAllowed())
{
int StartWaitingTime = GetTickCount();
Print ("O contexto comercial está ocupado! Espere até ser livre...");
se (Alertas) Alerta (Símbolo() + " Comércio EA não permitido! Aguardando...");
enquanto (verdadeiro)
{
se (IsStopped())
{
Imprimir ("EA foi encerrado!");
retornar(-1);
}
se (GetTickCount() - StartWaitingTime > MaxWaitingSec * 1000 )
{
Imprimir ("Limite de espera excedido (" + MaxWaitingSec + " seg)"! );
retorno(-2);
}
se (IsTradeAllowed())
{
Imprimir ("O contexto comercial agora é livre!");
retornar(0);
}
Dormir (100);
}
}
senão
{
Imprimir ("O contexto comercial é livre!");
retornar(1);
}
}
*/
//-----------------------------------------------
int TradeIsBusy (int MaxWaitingSec = 30)
{
se (IsTesting()) retornar(1);
int Err = 0, StartWaitingTime = GetTickCount();
enquanto (verdadeiro)
{
se (IsStopped())
{
Imprimir ("EA foi encerrado!");
retornar(-1);
}
se (GetTickCount() - StartWaitingTime > MaxWaitingSec * 1000)
{
Impressão ("Tempo de espera (" + MaxWaitingSec + " seg) excedido!");
se (Alertas) Alerta ("Symbol(") + " EA tempo de espera excedido!");
retornar(-2);
}
se (GlobalVariableCheck ("TradeIsBusy"))
pausa;
senão
{
Err = GetLastError();
se (Err != 0)
{
Imprimir ("TradeIsBusy - GlobalVariableCheck - Error # ", Err);
Sleep (100);
continuar;
}
}
se (GlobalVariableSet ("TradeIsBusy", 1.0) > 0) retornar(1);
mais
{
Err = GetLastError();
se (Err != 0)
{
Imprimir ("TradeIsBusy - GlobalVariableSet - Error # ", Err);
Sleep(100);
continuar;
}
}
}
enquanto (verdadeiro)
{
se (IsStopped())
{
Imprimir ("EA foi encerrado!");
retornar(-1);
}
se (GetTickCount() - StartWaitingTime > MaxWaitingSec * 1000)
{
Impressão ("Tempo de espera (" + MaxWaitingSec + " seg) excedido!");
se (Alertas) Alerta ("Symbol(") + " tempo de espera excedido!");
retornar (-2);
}
se (GlobalVariableSetOnCondition ("TradeIsBusy", 1.0, 0.0 )) retornar (1);
senão
{
Err = GetLastError();
se (Err != 0)
{
Imprimir ("TradeIsBusy - GlobalVariableSetOnCondition - Error # ", Err);
continuar;
}
}
se (Alertas) Alerta (Símbolo() + " - esperando outro EA para terminar a negociação...");
Dormir (1000);
}
}
//--------------------------------
comércio nuloNotBusy()
{
int Err;
se (IsTesting())
{
retorno(0);
}
enquanto (verdadeiro)
{
se (IsStopped())
{
Imprimir (Símbolo() + " EA foi encerrado!" );
retornar(-1);
}
se (GlobalVariableSet ("TradeIsBusy", 0.0) > 0) retornar(1);
mais
{
Err = GetLastError();
se (Err != 0)
Imprimir ("TradeIsNotBusy - GlobalVariableSet - Error # ", Err);
}
Dormir (100);
}
}
//-----------------------------------------------------------------------------------------------
Vou tentar sem a função IsTradeAllowed.
De qualquer forma, obrigado,
Divirta-se,
Simon
código de erro 130
----- eliminado ----- não é mais necessário......
Tutorial de mq4 para download
Oi, pessoal,
não consegue encontrar um tutorial ou livro de referência ( não online !! ) sobre o código mq4.
você pode me ajudar ?
Com os melhores cumprimentos
SOLVED, teve que descomprimir o arquivo com um utilitário.