Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 398

 
Copiando novamente.

Você precisa escrever uma parte do código do robô comercial para que ele faça uma troca uma vez, se as condições comerciais forem cumpridas.
Por exemplo:
1) Se a Linha_1 for maior que a Linha_2, uma operação de compra é executada,
2) O negócio é fechado em SL ou TP,
3) Se a Linha_1 for superior à Linha_2, uma negociação não é executada até que as condições mudem. ...

Se as condições mudarem, ou seja, a Linha_2 é superior à Linha_1, uma negociação é executada. Depois tudo é repetido.
1) Se a Linha_2 for maior que a Linha_1, uma operação de compra é executada,
2) O comércio é fechado em SL ou TP,
3) Se a Linha_2 for superior à Linha_1, uma negociação não é executada até que as condições mudem. ...

E.
1) Se a Linha_1 for superior à Linha_2, uma operação de compra é executada..,
2) O comércio é fechado em SL ou TP,
3) Se a Linha_1 estiver acima da Linha_2, a negociação não será executada até que as condições mudem. .

etc.
 
Link_x:
Estou copiando novamente.

Você precisa escrever uma parte do código do seu robô comercial, para que ele realize um negócio uma vez, se as condições comerciais forem cumpridas.
Por exemplo:
1) Se a Linha_1 for maior que a Linha_2, uma operação de compra é executada,
2) O negócio é fechado em SL ou TP,
3) Se a Linha_1 for superior à Linha_2, uma negociação não será executada até que as condições sejam alteradas...
...

etc.


(3) O parágrafo não é claro. "...até que as condições mudem" - as condições a que se faz referência não são indicadas.

Você só precisa abrir uma ordem de compra? Também não está claro se várias ordens podem existir no mercado simultaneamente ou apenas uma ordem.

 
fozi:

Olá camradics.

Quem pode comercializar o SP500 via MT4-5 ?


mmcis tem uma _SP500 mt4 demo

Mas diz Comércio: Não.

Talvez esteja apenas em demonstração, eu não sei.

 
Link_x:
Estou copiando novamente.

Você tem que escrever uma parte do código de um robô comercial, para que ele faça um acordo uma vez, quando as condições comerciais forem cumpridas.
Por exemplo:
1) Se a Linha_1 for maior que a Linha_2, então uma operação de compra é executada,
2) O negócio é fechado em SL ou TP,
3) Se a Linha_1 for superior à Linha_2, uma negociação não é executada até que as condições mudem. ...

Se as condições mudarem, ou seja, a Linha_2 é superior à Linha_1, uma negociação é executada. Depois tudo é repetido.
1) Se a Linha_2 for maior que a Linha_1, uma operação de compra é executada,
2) O comércio é fechado em SL ou TP,
3) Se a Linha_2 for superior à Linha_1, uma negociação não é executada até que as condições mudem. ...

E.
1) Se a Linha_1 for superior à Linha_2, uma operação de compra é executada..,
2) O comércio é fechado em SL ou TP,
3) Se a Linha_1 for superior à Linha_2, a negociação não será executada até que as condições mudem...

etc.


Pensei sobre isso e acho que entendo, mas ainda quero confirmação, se eu tiver acertado.

Há sempre apenas uma ordem no mercado. O pedido é sempre aberto quando a condição muda e sempre apenas para comprar.

 
khorosh:

(3) O parágrafo não é claro. "...até que as condições mudem" - as condições a que se faz referência não são indicadas.

Você só precisa abrir uma ordem de compra? Também não está claro se várias ordens podem existir simultaneamente no mercado ou apenas uma ordem.

Compra e Venda.
Apenas um pedido.

....
 
Link_x:
Compra e Venda.
Apenas um pedido.


Sua tarefa não diz uma palavra sobre vender, apenas comprar em qualquer lugar.
 
khorosh:
Sua tarefa não diz uma palavra sobre vender, apenas sobre comprar.


Meu erro. Eu vou consertar isso. :)


1) Se a Linha_1 é superior à Linha_2, então fazemos uma compra,
2) O comércio é fechado em SL ou TP,
3) Se a Linha_1 estiver acima da Linha_2, uma negociação não é executada até que as condições mudem. .

Se as condições mudarem, ou seja, a Linha_2 é superior à Linha_1, uma negociação é executada. Depois tudo é repetido.
1) Se a Linha_2 for superior à Linha_1, um comércio de venda é executado,
2) O comércio é fechado no SL ou TP,
3) Se a Linha_2 estiver acima da Linha_1, uma negociação não é executada até que as condições mudem. .

E.
1) Se a Linha_1 for superior à Linha_2, uma operação de compra é executada..,
2) O comércio é fechado em SL ou TP,
3) Se a Linha_1 estiver acima da Linha_2, uma negociação não é executada até que as condições mudem. .
 
Uma explicação visual:
Arquivos anexados:
 
Link_x:

Fiz asneira. Eu vou consertar isso. :)


1) Se a Linha_1 for maior que a Linha_2, uma operação de compra é executada,
2) O comércio é fechado em SL ou TP,
3) Se a Linha_1 estiver acima da Linha_2, uma negociação não é executada até que as condições mudem. .

Se as condições mudarem, ou seja, a Linha_2 é superior à Linha_1, uma negociação é executada. Depois tudo é repetido.
1) Se a Linha_2 for superior à Linha_1, um comércio de venda é executado,
2) O comércio é fechado no SL ou TP,
3) Se a Linha_2 estiver acima da Linha_1, uma negociação não é executada até que as condições mudem. .

E.
1) Se a Linha_1 for superior à Linha_2, uma operação de compra é executada..,
2) O comércio é fechado em SL ou TP,
3) Se a Linha_1 estiver acima da Linha_2, uma negociação não é executada até que as condições mudem. .

int start()
  {
//----
   
   if(Lin1>Lin2)
     {
      if(!ExistPositions("0", -1, -1, 0))
        {
         if(OrdersHistoryTotal()<1 || GetTypeLastClosePos("0", -1)==OP_SELL)
           {
            OpenPosition("0",OP_BUY,NormalizeDouble(Ask-SL*Point,Digits),
                       NormalizeDouble(Ask+TP*Point,Digits), -1);
           }
        }                         
     }
   if(Lin1<Lin2)
     {
      if(!ExistPositions("0", -1, -1, 0))
        {
         if(OrdersHistoryTotal()<1 || GetTypeLastClosePos("0", -1)==OP_BUY)
           {
            OpenPosition("0",OP_SELL,NormalizeDouble(Bid+SL*Point,Digits),
                          NormalizeDouble(Bid-TP*Point,Digits), -1);
           }
        }                         
     }  
//----
   return(0);
  }
Чтобы код работал нужно ещё записать коды всех использованных функций KimIV вне тела функции start() и
определить все значения констант и переменных ошибки по которым будут выданы при компиляции ввиду 
того что здесь они не определены..

	          
 

Feliz Ano Novo para todos! Felicidade, boa sorte, amor e, claro, enormes lucros para todos! =))


Se você for um especialista, verifique a função em busca de erros. O ponto principal desta função: deve calcular um lote necessário para que a próxima ordem em aberto cubra suas perdas em uma certa quantidade de pontos no caso de fechamento da grade de ordem.

double FindRightLot (int otype)
{
  double Lot=0; double TotalLot=0;
  for (int i = OrdersTotal()-1; i>0; i--)
  {
    if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
    {
       if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype)
       {
         if (otype == OP_BUY)
         {
           Lot = NormalizeDouble ((OrderOpenPrice()-Bid)*OrderLots()/TP,2); // ТP это то к-во пунктов, за которое след. ордер должен закрыть убыток
           if (Lot>0) // т.е. нас интересуют только убыточные ордера
           {
             TotalLot=TotalLot+Lot;
           }
         }
           
       
         else if (otype == OP_SELL)
         {
           Lot = NormalizeDouble ((Ask-OrderOpenPrice())*OrderLots()/TP,2);
           if (Lot>0)// выбираем только убыточные
           {
             TotalLot=TotalLot+Lot;
           }
           
         }
       }
     }
   }
   return (TotalLot);
   
 }