[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 385

 
Michey25 >>:

что тут не так?

Короче этот советник я прикрепляю к часовому графику, и если цена в начале часа выше чем cn1 а текущая не привышает её на 8 пунктов то ордер должен открыться (также если цена ниже текущего уровня) А он у меня почему-то сразу открывает позицию. Почему?

E onde está escrita a condição de 8 pontos? É melhor multiplicar oito por MarketInfo(NULL,MODE_POINT);

 
splxgf >>:

А где записано условие на 8 пунктов? лучше восемь умножать на MarketInfo(NULL,MODE_POINT);

(a-cn1)<0.0008)

 
Ajude-me a fundir dois EAs. Expert PYLOSE fecha ordens com uma certa MAGIKOM quando uma determinada quantia de dinheiro, e a EA Trailing trails trails equity quando atinge uma determinada quantia.help me insert some code from Trailing in PYLOSE, it also trails, but does not close orders with a given MAGIKOM when it reaches a specified amount.and possibly comment on the trailing funds displayed on the screen.thanks!
Arquivos anexados:
archive_1.zip  10 kb
 

Michey25


quando eu estava respondendo o código era um pouco diferente ;)

Embora haja algumas perguntas, o resultado da op(0) depende muito do cronograma atual. não está claro de onde vem o cn e que tipo são.

Você não pode fazer Alert(Open[0],cn1,Open[0]<cn1,a,(a-cn1)<0,0008)?

Também é melhor usar o break em vez de i=1, isto sairá imediatamente do loop em vez de executar todos os comandos até o final.

int i=0;
   double a,b;
   while (i==0)
   {
     a=MarketInfo("USDCAD", MODE_ASK);
     b=MarketInfo("USDCAD", MODE_BID); 
     if((Open[0]<cn1)&&((a-cn1)<0.0008))
      {
       OrderSend("USDCAD",OP_BUY,1,a,1,SL,cn2);
       i=1;
       }
     if((Open[0]>cn11)&&((cn11-b)<0.0008))
      {
       OrderSend("USDCAD",OP_SELL,1,b,1,SL1,cn21);
       i=1;
      }  
   }
 

Olá. Por favor, ajude-me a implementar o seguinte Existem duas condições independentes em uma EA, com base nas quais são abertas ordens separadas, cada uma com sua própria magia. A qualquer momento em uma tabela pode haver apenas uma ordem para cada uma das condições, e elas podem estar ao mesmo tempo umas com as outras. Para verificar a possibilidade de abertura de pedidos, eu faço a seguinte estrutura

int CalculateCurrentOrders(string symbol)
  {
   int buys=0, sells=0, buystop=0, sellstop=0;
//----
   for(int i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect( i, SELECT_BY_POS, MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && (OrderMagicNumber()== MAGIC1 || OrderMagicNumber()== MAGIC2))
              {
         if(OrderType()==OP_BUY)  buys++;
         if(OrderType()==OP_SELL) sells++;
          if(OrderType()==OP_BUYSTOP)  buys++;
         if(OrderType()==OP_SELLSTOP) sells++;
        }
     }
//----
   if( buys>0) return( buys);
   else       return(- sells);

Mas as ordens só são abertas com a segunda magia.

Em seguida, os pedidos também são fechados independentemente um do outro. Ao mesmo tempo, a ordem com a primeira mágica usa uma rede de arrasto e a segunda não

Usei este exemplo, mas o fechamento ou não acontece de acordo com as regras da primeira ou da segunda condição, ou não acontece de forma alguma

 

  for(int i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect( i, SELECT_BY_POS, MODE_TRADES)) 
      if(OrderSymbol()==Symbol() && OrderMagicNumber()== MAGIC1)
     if(OrderType()==OP_BUY) 
     if ( Sell1==1)
             {
              OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
              return(0);
             }
                     
      if(OrderType()==OP_SELL) 
      if ( Buy1==1)
             {
              OrderClose(OrderTicket(),OrderLots(),Ask,3,Green);
              return(0);
             }
  
      if(OrderType()==OP_BUYSTOP && Sell1==1)
         {
         OrderDelete(OrderTicket());
         return(0);
         }
      if(OrderType()==OP_SELLSTOP && Buy1==1)
         {
         OrderDelete(OrderTicket());
         return(0);
         }
    }
   
   for(int i2=0; i2<OrdersTotal(); i2++)
     {
      if(OrderSelect( i2, SELECT_BY_POS, MODE_TRADES)) 
   
         if(OrderSymbol()==Symbol() && OrderMagicNumber()== MAGIC2)
     if(OrderType()==OP_BUY)
      if ( Sellcl0==1)
       {

       OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
              return(0);
            }
                 
    if(OrderType()==OP_SELL) 
    if ( Buycl0==1)
    
            {
              OrderClose(OrderTicket(),OrderLots(),Ask,3,Green);
              return(0);
          
        }
     if(OrderType()==OP_BUYSTOP) 
     if ( Sellcl0==1)
         {
         OrderDelete(OrderTicket());
         return(0);
         }
      if(OrderType()==OP_SELLSTOP && Buycl0==1)
        {
         OrderDelete(OrderTicket());
        return(0);
         }
      }   
    
     // MODIFICATION -------
     
     TrailingPositionsBuy( parab);
    TrailingPositionsSell( parab);
   // TrailingPositionsBuystop(parab);
   // TrailingPositionsSellstop(parab);
    return (0);
   }
/*bool ExistPositions() {
   for (int i=0; i<OrdersTotal(); i++) {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) {
            return(True);
         }
      } 
   } 
   return(false);
}*/
     
void TrailingPositionsBuy(double parab) { 
   for (int i=0; i<OrdersTotal(); i++) { 
      if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES)) { 
         if (OrderSymbol()==Symbol() && OrderMagicNumber()== MAGIC1) { 
            if (OrderType()==OP_BUY) { 
             //  if (Bid-OrderOpenPrice()>trailingStop*Point) { 
              //    if (OrderStopLoss()<Bid-trailingStop*Point) 
                     ModifyStopLoss( parab);
                                   
               } 
            } 
         } 
      } 
   } 
//} 
void TrailingPositionsSell(double parab) { 
   for (int i=0; i<OrdersTotal(); i++) { 
      if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES)) { 
         if (OrderSymbol()==Symbol() && OrderMagicNumber()== MAGIC1) { 
            if (OrderType()==OP_SELL) { 
             //  if (OrderOpenPrice()-Ask>trailingStop*Point) { 
             //     if (OrderStopLoss()>Ask+trailingStop*Point || OrderStopLoss()==0)  
                     ModifyStopLoss( parab);
                  
               } 
            } 
         } 
      } 
   } 

Sell1, buy1, sellcl0, buycl0 são descrições das condições de fechamento.


Será que essa dupla substituição de cargos funcionaria de alguma forma? Obrigado!

 
exolon >>:

Здравствуйте. Помогите пожалуйста реализовать такую вещь. В одном эксперте работают 2 независимых условия, на основе которых открываются отдельные ордера, каждый со своим magic. В каждый момент времени на одном графике может быть только один ордер по каждому из условий, при этом они могут быть одновременно друг с другом. Для проверки возможности открытия ордеров делаю такую конструкцию

Но открываются ордера только со вторым magic.

Далее, закрываются ордера тоже независимо друг от друга. При этом ордер с первым magic использует трал, а второй нет

Применил вот такой вариант, но закрытия либо происходят не по правилам ни от первого, ни от второго условия, либо не происходят вообще

sell1, buy1, sellcl0, buycl0 - описания условий на закрытие.


Будет ли вообще работать такой двойной перебор позиций? Благодарю!


após fechar e apagar as ordens, remover o retornado e colocá-lo no final da função ou, em vez disso, colocar um continuum

 

Olá a todos, estou escrevendo meu primeiro programa mql e aprendendo a língua ao mesmo tempo.

Estou aprendendo a língua. Você pode me aconselhar, por favor?


Tenho uma pergunta: se estou escrevendo meu primeiro programa mql, gostaria de saber o que há de errado com ele. Você pode me dizer o que está errado? Passei quatro horas olhando o livro de referência, eu mesmo não o entendo.


void CheckSell()
{
while(!(NormalizeDouble(Price,Digits) < NormalizeDouble(MA10,Digits)))
{
Sleep(5);
RefreshRates();
}
Sell();
}

 
Jahspear писал(а) >>

Olá a todos, estou escrevendo meu primeiro programa mql e aprendendo a língua ao mesmo tempo.

Estou aprendendo a língua. Você pode me aconselhar, por favor?

Tenho uma pergunta: se estou escrevendo meu primeiro programa mql, gostaria de saber o que há de errado com ele. Você pode me dizer o que está errado? Eu folheei o livro de referência por cerca de quatro horas, não o entendo.

void CheckSell()
{
while(!(NormalizeDouble(Price,Digits) < NormalizeDouble(MA10,Digits)))
{
Sleep(5);
RefreshRates();
}
Sell();
}

E pelo que eu fiz o laço. Se não houver nenhuma condição, não devemos esperar por um número desconhecido de dias para que o sinal apareça.

 

Boa tarde.

O indicador tem IndicatorShortName("iC_C_mod, ..... ");

Entretanto, preciso, além deste título, inserir um comentário com uma variável que muda dinamicamente na janela indicadora.

Como f-i Comentário();

Preciso dele na janela indicadora, mas não no gráfico.

Favor aconselhar ?

 
Jahspear >>:



void CheckSell()
{
if((NormalizeDouble(Price,Digits) < NormalizeDouble(MA10,Digits)))
Sell();
}


Provavelmente algo assim, porque os loops infinitos demoram muito tempo em hardware moderno.