[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 330

 

Rapazes, uma dica... Aqui está a seção de código onde são calculadas as condições de entrada no mercado. PORQUÊ com os valores dados de prazos obtidos durante a otimização

extern int s_signal_period=7;
extern int t_trend_period =7; // 1-M1, 2-M5, 3-M15, 4-M30, 5-H1, 6-H4, 7-D1, 8-W.

ou seja, o TF = dia, a entrada no mercado acontece na abertura de velas de 4 horas no testador de estratégia, quando testado no período H4? Deve haver uma entrada SOMENTE na abertura das velas do dia - dou uma seção de código e relatório para testes em H4 e D1, Conselheiro Especialista com controle de uma nova abertura de barra.

xtern string A4 = "Таймфрейм и параметры технических индикаторов";
extern int s_signal_period=7;
extern int t_trend_period =7;
...
static datetime prevtime = 0;       // по ценам открытия

...
int start()
{
   if(Time[0] == prevtime)   return(0);  //ждем нового бара
   prevtime = Time[0];                   //если появился новый бар , включаемся
   
   ...                     
//---------------------------------------------В ЛОНГ-------------------------------------------------------------------------      

      if(((type_op()==OP_BUY) || (Buy_signal==true && Sell_signal==false)) && (orderCount==0 || orderCount < 10) && Period_MA_Fast<Period_MA_Slow && delta_fma()>0 && delta_sma()>0 &&   
           iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,1) > iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,2) && //идентификация впадины 
           iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,2) > iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,3) && //с последующим
           iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,4) > iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,3))   //ростом
            
           WmOrderSend(Symbol(), OP_BUY, Lots_New, Ask,Bid-StopLoss*Point, Bid + TakeProfit*Point, "2MA+Momentum", magic);


//---------------------------------------------В ШОРТ--------------------------------------------------------------------------     
     
      if(((type_op()==OP_SELL) || (Buy_signal==false && Sell_signal==true)) && (orderCount==0 || orderCount < 10) && Period_MA_Fast<Period_MA_Slow  && delta_fma()<0 && delta_sma()<0 &&
          iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,1) < iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,2) && //вершина 
          iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,2) < iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,3) && //с последующим 
          iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,4) < iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,3))   //падением
      
          
           WmOrderSend(Symbol(), OP_SELL, Lots_New, Bid, Ask+StopLoss*Point, Ask - TakeProfit*Point, "2MA+Momentum", magic); 
      
         
 ...          
}//------------------------------------------Конец Старт-----------------------------------------------------

double delta_fma()
  {
    int signal_period= GetPeriod(s_signal_period);
    return(iMA(Symbol(),signal_period,Period_MA_Fast,0,MODE_EMA,PRICE_CLOSE,1)-
           iMA(Symbol(),signal_period,Period_MA_Fast,0,MODE_EMA,PRICE_CLOSE,3));
  }

double delta_sma()
  {
    int trend_period = GetPeriod(t_trend_period); 
    return(iMA(Symbol(),trend_period,Period_MA_Slow,0,MODE_EMA,PRICE_CLOSE,1)-
           iMA(Symbol(),trend_period,Period_MA_Slow,0,MODE_EMA,PRICE_CLOSE,3));
  }

//для оптимизации по всем периодам по всем периодам
int GetPeriod(int period)
{int periodres;
 switch(period)
  {
   case 1: periodres=1;break;     //M1
   case 2: periodres=5;break;     //M5
   case 3: periodres=15;break;    //M15
   case 4: periodres=30;break;    //M30
   case 5: periodres=60;break;    //H1
   case 6: periodres=240;break;   //H4
   case 7: periodres=1440;break;  //D1
   case 8: periodres=10080;break; //W
   default: periodres=1;break;
  }
return(periodres);
} 

Relatórios. Ao testar no H4 - entrada no mercado a cada 4 horas, se as condições comerciais forem cumpridas, atravésde int s_signal_period =7;
int
t_trend_period =7;

D1 - testes em D1 - entrada no mercado na abertura de D1, no mesmos_período_sinalexterno int s_sinal=7;
t_período_tendência_externa int
=7;

Isto é suposto ser assim... Por que o testador de estratégia entra no mercado no H4 aberto ao testar no H4, mas não na abertura dos castiçais diários? porques_signal_period=7;
extern int
t_trend_period =7;

Obrigado pela dica sobre este assunto.

 
Roman.:

Rapazes, uma dica... Aqui está a seção de código onde são calculadas as condições de entrada no mercado. PORQUÊ com os valores dados de prazos obtidos durante a otimização

ou seja, o TF = dia, a entrada no mercado acontece na abertura de velas de 4 horas no testador de estratégia, quando testado no período H4? Deve haver uma entrada SOMENTE na abertura das velas do dia - dou uma seção de código e relatório para testes em H4 e D1, Conselheiro Especialista com controle de uma nova abertura de barra.

Relatórios. Ao testar no H4 - entrada no mercado a cada 4 horas, se as condições comerciais forem cumpridas, atravésde int s_signal_period =7;
int
t_trend_period =7;

D1 - testes em D1 - entrada no mercado na abertura de D1, no mesmo s_período_sinalexterno int s_sinal=7;
t_período_tendência_externa int
=7;

Isto é suposto ser assim... Por que o testador de estratégia entra no mercado no H4 aberto ao testar no H4, mas não na abertura dos castiçais diários? porques_signal_period=7;
extern int
t_trend_period =7;

Obrigado pela dica sobre este assunto.


O código dado não é suficiente para responder
 
Vinin:

O código dado não é suficiente para responder

De quanto código você precisa? A parte do sinal está lá...
 
Vinin:

O código dado não é suficiente para responder

Agora eu o testei no H1 - ele abre negócios a cada hora com s_signal_period=7;
t_trend_period =7;
 
Roman.:

Agora testado em H1 - abre negócios a cada hora com s_signal_period=7;
extern int t_trend_period =7;


Faz sentido tornar a variável signal_period global e atribuir um valor a ela no init()

E mudar o controle para um novo bar

   if(iTime(Symbol(),signal_period,0) == prevtime)   return(0);  //ждем нового бара
   prevtime = iTime(Symbol(),signal_period,0);                   //если появился новый бар , включаемся
 
Vinin:


Faz sentido tornar a variável signal_period global e atribuir um valor a ela no init()

E mudar o controle do novo bar


Entendo, Victor, obrigado - vou tentar hoje à noite, depois do trabalho. Escreverei a este tópico com os resultados.
 
como posso saber se uma ordem pegou ou não um alce?
 
CLAIN:
alguma dica sobre como saber se um pedido captura uma perda ou não?

Pense bem.

Busca: detectar site de comércio perdido :mql4.com, busca por site de comércio perdido :mql4.com

 
CLAIN:
Como posso saber se uma encomenda teve ou não um prejuízo?

Se OrderClosePrice()==OrderStopLoss(), então o pedido é definitivamente encerrado com uma ordem de perda. O truque está na área de cujo lucro foi fechado. Digamos que o trader abriu uma posição, estabeleceu um stop loss, e então, quando a posição mudou para lucro, ele/ela mudou o stop loss para uma zona de lucro positivo - assim, se o stop for acionado, a ordem será fechada com lucro. O preço ganhou de volta e derrubou o pedido até a parada. Ou seja, o OrderClosePrice() é realmente igual ao OrderStopLoss(). A ORDEM Apanhou um Alce, mas não mostrou perda, mas lucro. O que você faz nesta situação?
 

Olá!

Você pode me dizer como calcular o tamanho do lote, dependendo do preço de entrada, do StopLoss e da porcentagem do depósito? Vamos assumir que o preço de entrada é 1,4500, StopLoss é 1,4400. O risco é de 100 pips. Se o preço de um pip for 0,1 e o risco for 2% do saldo (10000), o tamanho do lote seria 0,2. É possível deduzir esta fórmula em MQL? Procurei quase todo o fórum e não consegui encontrar nada parecido. Todos os outros métodos para o cálculo de lotes são completamente diferentes.

Obrigado.

Razão: