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 76

 
lottamer:


DC é de cinco dígitos...

o que significa SEM o DoubleToStr(YourPrice,5) ? eu tenho DoubleToStr(YourPrice,5) em nenhum lugar

Se você apenas colocar uma variável dupla em algum lugar em Imprimir ou Alerta (Print(doubleVariable)), apenas quatro casas decimais serão impressas; se você colocar Print(DoubleToStr(doubleVariable,N)) - o programa irá imprimir N casas decimais.
 
Pergunta aos moderadores - muitas vezes o site me envia de volta para a reautorização. Quando tento fazer o login, a mensagem "Seu acesso é temporariamente restrito ou negado" é exibida. Então, após algumas horas, o acesso é restaurado. Qual poderia ser o problema?
 
Obrigado a todos pelos conselhos, mas, logicamente, não há diferença entre as duas opções.
  • para (int i=1; i<=OrdensTotal(); i++)
  • para (int i=OrdensTotal()-1; i>=0; i--)
Ou eu estou errado? A propósito, isto não ajudou....


O estranho é que a EA apaga completamente todas as ordens sob esta condição:
  • para (int i=0; i<=OrdensTotal(); i++)
  • para (int i=OrdensTotal(); i>=0; i--)
Alguém pode entender por quê?

 
yosuf:
Pergunta aos moderadores - muitas vezes o site me envia de volta para a reautorização. Quando tento fazer o login, a mensagem "Seu acesso é temporariamente restrito ou negado" é exibida. Então, após algumas horas, o acesso é restaurado. Qual poderia ser o problema?
Universo Homeostático. Os moderadores não podem afetar a autorização. Proibido apenas permanentemente.
 
granit77:
Universo Homeostático. Os moderadores não podem afetar a autorização. Proibido apenas permanentemente.
O que fazer agora? A quem recorrer?
 
yosuf:
O que fazer agora? A quem recorrer?

Para o moderador do universo.
 
yosuf:
Pergunta aos moderadores - muitas vezes o site me envia de volta para a reautorização. Quando tento fazer o login, a mensagem "Seu acesso é temporariamente restrito ou negado" é exibida. Então, após algumas horas, o acesso é restaurado. Qual poderia ser o problema?

Você está sendo pisoteado)))) Você é um indivíduo carismático))))
 

Saudações.

Você pode me dizer como levar em conta um cruzamento de preços com uma linha indicadora?

o indicador tem três linhas: fundo, meio e topo.

aqui está um exemplo:

quando o preço cruzou a linha superior, preciso fixar este momento e usá-lo depois, quando o preço está abaixo da linha superior e acima da linha média, e quando o preço está abaixo da linha média, preciso repor o resultado fixado. Não preciso lembrar o preço onde ocorreu o cruzamento, só preciso colocar uma marca de verificação para indicar que o cruzamento ocorreu e depois limpá-lo.

LineUp //верхняя линия

LineS // средняя линия

LineDown // нижняя линия

Ask >  LineUp // фиксируем

Ask < LineS // сбрасываем

и так же с нижней линией

Bid < LineDown // фиксируем

Bid > LineS //  сбрасываем

Eu tentei com Verdadeiro e falso, não funcionou, não consigo entender o porquê.

Eu tentei isso:

double LineUp; //верхняя линия индикатора

double LineS; // средняя линия индикатора

double LineDown; // нижняя линия индикатора

bool FiksiruemUp = False;

 bool FiksiruemDown = False;

if ( Ask >  LineUp)  FiksiruemUp = True; // фиксируем

if (Ask < LineS) FiksiruemUp = False; // сбрасываем

// и так же с нижней линией

if (Bid < LineDown)  FiksiruemDown = True; // фиксируем

if (Bid > LineS)  FiksiruemDown = False; //  сбрасываем

 

// дальше в коде я к нему обращаюсь:

if ( FiksiruemUp == True) 

{

то нужно сделать это . . . . . . 

} 

e não funciona. Por que não? Ajude-me a entender.

 
Caros usuários do fórum, por favor, ajudem-me, não consigo encontrar um bug no código do meu EA, ou seja, ele não pode ou não quer fechar posições por indicador, apenas por tp ou sl, aqui, como me parece, parte do código, que está associado a este problema, muito obrigado de antemão
int start()
  {
   int
   Total,                           // Количество ордеров в окне 
   Tip,                          // Тип выбран. ордера (B=0,S=1)
   Ticket;                          // Номер ордера
   double
   FT1,                              // Значение 0 буффера Forex Trend
   FT2,                             // Значение 1 буффера Forex Trend
   TL1,                              // Значение 1 буффера Trend Lord
   TL2,                              // Значение 0 буффера Trend Lord                          
   FI,                               // Значен. Force Index текущее 
   Lot,                             // Колич. лотов в выбран.ордере
   Lts,                             // Колич. лотов в открыв.ордере
   Min_Lot,                         // Минимальное количество лотов
   Step,                            // Шаг изменения размера лота
   Free,                            // Текущие свободные средства
   One_Lot,                         // Стоимость одного лота
   Price,                           // Цена выбранного ордера
   SL,                              // SL выбранного ордера 
   TP;                              // TP выбранного ордера
   bool
   Ans  =false,                     // Ответ сервера после закрытия
   Cls_B=false,                     // Критерий для закрытия  Buy
   Cls_S=false,                     // Критерий для закрытия  Sell
   Opn_B=false,                     // Критерий для открытия  Buy
   Opn_S=false;                     // Критерий для открытия  Sell
                                                        
   
//--------------------------------------------------------------- 3 --
   // Предварит.обработка
   if(Bars < Period_FI)                       // Недостаточно баров
     {
      Alert("Недостаточно баров в окне. Эксперт не работает.");
      return;                                   // Выход из start()
     }
   if(Work==false)                              // Критическая ошибка
     {
      Alert("Критическая ошибка. Эксперт не работает.");
      return;                                   // Выход из start()
     }
//--------------------------------------------------------------- 4 --
   // Учёт ордеров
   Symb=Symbol();                               // Название фин.инстр.
   Total=0;                                     // Количество ордеров
   for(int i=1; i<=OrdersTotal(); i++)          // Цикл перебора ордер
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:
         if (OrderSymbol()!=Symb)continue;      // Не наш фин. инструм
         if (OrderType()>1)                     // Попался отложенный
           {   
            Alert("Обнаружен отложенный ордер. Эксперт не работает.");
            return;                             // Выход из start()
           }
         Total++;                               // Счётчик рыночн. орд
         if (Total>1)                           // Не более одного орд
           {
            Alert("Несколько рыночных ордеров. Эксперт не работает.");
            return;                             // Выход из start()
           }
         Ticket=OrderTicket();                  // Номер выбранн. орд.
         Tip   =OrderType();                    // Тип выбранного орд.
         Price =OrderOpenPrice();               // Цена выбранн. орд.
         SL    =OrderStopLoss();                // SL выбранного орд.
         TP    =OrderTakeProfit();              // TP выбранного орд.
         Lot   =OrderLots();                    // Количество лотов
        }
     }
//--------------------------------------------------------------- 5 --
   // Торговые критерии
                          
   TL1=iCustom(NULL, 0, "TrendLord", 1, 1);                          // trend lord синий
   TL2=iCustom(NULL, 0, "TrendLord", 0, 1);                          // красный тренд лорд
   FI=iForce(NULL, 0, Period_FI,MODE_EMA,PRICE_CLOSE,0);            // FI
   FT1=iCustom(NULL, 0, "ForexTrend", 7, 50.6, 999999, 0, 1);                        // forex trend blue
   FT2=iCustom(NULL, 0, "ForexTrend", 7, 50.6, 999999, 1, 1);                        // forex trend red


   if (TL2 == EMPTY_VALUE && FT1 == 1 && FT2 == 0 && FI > 0)
   {
      Opn_B = true;
      
   
      
   }
   while (Opn_B == true)
   {
      if (FI <= 0)
      {
         Cls_B=true;
      }
  break;
   }      
      
   if (TL1 == EMPTY_VALUE && FT2 == 1 && FT1 == 0 && FI < 0)
   {
      Opn_S = true;
      
     
      
   }
   while (Opn_S == true)
   {
      if (FI >= 0)
      {
         Cls_S=true;
      }
   break;
   }    
//--------------------------------------------------------------- 6 --
   // Закрытие ордеров
   while(true)                                  // Цикл закрытия орд.
     {
      if (Tip==OP_BUY && Cls_B==true)                // Открыт ордер Buy..
        {                                       //и есть критерий закр
         Alert("Попытка закрыть Buy ",Ticket,". Ожидание ответа..");
         RefreshRates();                        // Обновление данных
         Ans=OrderClose(Ticket,Lot,Bid,2);      // Закрытие Buy
         if (Ans==true)                         // Получилось :)
           {
            Alert ("Закрыт ордер Buy ",Ticket);
            break;                              // Выход из цикла закр
           }
         if (Fun_Error(GetLastError())==1)      // Обработка ошибок
            continue;                           // Повторная попытка
         return;                                // Выход из start()
        }

      if (Tip==OP_SELL && Cls_S==true)                // Открыт ордер Sell..
        {                                       // и есть критерий закр
         Alert("Попытка закрыть Sell ",Ticket,". Ожидание ответа..");
         RefreshRates();                        // Обновление данных
         Ans=OrderClose(Ticket,Lot,Ask,2);      // Закрытие Sell
         if (Ans==true)                         // Получилось :)
           {
            Alert ("Закрыт ордер Sell ",Ticket);
            break;                              // Выход из цикла закр
           }
         if (Fun_Error(GetLastError())==1)      // Обработка ошибок
            continue;                           // Повторная попытка
         return;                                // Выход из start()
        }
      break;                                    // Выход из while
 
belck:

Saudações.

Você pode me dizer como levar em conta um cruzamento de preços com uma linha indicadora?

o indicador tem três linhas: fundo, meio e topo.

aqui está um exemplo:

quando o preço cruzou a linha superior, preciso fixar este momento e usá-lo depois, quando o preço está abaixo da linha superior e acima da linha média, e quando o preço está abaixo da linha média, preciso repor o resultado fixado. Não preciso lembrar o preço onde ocorreu o cruzamento, só preciso colocar uma marca de verificação para indicar que o cruzamento ocorreu e depois limpá-lo.

Eu tentei com Verdadeiro e falso, não funcionou, não consigo entender o porquê.

Eu tentei isso:

e não funciona. Por que não? Ajude-me a entender.


Não funciona, porque você precisa trazer as variáveis que deseja comprometer para o nível global, ou seja, antes da função Start... Por exemplo, estes e assim por diante.... " FiksiruemUp = True; // commit " e "iksiruemUp = False; // reset"
Se você não alternar entre os prazos, deve funcionar...
Razão: