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 710

 
sponger:
Você pode fazer isso: Km=MathMax(i/r,Point); // com divisão, e não será zero!
 
borilunad:
Você pode fazer isso: Km=MathMax(i/r,Point); // com divisão, e não será zero!

uau!!! Cabeça! Muito obrigado!!!! Depois do trabalho extremamente tedioso de quatro horas, finalmente descobri como colar esta função para que o testador não jurasse) saiu sobre o seguinte.

double a=iLowest(Symbol(),PERIOD_M1,MODE_LOW,m1,0); // índice de barras de retorno para n-períodos com preço mínimo

double b=iHighest(Símbolo(),PERÍODO_M1,MODE_HIGH,m1,0); //retornar o índice de barras para n-períodos com preço máximo

duplo MinLOWPeriod=iLow(Símbolo(),PERÍODO_M1,a); //retorna o valor do preço de barra com o preço mais baixo

duplo MaxHIGHPeriod=iHigh(Símbolo(),PERÍODO_M1,b); //retornar o preço da barra com o preço mais alto

double PriceCloseBar=iClose(Symbol(),PERIOD_M1,0); //retornar o preço de fechamento da última barra

duplo xm1=(PriceCloseBar-MinLOWPeriod)/(MathMax((MaxHIGHPeriod-MinLOWPeriod)/100,Point)));

Impressão(xm1);

e também tornou a fórmula mais suave;)

Obrigado!

 
Жалко, кнопочки "Спасибо" нету(
 

sponger:

Éuma pena que não haja um botão de "Obrigado".

Mas há outro botão mágico: SRC, quando você o usa, o código (ou seus fragmentos) fica mais limpo e mais legível no posto do questionador, adicionando um plus ao carma do questionador e aumentando o número daqueles que irão olhar para este código e decidir ajudar.

Apenas shhhh. . Assim, no conhecimento secreto da magia do botão SRC são dedicados, em geral, apenas aqueles que lêem os textos sagrados dos manuais no site. Por exemplo, tais como estes.

E sucesso para você aqui no domínio do conhecimento secreto na solução de outras questões!
 
sponger:

uau!!! Cabeça! Muito obrigado!!!! Após um trabalho extremamente tedioso de quatro horas, finalmente descobri como colar esta função para que o testador não jurasse) saiu aproximadamente o seguinte.

duplo xm1=(PriceCloseBar-MinLOWPeriod)/(MathMax((MaxHIGHPeriod-MinLOWPeriod)/100,Point)));

Impressão(xm1);

e também tornou a fórmula mais suave;)

Obrigado!

Seja bem-vindo! E eu concordo 100% comDiPach! Boa sorte!
 
void ChagingLots(int Magic,double percent,double lot)
{ 
  double t=2,             //коэффициент при делении,для того чтобы узнать цену закрытия
         PriceCl,         //цена закрытия части ордера
         takeprofit;      //нужна для вычислений
  int count = 0,order;
  for(int i=OrdersTotal()-1;i>=0;i--)    //пробегаемся по массиву ордеров
     {
        if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
          {
            if(OrderSymbol()==Symbol() && OrderMagicNumber() == Magic)
              {
                 if(OrderType()== OP_BUY)        //если ордер на покупку
                 {
                 takeprofit = OrderTakeProfit();   //вычисляем тейк ордера
                 PriceCl    = NormalizeDouble((takeprofit + OrderOpenPrice())/t,Digits);  //примерную цену закрытия
                 order = OrderTicket();    //получили ордер
                 if(Bid>PriceCl) //если текущая цена оказалась выше нашей цены ,то закрываем часть ордера
                 {OrderClose(order,NormalizeDouble(lot*percent/100,2),PriceCl,3);} 
                 }
                 if( OrderType()== OP_SELL )// для продажи аналогично
                 {
                   takeprofit = OrderTakeProfit();
                   PriceCl    = NormalizeDouble((takeprofit + OrderOpenPrice())/t,Digits);
                   order = OrderTicket();
                   if(Bid<PriceCl)
                   {OrderClose(order,NormalizeDouble(lot*percent/100,2),Bid,3);}
                 }
              }
          }
     }
     
}

Olá a todos)

Tentei escrever uma função para fechar uma parte da posição, mas quando corro no testador, 138 está surgindo um erro, não entendo qual é o problema. Ajude-me, por favor.

Aqui está um consultor especializado no qual esta função deve funcionar)

Arquivos anexados:
zigzagx.mq4  16 kb
 
LBatters:

Olá a todos)

Tentei escrever uma função para fechar uma parte da posição, mas quando corro no testador, 138 está surgindo um erro, não entendo qual é o problema. Ajude-me, por favor.

Eu tenho um EA onde esta função deve funcionar).

Você olhou no Dock, o que este erro significa! A partir daí você encontrará a resposta!

A que preço a compra é fechada? E o Sell?

 

Saudações a todos
Minha pergunta está mais relacionada com os desenvolvedores de cotas de metáforas, mas mesmo assim...


Сколько баров храниться история? Т.е. с каким максимальным по сдвигу баром можно работать?

Código:

Print(iMA(Symbol(),0,14,0,MODE_SMA,PRICE_CLOSE,1200));

Print(iClose(Symbol(),0,1200));

Ao testar este turno, o terminal sai 0,0 para 2 caixas

Mas

Print(iMA(Symbol(),0,14,0,MODE_SMA,PRICE_CLOSE,120));

Print(iClose(Symbol(),0,120)); 

No teste tudo funciona

É possível ajustar de alguma forma o tamanho da história disponível? Talvez alguém tenha enfrentado tal problema e já tenha sido encontrada uma solução?
Obrigado de antemão!

 

Olá a todos.

Estou tentando atualizar uma simples rede de arrasto EA da Kim para apagar ordens pendentes depois de fechar todas as ordens do mercado, ela falha(

Eu adicionei função para excluir ordens pendentes:

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 28.11.2006                                                     |
//|  Описание : Удаление ордеров                                               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любой ордер)                    |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
void DeleteOrders(string sy="", int op=-1, int mn=-1) {
  bool fd;
  int  err, i, it, k=OrdersTotal(), ot;

  if (sy=="0") sy=Symbol();
  for (i=k-1; i>=0; i--) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot>1 && ot<6) {
        if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) {
            for (it=1; it<=NumberOfTry; it++) {
              if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
              while (!IsTradeAllowed()) Sleep(5000);
              fd=OrderDelete(OrderTicket(), clDelete);
              if (fd) {
                if (UseSound) PlaySound(SoundSuccess); break;
              } else {
                err=GetLastError();
                if (UseSound) PlaySound(SoundError);
                Print("Error(",err,") delete order ",GetNameOP(ot),": ",ErrorDescription(err),", try ",it);
                Sleep(1000*5);
              }
            }
          }
        }
      }
    }
  }
}

Enfrentei outro problema que eu não deveria ser capaz de resolver porque não sou muito bom em codificação.

Acho que eu deveria escrever uma condição como esta:

Este é apenas um exemplo de outro EA.

   if(AccountProfit()<-TargetLoss || AccountProfit()>TargetProfit) 
     {
      ClosePosFirstProfit();
      if(DeleteOrders) DeleteOrders();
     }


Por favor, me ajude.

Arquivos anexados:
tral.mq4  19 kb
 
Senhores conhecedores do MQL-4, como o MQ4 pode descarregar e carregar um indicador novamente?