[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 619

 
kwadrad:

O que você pode fazer a respeito disso?

atualizar os dados antes da abertura, normalizar o preço

Vinina:

Escrevi imediatamente que este fechamento não é recomendado. Um recurso indocumentado está sendo usado. Mas qualquer posição aberta tem um tempo de fechamento zero, e o preço de fechamento será igual ao preço de fechamento atual.

depois de todas essas experiências já é óbvio)

 
kwadrad:

O que pode ser feito a respeito?

Olhe com atenção os preços que você fixa quando abre uma posição. Certamente deve haver... Ask está misturado com Bid?
 
artmedia70:
Veja cuidadosamente os preços que você fixa ao abrir uma posição. Certamente deve haver... Ask está misturado com Bid?

Sim, é. Eu tenho.
 
kwadrad:

é. Obrigado.
De nada - é a primeira coisa com que os novatos se confundem, eu sei que...
 
Alguém fez uma simples parada de rastreamento mover uma ordem pendente atrás do preço em vez do nível de parada? É possível fazer?
Eu tentei e tentei, mas tudo o que consegui foi que a ordem pendente se mova para trás e para frente atrás do preço como um homem doente...

É possível retrabalhar a simples função de rastreamento para que ela lide com pedidos em vez de paradas? Por exemplo, este aqui:

//+----------------------------------------------------------------------------+
//|  Сопровождение позиции простым тралом                                      |
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" - текущий символ)                   |
//|    op - операция                   (-1 - любая позиция)                    |
//|    mn - MagicNumber                (-1 - любой магик)                      |
//+----------------------------------------------------------------------------+
  void TrailingPositionsSimplTR(string sy="", int op=-1, int mn=-1) {
  double p, pp;
  int    i, k=OrdersTotal();

  if (sy=="" || sy=="0") sy=Symbol();
  p=MarketInfo(sy, MODE_POINT);
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy && (op<0 || OrderType()==op)) {
        if (mn<0 || OrderMagicNumber()==mn) {
          if (OrderType()==OP_BUY) {
            pp=MarketInfo(sy, MODE_BID);
            if (!ProfitTrailing || (pp-OrderOpenPrice())>TrailingStopBuy*p) {
              if (OrderStopLoss()<pp-(TrailingStopBuy+TrailingStepSimplTR-1)*p) {
                ModifyOrder(sy, -1, pp-TrailingStopBuy*p, 0, clModifyBuy);//
              }
            }
          }
          if (OrderType()==OP_SELL) {
            pp=MarketInfo(sy, MODE_ASK);
            if (!ProfitTrailing || OrderOpenPrice()-pp>TrailingStopSell*p) {
              if (OrderStopLoss()>pp+(TrailingStopSell+TrailingStepSimplTR-1)*p || OrderStopLoss()==0) {
                ModifyOrder(sy, -1, pp+TrailingStopSell*p, 0, clModifySell);
              }
            }
          }
        }
      }
    }
  }
}
 
ToLik_SRGV:

A impressão() arredonda até 4 dígitos para emitir corretamente para o console o tipo duplo(que retorna iOpen() 5 casas decimais, neste caso), você deve usar a função DoubleToStr()

string DoubleToStr( valor duplo, dígitos int )
Converte um valor numérico para uma string de texto contendo uma representação de caracteres de um número no formato de precisão especificado.

Parâmetros:

value - Величина с плавающей точкой.

digits - Формат точности, число цифр после десятичной точки (громное спасибо.


Muito obrigado .
 
Roger:


Confira esta EA, eu a implementei lá

http://www.rogersignals.com/ru/experts.php?a=Support_Resistance

OK, obrigado, eu vou dar uma olhada...
 
artmedia70:
Alguém fez uma simples parada de rastreamento mover uma ordem pendente atrás do preço em vez do nível de parada? É possível fazer?
Eu tentei e tentei, mas tudo o que consegui foi que a ordem pendente andasse para trás e para a frente atrás do preço como uma pessoa doente.

É possível retrabalhar a simples função de rastreamento para que ela lide com pedidos em vez de paradas? Por exemplo, este aqui:

Tudo é muito complicado :))))
Aqui está meu código

//+------------------------------------------------------------------+
void trailingOrder(int magic, int trailing){
   int index = 0;
   while(trailing > 0 && OrdersTotal() != 0 && OrderSelect(index, SELECT_BY_POS)){
      if(OrderMagicNumber() == magic){
         if(OrderType() == OP_BUYSTOP){
            if(OrderOpenPrice() - Ask > Point*trailing){
               if((Ask+Point*trailing)-Ask >= MarketInfo(Symbol(), MODE_STOPLEVEL)*Point && (Ask+Point*trailing)-Ask > MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point){
                  if(!OrderModify(OrderTicket(),Ask+Point*trailing,OrderStopLoss(),OrderTakeProfit(), 0))Print(">>> ERROR ", GetLastError());
               }else{
                  Print(">>> Слишком близко к рынку!");
               }
            }
            return;
         }
         if(OrderType() == OP_SELLSTOP){
            if(Bid - OrderOpenPrice() > Point*trailing){
               if(Bid-(Bid-Point*trailing) >= MarketInfo(Symbol(), MODE_STOPLEVEL)*Point && Bid-(Bid-Point*trailing) > MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point){
                  if(!OrderModify(OrderTicket(),Bid-Point*trailing,OrderStopLoss(),OrderTakeProfit(), 0))Print(">>> ERROR ", GetLastError());
               }else{
                  Print(">>> Слишком близко к рынку!");
               }
            }
            return;
         }
      }
      index++;
   }
}
//+------------------------------------------------------------------+
Passar no método como parâmetros a medge retardada e a trall desejada.
 
      for (i =0;i<OrdersTotal();i++)
      {
         if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true&&OrderMagicNumber()==MAGICMA&&OrderSymbol()==Symbol())
         {
            if (MathAbs(funk-OrderOpenPrice())>Point)
            {
               if (OrderType()==OP_BUYSTOP||OrderType()==OP_BUYLIMIT&&MathAbs(Ask-funk)>MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
               {
                  OrderModify(OrderTicket(),NormalizeDouble(funk,Digits),OrderStopLoss(),NormalizeDouble(funk+TakeProfiti*Point,Digits),0);
               }
               if (OrderType()==OP_SELLSTOP||OrderType()==OP_SELLLIMIT&&MathAbs(Bid-funk)>MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
               {
                  OrderModify(OrderTicket(),NormalizeDouble(funk,Digits),OrderStopLoss(),NormalizeDouble(funk-TakeProfiti*Point,Digits),0);
               }
            }
         }
      }
algo como isto, onde a ordem é arrastada de acordo com o valor do funk calculado
 
ToLik_SRGV:

É um pouco complicado demais para você :))
Aqui está meu código

Pass in method as parameters a delayed medjw, and desired trall.

Obrigado! Acho que é isso!