[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 463

 
borilunad:

Slippage, após o preço de abertura, pelo menos 30 por um 5!
Ah, estou entendendo o que você quer dizer.Eu tenho o desvio definido.
 
nemo811:
Essa foi a minha idéia. Vou tentar agora. Obrigado.

Além disso, alguns parênteses não são colocados corretamente:

    for (i=OrdersTotal()-1;i>=0;i--)
    {
        if (!OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
        {Alert ("Ошибка ", GetLastError(), " выбора ордера!");}
        else
        {
            SMB = OrderSymbol();
            SchBuyLotsSMB = 0;
            SchSellLotsSMB = 0;
            for (ii=OrdersTotal()-1;ii>=0;ii--)
            {
                if (!OrderSelect (ii, SELECT_BY_POS, MODE_TRADES))
                {Alert ("Ошибка ", GetLastError(), " выбора ордера!");}
                else
                {
                    if (OrderSymbol() == SMB)
                    {
                        if (OrderType()==OP_BUY) {SchBuyLotsSMB +=OrderLots();}
                        if (OrderType()==OP_SELL) {SchSellLotsSMB += OrderLots();}
                    }
                }
            }
            MarketLotSMB=SchBuyLotsSMB-SchSellLotsSMB;
            if (MarketLotSMB == 0.0) continue;
            RefreshRates();
            if (MarketLotSMB<0)
            {
                MarketLotSMB = MathAbs (MarketLotSMB);
                Price = MarketInfo (SMB, MODE_ASK);
                OPENORDER ("Buy", SMB, MarketLotSMB, Price);
            }
            else if (MarketLotSMB>0)
            {
                Price = MarketInfo (SMB, MODE_BID);
                OPENORDER ("Sell", SMB, MarketLotSMB, Price);
            }            
        }
    }

e também precisamos levar em conta que no segundo ciclo há uma reatribuição de pedidos e após o segundo ciclo terminar (se não for um testador), por exemplo, SMB pode ser != OrderSymbol().

 
TarasBY:

Além disso, alguns parênteses não são colocados corretamente:

e também é preciso levar em conta que no segundo ciclo há uma alocação geral de pedidos e após o final do segundo ciclo (se não for um testador), por exemplo, SMB poderia ser != OrderSymbol().

Bravo! Sua variante funciona.

Obrigado sinceramente.


borilunad- obrigado também.

 
TarasBY:

Além disso, alguns dos parênteses estão errados:

Coloquei os parênteses corretamente em minha própria versão e funcionou, também.

Mais uma vez, obrigado.

 

granit77

Eu discordo. Não há necessidade de ir além do mql, não há necessidade de remover a EA do gráfico. Basta programar o bloqueio do comércio, fornecendo isto no código EA.

Zhunko:
Sim! Certo! Exceção apenas para controle remoto.

Obrigado pelo feedback, mas ainda não sei qual é melhor e eu escolhi:

PostMessageA(WindowHandle(Symbol(),Period()), WM_COMMAND, 33050, 0);

Agora tenho outra pergunta: o que devo acrescentar ao código, para que ele não expluda imediatamente, mas após uma certa quantidade de disparo (por exemplo:Kol=3)

#property show_inputs
#include <WinUser32.mqh>
extern int Kol=3;

int start()
{
OrderSend(Symbol(),OP_SELL,0.05,Bid,333,0,0,"Тест",0,0,CLR_NONE);
while(!IsTradeAllowed()) Sleep(1000);
PostMessageA(WindowHandle(Symbol(),Period()), WM_COMMAND, 33050, 0);
return(0);
}

Obrigado de antemão

 

Olá!

Comecei a construir um indicador EA para Aroon. Eu nunca quis usar um indicador que ainda não esteja incluído no MT4. NÃO CONSIGO COLOCÁ-LO PARA FUNCIONAR: (((((

Eu não consigo entender nem sugerir meus erros.

Arquivos anexados:
 
Sarguss:

Olá!

Comecei a construir um indicador EA para Aroon. Eu nunca quis usar um indicador que ainda não esteja incluído no MT4. NÃO CONSIGO COLOCÁ-LO PARA FUNCIONAR: (((((

Não consigo obter uma dica ou sugerir meus erros.

Este é um código MUITO interessante:

Up1 = Highest(Symbol(),"Aroon_Horn2",MODE_HIGH,Aroon_Period-1,0);
 Up2 = Highest(Symbol(),"Aroon_Horn2",MODE_HIGH,Aroon_Period-1,1);
      Dn1 = Lowest(Symbol(),"Aroon_Horn2",MODE_LOW,Aroon_Period-1,0);
   Dn2 = Lowest(Symbol(),"Aroon_Horn2",MODE_LOW,Aroon_Period-1,1);

O mais alto() e o mais baixo() são funções do usuário? Se não, onde você encontrou tal construção?
Se você quiser obter valores do indicador, você deve usar a função iCustom().

 
TarasBY:

Este é um código MUITO interessante:

As funções mais altas() e mais baixas() são funções personalizadas? Se não, onde você conseguiu tal construção?
Se você quiser obter valores do indicador, você deve usar a função iCustom().

Isto eu intuí do indicador. Deve ser engraçado :)

Este é o único bug?

Quando coloco o Expert Advisor na Demo, ele diz "2012.10.26 21:49:56 2012.10.22 23:59 Trommel 300+Aroon CADJPY,H1: número inteiro inválido como parâmetro 2 para a função iLowest

2012.10.26 21:49:56 2012.10.22 23:59 Trommel 300+Aroon CADJPY,H1: número inteiro inválido como parâmetro 2 para a função iHighest" Mas a interseção Up & Down funciona.

 
TarasBY:

Este é um código MUITO interessante:

Altas() e baixas() são funções personalizadas? Se não, onde você desenterrou tal construção?
Se você quiser obter valores do indicador, você deve usar a função iCustom().

Peço desculpas pelas perguntas bobas e obrigado.

Shas wikid.

2012.10.26 21:59:19 2012.10.22 23:59 Trommel 300+Aroon CADJPY,H1: o nome do indicador personalizado deve ser uma cadeia

2012.10.26 21:59:19 2012.10.22 23:59 Trommel 150+Aroon CADJPY,H1: número inteiro inválido como parâmetro 2 para a função de chamada do Indicador

 
Sarguss:

Peço desculpas pelas perguntas bobas e obrigado.

É um wickididium.

2012.10.26 21:59:19 2012.10.22 23:59 Trommel 300+Aroon CADJPY,H1: o nome do indicador personalizado deve ser uma cadeia

2012.10.26 21:59:19 2012.10.22 23:59 Trommel 150+Aroon CADJPY,H1: número inteiro inválido como parâmetro 2 para a função de chamada do Indicador

Você já ouviu alguma coisa sobre os tipos variáveis?! O 1º erro - no mencionado iCustom(), o nome do indicador deve ser string (i.e. "nome do indicador").

O 2º erro - você inseriu corretamente os parâmetros, você passou para o indicador, no mesmo iCustom().

Esta é uma teoria, mas para entendê-la na prática, olhe através do código dos outros (a base do código está cheia deles) e veja estes exemplos.

Razão: