Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 691

 

Boa tarde, preciso de ajuda com o código, sou um novato.

O problema aí é o seguinte - o trailing trabalha apenas na direção da compra, e na direção da venda não funciona e o código dá erro"Erro de modificação do pedido". Código de erro=4051".

Aqui está a parte do código responsável pelo rastreamento:

void Trailing(int tral)
{ 
  int Mag=OrderMagicNumber();  

  OrderSelect(Mag,MODE_TRADES);

//+------------------------------------------------------------------+

//|                      tral buy                                    |

//+------------------------------------------------------------------+

  if (OrderType()==OP_BUY)

  if(Bid-OrderOpenPrice()>Point*tral)
    {
    if(OrderStopLoss()<Bid-Point*tral) 
       { 
       bool ress= OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-Point*tral,Digits),0,0,Blue); 
       if(!ress) 
          Print("Ошибка модификации ордера. Код ошибки=",GetLastError()); 
       else 
          Print("Цена Stop Loss ордера успешно модифицирована.");
       }
     }
//+------------------------------------------------------------------+

//|                      tral sell                                   |

//+------------------------------------------------------------------+   
  if (OrderType()==OP_SELL)
  if(OrderOpenPrice()-Ask>Point*tral)
    {
    if(OrderStopLoss()>Ask+Point*tral) 
       { 
       bool res= OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+Point*tral,Digits),0,0,Red); 
       if(!res) 
          Print("Ошибка модификации ордера. Код ошибки=",GetLastError()); 
       else 
          Print("Цена Stop Loss ордера успешно модифицирована.");
       }
     }
}          

 
Ivan Rozhkov:

Boa tarde, preciso de ajuda com o código, sou um novato, acho que não seria apropriado inserir o código inteiro aqui.

O problema é que o trailing funciona apenas na direção da compra e não funciona na direção da venda e o código dá o erro"Erro namodificação da ordem". Código de erro=4051".

Quem pode me ajudar a descobrir isso, por favor envie uma mensagem para

Este tópico é para discussão e não para discussão.
 
Artyom Trishkin:
O tema é para discussão, não para discussão.

Por favor, me perdoe ^_^

Parte colada do código, favor informar onde está o erro

 
Ivan Rozhkov:

Por favor, me perdoe ^_^

Inserida parte do código, por favor me diga onde está o erro

Veja neste tópico - eu coloquei um modelo de rede de arrasto. Em algum lugar no meio.
 
Ivan Rozhkov:

Boa tarde, preciso de ajuda com o código, sou um novato.

O problema aí é o seguinte - o trailing funciona apenas na direção de compra, e na direção de venda não funciona e o código dá erro"Erro de modificação do pedido". Código de erro=4051".

Aqui está a parte do código responsável pelo rastreamento:

//+------------------------------------------------------------------+

//|                      tral sell                                   |

//+------------------------------------------------------------------+   
  if (OrderType()==OP_SELL)
  if(OrderOpenPrice()-Ask>Point*tral)
    {
    if((OrderStopLoss()==0.0) || (OrderStopLoss()>Ask+Point*tral)) 
       { 
       bool res= OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+Point*tral,Digits),0,0,Red); 
       if(!res) 
          Print("Ошибка модификации ордера. Код ошибки=",GetLastError()); 
       else 
          Print("Цена Stop Loss ордера успешно модифицирована.");
       }
     }
}          
e eu não gosto de todo o design, aqui está um simples magik de trilha, quase o mesmo que o seu:

bool trailingpos(int magic_,int trail_p)
  {
   bool res=true; double sl,slnew,tpips=trail_p*Point; int i,k=OrdersTotal();
   for(i=0;i<k;i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==magic_)
           {
            switch(OrderType())
              {
               case OP_BUY:
                  slnew=NormalizeDouble(Ask-tpips,Digits);
                  sl=OrderStopLoss();
                  if(OrderOpenPrice()<slnew)
                     if((sl<slnew) || (sl==0.0))
                       {
                        if(!OrderModify(OrderTicket(),OrderOpenPrice(),slnew,OrderTakeProfit(),OrderExpiration(),clrNONE))
                          {res=false; Print(__FUNCTION__,"OrderModify завершилась с ошибкой № ",GetLastError());}
                       }
                  break;
               case OP_SELL:
                  slnew=NormalizeDouble(Bid+tpips,Digits);
                  sl=OrderStopLoss();
                  if(OrderOpenPrice()>slnew)
                     if((sl>slnew) || sl==0.0)
                       {
                        if(!OrderModify(OrderTicket(),OrderOpenPrice(),slnew,OrderTakeProfit(),OrderExpiration(),clrNONE))
                          {res=false; Print(__FUNCTION__,"OrderModify завершилась с ошибкой № ",GetLastError());}
                       }
                  break;
              }
           }
        }
     }
   return(res);
  }
 
como escrever corretamente um iCustom para ZigZag, de modo que ele produza os valores de extrema?
 
02031986dima:
como escrever corretamente um iCustom para ZigZag, de modo a produzir os valores de extrema?

Você não precisa escrever nada, você só precisa vir e levar

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 
Igor Makanu:

Eu não gosto de toda a construção, aqui está um magik simples, quase igual ao seu:

Muito obrigado por sua ajuda, acrescentar seu código não funciona por alguma razão, devo estar fazendo algo errado((

if((OrderStopLoss()==0.0)

Acrescentei e funcionou, mas continua recebendo spam com os erros nº 1 e nº 4051

#1-Nenhum erro, mas o resultado é desconhecido.

#4051-Valor inválidodo parâmetro da função

 

Olá, há uma série de dados do tipo datatime,

como posso colocá-lo em um arquivo legível?

Código:

int h=FileOpen("test",FILE_WRITE|FILE_CSV|FILE_UNICODE);
      FileWriteArray(h,timeHistory,0,WHOLE_ARRAY);
      FileClose(h);

Ela só escreve se houver a bandeira FILE_BIN, mas escreve ilegível.

Se a bandeira FILE_BIN não estiver presente, o arquivo permanece vazio.

 
Karlinvain:

Olá, há uma série de dados do tipo datatime,

como posso colocá-lo em um arquivo legível?

Código:

Ela só escreve se houver a bandeira FILE_BIN, mas escreve ilegível.

Se a bandeira FILE_BIN não estiver presente, o arquivo permanece vazio.

FileWriteArray

Nota .

Uma matriz de cordas só pode ser escrita em um arquivo do tipo TXT. Neste caso, as cordas são automaticamente terminadas com "\r\n". Dependendo do tipo de arquivo ANSI ou UNICODE, as cordas são convertidas para ansi-encoding, ou não.