[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 416

 
VladimirR:

Essa opção também não funciona



O que será que você está procurando? Há outras opções para encontrar a área máxima. Por exemplo, analítico
 
Vinin:

Por que será que os valores do contador precisam ser alterados duas vezes no loop? E por alguma razão não há atribuição (preliminar) de S2. Este valor no início é 0, e somente na segunda iteração (mais precisamente na terceira) vai a comparação do valor real (depende de como contar a partir de zero ou de um).
Não há atribuição, pois a enumeração começa com o valor mínimo da área que é estritamente positiva, portanto 0 é suficiente. Onde os valores do contador mudam pela segunda vez?
 
Vinin:

Eu também me pergunto o que você está procurando. Há outras opções para encontrar a área máxima. Como a analítica.
O problema não é nada disso. É uma tarefa simples usada como exemplo de como funciona o operador do break. Eu preciso saber porque você não pode escrever para(int i=1, j=499; i<500; i++,j--) se você não comprometer as variáveis i,j antes do loop para escrever programas corretos mais tarde!
 
VladimirR:
Esse não é o problema de forma alguma. Esta é uma tarefa simples usada como exemplo de como funciona o operador do break. Preciso saber porque você não pode escrever para(int i=1, j=499; i<500; i++,j--) se você não comprometer as variáveis i,j antes do loop a fim de escrever os programas corretos mais tarde!

É provavelmente um bug no compilador.

Ele não compila dessa forma:

for( int i=1, j=499; i<500; i++,j--) //последовательный перебор значений площади

É assim que ele se compila:

int i, j;
for( i=1, j=499; i<500; i++,j--) //последовательный перебор значений площади

E é assim que ele se compila:

int i=1, j=499;
for( ; i<500; i++,j--) //последовательный перебор значений площади
 

Olá a todos!!!

Por favor, ajude-me a tirar o número RiskReward do indicador. Eu não consigo colocá-lo em meu Conselheiro Especialista.

Arquivos anexados:
 
demlin:

Olá a todos!!!

Por favor, ajude-me a tirar o número RiskReward do indicador. Eu não consigo colocá-lo em meu Conselheiro Especialista.


Onde está o código fonte?
 

Pessoal, por que é tão difícil me responder ou você simplesmente não quer responder? Você está resolvendo essas porcarias aqui, mas é preguiçoso demais para ajudar a escrever parte do código. Vou tentar perguntar mais uma vez, se você não me ajudar, irei a cursos, estou cansado de lhe implorar aqui.


Mais uma vez: após a EA ter sido anexada ao gráfico com o primeiro tick, ela fixa o preço Ask. Então, durante a negociação, assim que o preço aumenta, digamos, 10% (é claro que não pode ser, é figurativo), a EA deve notificar um comerciante com a mensagem "O preço aumentou em 10%".

 
demlin:

Olá a todos!!!

Por favor, ajude-me a tirar o número RiskReward do indicador. Eu não consigo colocá-lo em meu Conselheiro Especialista.

Percorra todos os objetos no gráfico, encontre um objeto chamado lbl, retire dele a string FXRanger: Risk:Reward=x.xxx, analise-o e converta x.xxx para o dobro.
 

Ajuda a consertar se as ordens forem abertas com SL, e se houver duas ordens opostas, para a segunda remove SL...., mas isso não é necessário

Obrigado

void Trailing()
{
//-----
  double Up = iCustom(NULL,0,"NLO",TrailPeriod,0,1);
  double Dn = iCustom(NULL,0,"NLO",TrailPeriod,1,1);
//-----
  int Orders = OrdersTotal();
  for (int i=0; i<Orders; i++)
  {
    if(!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
    if(OrderSymbol() != Symbol()) continue;
    {
      if(OrderType() == OP_BUY && OrderMagicNumber()==Magic && Up > OrderOpenPrice()
      && OrderStopLoss() != Up && (OrderStopLoss() == 0 || Up > OrderStopLoss()))
      {
        OrderModify(OrderTicket(),OrderOpenPrice(),Up,OrderTakeProfit(),0,CLR_NONE);
      }
      if(OrderType() == OP_SELL && OrderMagicNumber()==Magic && Dn < OrderOpenPrice()
      && OrderStopLoss() != Dn && (OrderStopLoss() == 0 || Dn < OrderStopLoss()))
      {
        OrderModify(OrderTicket(),OrderOpenPrice(),Dn,OrderTakeProfit(),0,CLR_NONE);
      }
    }
  }
}
 

Olá. Mais uma vez, não posso resolver o exemplo do tutorial.

Tarefa 17. Há 1.000 ovelhas na primeira fazenda. A cada dia o número de ovelhas na primeira fazenda aumenta em 1%. No dia em que o número de ovelhas na primeira fazenda chega a 50.000, 10% das ovelhas são transferidas para a segunda fazenda. Quanto tempo levará para que o número de ovelhas na segunda fazenda chegue a 35.000? (Assumir que há 30 dias úteis no mês).

//--------------------------------------------------------------------
// othersheep.mq4
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------------
int start()                               // Специальная ф-ия start()
  {
//--------------------------------------------------------------------
   int
   day,                                   // Текущий день месяца
   Mons;                                  // Искомое количест. месяцев
   double
   One_Farm    =1000.0,                   // Количество на 1 ферме
   Perc_day    =1,                        // Ежедневный подъём, %
   One_Farm_max=50000.0,                  // Пороговое значение
   Perc_exit   =10,                       // Разовый вывод, %
   Purpose     =35000.0,                  // Необх. колич. на 2 ферме
   Two_Farm;                              // Количество на 2 ферме
//--------------------------------------------------------------------
   while(Two_Farm < Purpose)              // До достижения цели
     {                                    // Начало тела внешн. цикла
      //--------------------------------------------------------------
      for(day=1; day<=30 && Two_Farm < Purpose; day++)// Цикл по дням 
        {
         One_Farm=One_Farm*(1+Perc_day/100);//Накопл. на 1 ферме
         if (One_Farm < One_Farm_max)     // Если меньше допустимого,.
            continue;                     // .. то овец не переводим
         Two_Farm=Two_Farm+One_Farm*Perc_exit/100;//Накопл. на 2 ферме
         One_Farm=One_Farm*(1-Perc_exit/100);     //Остаток на 1 ферме
        }
      //--------------------------------------------------------------
      if (Two_Farm>=Purpose)              // Если цель достигнута,..
         continue;                        // .. то месяцы не считаем
      Mons++;                             // Считаем месяцы
     }                                    // Конец тела внешнего цикла
//--------------------------------------------------------------------
   Alert("Цель будет достигнута через ",Mons," мес. и ",day," дн.");
   return;                                // Выход из функции start()
  }
//-------------------------------------------------------------------

Neste exemplo, a saída do laço

 for(day=1; day<=30 && Two_Farm < Purpose; day++)// Цикл по дням 

O "dia extra" é sempre adicionado, ou seja, um dia para o qual nenhum cálculo é realizado é adicionado, mas como o ciclo é aninhado, o "dia extra" permanece.

Toda vez que o controle volta a ele, os dias são recontados novamente, portanto não é essencial. Mas quando o laço é encerrado

while(Two_Farm < Purpose)              // До достижения цели

o "dia extra" permanece. E como resultado, a resposta errada será impressa.

Você pode me dizer se o meu raciocínio está correto ou se eu recebi algo errado?