[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 462

 
Roman.:

Pode ser normal às sextas-feiras, antes de sair para o fim de semana. Você ainda tem uma porcentagem aprovada por Deus.

Tudo deve estar escrito em seu acordo comercial...

Não olhei seu roteiro, mas, por exemplo, Alpari amplia a divulgação nas notícias (antes do fim de semana).



Assim, escreverei um EA com todos os dados possíveis sobre minha empresa de corretagem e minha conta. Em qualquer movimento, o alerta aparecerá imediatamente.

E não consigo encontrar o número limite de ordens que estou autorizado a colocar em minha corretora, por que simplesmente devo colocar 1000 ordens pendentes e depois apagá-las automaticamente quando o limite for encontrado?

 
rosomah:


1. vou escrever um assessor onde vou inserir todos os dados possíveis sobre a empresa de corretagem e a conta. Em qualquer movimento, o alerta aparecerá imediatamente.

Não consigo encontrar o número limite de ordens que poderei colocar na minha corretora, por que simplesmente cobrar 1000 ordens pendentes e depois apagá-las automaticamente quando o limite for encontrado?

1) O alerta não vai ajudar. Você tem que inserir estes parâmetros de ambiente na seção de código que é responsável pela execução dos critérios comerciais, e se algum destes parâmetros exceder seu valor máximo permitido (você o define), então você tem que tomar uma decisão apropriada (por exemplo, rejeitar um negócio... - realizar uma operação comercial).

2. Não. Você não pode fazer isso, IMHO - leia as regras e condições comerciais. Se não, então ligue para o suporte técnico e telefone para os chefs locais para TODAS essas perguntas sobre seu tipo de conta comercial.

 

Olá.

Estive trabalhando neste código o dia todo - ele está dando erro 131. O código deve passar por todas as ordens de mercado e a cada volta do mesmo ciclo, reler o volume de ordens abertas para o símbolo da ordem selecionada. Caso os volumes de posições de compra e venda para um símbolo sejam diferentes, uma ordem de fechamento é aberta para o volume restante.

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

Por favor, ajude-me a encontrar a razão. 131 - Li que isso tem a ver com um erro de localização de volume. Mas eu não vejo isso.

Agradecemos antecipadamente pela resposta.

 
TarasBY:
Você está usando um loop estranho no loop de ordem, MAS este é o direito do autor, então zere as leituras totais dos lotes (SchBuyLotsSMB e SchSellLotsSMB) antes do segundo loop.
Portanto, estou zerando-os.
 
nemo811:

Olá.

Estive trabalhando neste código o dia todo - ele está dando erro 131. O código deve passar por todas as ordens de mercado e a cada volta do mesmo ciclo, reler o volume de ordens abertas para o símbolo da ordem selecionada. Caso os volumes de posições de compra e venda para um símbolo sejam diferentes, uma ordem de fechamento é aberta para o volume restante.

Por favor, ajude-me a encontrar a razão. 131 - Li que isso tem a ver com um erro de localização de volume. Mas eu não vejo isso.

Agradecemos antecipadamente a resposta.


Onde você tem o escorregamento? Talvez essa seja a razão!
 
A propósito, o código funciona corretamente se as ordens forem abertas para um símbolo, e a própria EA for executada sobre este símbolo. Se as ordens estiverem abertas para 2 ou mais pares, ou se a EA estiver funcionando com um símbolo para o qual não há ordens, há um erro.
 
borilunad:

Onde você tem o escorregamento? Talvez essa seja a razão!

O que significa?

Sleep (1000);

?

Eu já tentei - não funciona.

 
nemo811:
É assim que eu os restabeleço.
Eu não percebi logo. Como opção (eu faria obrigatório), fazer a normalização do valor do lote passado para a função simbólica.
 
TarasBY:
Não percebi de imediato. Como opção (eu o faria necessariamente), fazer a normalização do valor do lote passado para a função simbólica.
Havia um pensamento assim. Vou tentar agora. Obrigado.
 
nemo811:

O que significa?

?

Eu já tentei - não funciona.


Slippage, após o preço de abertura, pelo menos 30 por um 5!