Especialistas: TrailingTakeProfit

 

TrailingTakeProfit:

Este Expert Advisor não comercial se destina ao trailing simples de ordens de take-profit de posições abertas.


Autor: Scriptor

 
//+------------------------------------------------------------------+
//| Modifica a posição selecionada no tíquete.
//+------------------------------------------------------------------+
bool PositionModifyByTicket(const string symbol_name,const ulong magic_number,const ulong ticket,const double sl,const double tp)
  {
//--- verificação interrompida
   if(IsStopped())
      return(false);
//--- limpo
   ZeroMemory(g_request);
   ZeroMemory(g_result);
//--- solicitação de configuração
   g_request.action  =TRADE_ACTION_SLTP;
   g_request.position=ticket;
   g_request.symbol  =symbol_name;
   g_request.magic   =magic_number;
   g_request.sl      =sl;
   g_request.tp      =tp;
//--- ação e retorna o resultado
   return(OrderSend(g_request,g_result));
  }

Supérfluo.

 
//+------------------------------------------------------------------+
//|| Função de rastreamento|
//+------------------------------------------------------------------+
void Trailing(void)
  {
   int   total=PositionsTotal();
   for(int i=total; i>=0; i--)
     {
      ulong ticket=PositionGetTicket(i);
      if(ticket==0) continue;
      string symbol_name=PositionGetString(POSITION_SYMBOL);
      ulong  magic_number=(ulong)PositionGetInteger(POSITION_MAGIC);
      ENUM_POSITION_TYPE type=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
      if(InpPositionType>WRONG_VALUE && type!=(ENUM_POSITION_TYPE)InpPositionType) continue;

É muito dispendioso (especialmente em strings) criar variáveis dedicadas antes de todas as verificações contínuas.


Imagine uma otimização simples para 100.000 passagens de 10.000.000 de ticks. Então, OnTick será chamado um TRILHÃO de vezes. Qualquer ação extra chamada um trilhão de vezes levará mais segundos/minutos/horas. Valorize seu próprio tempo e o dos outros.

 
fxsaber:

É muito dispendioso (especialmente em strings) criar variáveis dedicadas antes de todas as verificações contínuas.


Imagine uma otimização simples para 100.000 passagens de 10.000.000 de ticks. Então, OnTick será chamado um TRILHÃO de vezes. Qualquer ação extra chamada um trilhão de vezes levará mais segundos/minutos/horas. Valorize seu tempo e o tempo de outras pessoas.

Este não é um EA de negociação. Por que otimizá-lo? É apenas um rastreamento. E uma coisa estranha.
 
Artyom Trishkin:
Este não é um EA de negociação. Por que otimizá-lo? É apenas uma rede de arrasto. E é estranho.

É uma função Trailing migratória para fins de treinamento.

 
fxsaber:

Esta é uma função Trailing migratória para fins de treinamento.

Não é suficiente estar migrando. Somente no contexto desse código.
 
Artyom Trishkin:
Insuficiente para a migração. Somente no contexto do código em questão.

Migratório - quando 90% do código é emprestado.