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 452

 
Profitov:
Surgiu a questão, é possível escrever um Expert Advisor ou roteiro, que seria, por exemplo, conseguir uma perda de 2% no dia, fecharia todas as transações?

Isso é possível.
 
Ajuda -- comprei um laptop novo com vin.8 instalado -- fiz o download do terminal da última atualização da alpari -- carreguei indicadores com os quais trabalhei antes, na pasta MQL4-indicadores, eles aparecem lá -- mas no terminal em si nos usuários não os vêem, o suporte ao cliente não diz nada direto - o que fazer?
 
galinka:
Ajuda -- comprei um laptop novo com vin.8 instalado -- fiz o download do terminal da última atualização da alpari -- carreguei indicadores com os quais trabalhei antes, na pasta MQL4-indicadores, eles aparecem lá -- mas no terminal em si nos usuários não os vêem, o atendimento ao cliente não diz nada direto - o que fazer?

O menu do sistema "Arquivo" tem um novo item "Abrir pasta de dados". É onde você tem que colocá-lo agora.
 
Não podem fazer - não estão no terminal
 

Devo ter entendido mal o que fazer - arquivos de programas - tenho Alpari - abro ---- há pastas ---- MQL4- indikators - coloco-as - elas aparecem - fecho - abro o terminal - elas não estão nos arquivos do usuário

 
Talvez haja algo em meus indicadores que precise ser mudado
 

Obrigado por ter ajudado.

 
1mql:

Abaixo do último deslize externo:
deslize interno externo = 2; // deslize de preço ao fechar posições de mercado

inserir outro:
deslize interno externo:
deslize interno total_symb = verdadeiro; // em todos os pares

e em todas as linhas: if ((OrderSymbol() == Symbol()))
e
if(OrderSymbol() == Symbol())

substituir este:
if(OrderSymbol() == Symbol() || total_symb)

em teoria deve funcionar, verifique.


Fecha apenas alguns gráficos onde a posição é ativada. em outros um erro 4107 fechará. Tentei mudar de bool externo Comprar = falso; //apagar/fechar direção dos pedidos de compra
bool externo Vender = falso; //apagar/fechar direção do pedido de venda. em verdadeiro . não funcionou. mas se, por exemplo, o colocarmos em um gráfico sem posição aberta, nenhum deles fecha e o erro 4107 é visto.
 
Profitov:
Surgiu a questão, é possível escrever um Expert Advisor ou roteiro, que seria, por exemplo, conseguir uma perda de 2% no dia, fecharia todas as transações?
está escrito.
 
alsu:

Portanto, o ticket ainda está sendo usado em algum lugar na versão antiga. Temos que limpar o código...

Feito da seguinte forma:

 Symb=Symbol();                               // Название фин.инстр.
   Total=0;                                     // Количество ордеров
   int order[7];//буффер для семи ордеров
   int ord;//количество ордеров
   ArrayInitialize(order,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;}
         Total++;                               // Счётчик рыночн. орд
         if (Total>7){Alert("Более 7 ордеров. Эксперт не работает.");return;}
         Ticket=OrderTicket();                  // Номер выбранн. орд.
         Tip   =OrderType();                    // Тип выбранного орд.
         order  [OrderType()]++;                    // ПОЛУЧАЕМ КОЛИЧЕСТВО ОРДЕРОВ         
         Price =OrderOpenPrice();               // Цена выбранн. орд.
         SL    =OrderStopLoss();                // SL выбранного орд.
         TP    =OrderTakeProfit();              // TP выбранного орд.
         Lot   =OrderLots();                    // Количество лотов
        }
     }
     ord=order  [OrderType()];

 while(true)                                  // Цикл закрытия орд.
     {
      if (Tip==0 && Cls_B==true)                // Открыт ордер Buy..
        {                                       //и есть критерий закр
         Alert("Попытка закрыть Buy ",Ticket,". Ожидание ответа..");
         RefreshRates();                        // Обновление данных
         Ans=OrderClose(Ticket,Lot,Bid,2);      // Закрытие Buy
         if (Ans==true){Alert ("Закрыт ордер Buy ",Ticket);if (ord ==0){Alert ("Закрыты все ордера ",ord);break;}}
         if (Fun_Error(GetLastError())==1)      // Обработка ошибок
            continue;                           // Повторная попытка
         return;                                // Выход из start()
        }

As posições estão completamente fechadas. É verdade que o erro zero sai, mas as docas dizem que isso significa que não há erros. E não consigo encontrar a mensagem"Todos os pedidos fechados" no registro.

Eu ousei as linhas que eu mudei. Parece funcionar, eu ainda não verifiquei completamente.

Não entendo bem como funcionam os loops. Suponha que eu tenha código acima e abaixo e no meio do laço. Se as condições do laço coincidirem, o código é executado apenas dentro do laço e não deixa que as linhas de código abaixo do laço sejam executadas? Considerando este exemplo, o operador dorompimento interrompe o loop? Está permitindo a execução de linhas abaixo do laço, ou o programa começa a calcular desde o início?

Corrija-me se eu estiver errado: o break interrompe o loop em que está, enquantocontinua a avaliação do operador acima dele, então não está claro se há um segundo operador - sua avaliação será interrompida oucontinua interrompendo todo o código e envia o programa para executá-lo primeiro?