[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 68

 
Stells:

Boa tarde.

Pergunta como testar ou cujos resultados são mais confiáveis ?

No Expert Advisor, o período H1 é claramente prescrito em todos os lugares.

Estou testando no m1 em aberto - perda nítida.

Eu o testei no H1 com todos os carrapatos subindo.

O problema é que as paradas são pequenas - apenas alguns pontos. Os lucros são grandes.

Se a EA tem controle explícito sobre a abertura de um novo bar e ele só funciona quando um novo bar abre, então você pode testar a abertura de um novo bar. Caso contrário, apenas carrapatos. Além disso, as paradas são pequenas e, obviamente, elas serão levadas pelo vento na abertura de um novo bar, porque na M1 um bar pode pegar sua parada em poucos minutos. Teste todos os carrapatos no M1.
 
artmedia70:
Se a EA tem controle explícito sobre a abertura de um novo bar e ele só funciona quando um novo bar abre, então você pode testar a abertura de um novo bar. Caso contrário, apenas carrapatos. Além disso, as paradas são pequenas e, obviamente, elas serão levadas pelo vento na abertura de um novo bar, porque na M1 um bar pode pegar sua parada em poucos minutos. Teste todos os carrapatos no M1.

como (em teoria) todos os carrapatos serão diferentes do H1 ?
 

Olá! Por favor, ajude-me a entender o código, o que estou fazendo de errado. Sou novo em programação. Eu li meu tutorial mql4 e procurei em muitos códigos de Expert Advisor, mas ainda não encontrei as respostas para minhas perguntas. Eu tenho um terminal com 5 dígitos, conta ECN, spread variável + comissão. O Expert Advisor é o mais fácil, ele abre ordem de venda quando o rápido МА cruza o lento МА de cima para baixo e vice-versa quando o rápido МА cruza o lento МА de baixo para cima. Na verdade, o TS é muito mais complexo, simplesmente ainda não tenho todas as funções básicas funcionando corretamente e não posso testá-lo adequadamente, muito menos otimizá-lo, decidi não complicar o código com cálculos extras. Aqui está o código do próprio Expert Advisor.

#define MAGICMA  20050610
extern string text1              ="===========================MoneyManagment===========================";
extern double Lots               = 0.1;
extern string text2              ="======================Simple_Close_settings=========================";
extern double TakeProfit         = 100;
extern double StopLoss           = 100;
extern double Bezubitok          = 30; //Расстояние, через которое пройдёт цена от открытия сделки в "+", чтобы перенести СтопЛос в безубыток
extern string text3              = "===================TrailingStopLoss_settings=======================";
extern double Trailing           = 100; //Расстояние, через которое будет подтягиватся СтопЛос к текущей цене
extern double Slippage           = 3; // Допуск проскальзования цены при открытии и закрытии сделок
extern string text4              = "===================Indicator_Trade_System_settings=================";
extern int    Fast_EMA_Period    = 8;
extern int    Slow_EMA_Period    = 21;




//+------------------------------------------------------------------+
//| Calculate open positions                                         |
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
  {
   int buys=0,sells=0;
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
        {
         if(OrderType()==OP_BUY)  buys++;
         if(OrderType()==OP_SELL) sells++;
        }
     }
//---- return orders volume
   if(buys>0) return(buys);
   else       return(-sells);
  }

//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
int CheckForOpen()
  {
   double X1,X2,X3,X4;
   int ticket;

   
   X1=iMA(NULL,0,Fast_EMA_Period,0,MODE_EMA,PRICE_CLOSE,1);
   X2=iMA(NULL,0,Slow_EMA_Period,0,MODE_EMA,PRICE_CLOSE,1);
   X3=iMA(NULL,0,Fast_EMA_Period,0,MODE_EMA,PRICE_CLOSE,2);
   X4=iMA(NULL,0,Slow_EMA_Period,0,MODE_EMA,PRICE_CLOSE,2);
//----
if(Volume[0]>1) return;
  {   
      //ENTRY Ask(buy, long) 
      if (X3<=X4 && X1>X2)
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,",",MAGICMA,0,White);
        }
      //ENTRY Bid (sell, short)
      if (X3>=X4 && X1<X2)
        {
         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,",",MAGICMA,0,Red);
        }
  }
//----
  }
//+------------------------------------------------------------------+
//| Check for TrailingStop                                           |
//+------------------------------------------------------------------+
void CheckForTrailing()
 {

     if (Trailing>0) for(int i=0; i<=OrdersTotal();i++) 
     {
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
           if (OrderMagicNumber()==MAGICMA && OrderSymbol()==Symbol()) 
           {
            if (OrderType()==OP_BUY && Bid-OrderOpenPrice()>Trailing*Point && Bid-OrderStopLoss()>Trailing*Point)
            OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Trailing*Point,OrderTakeProfit(),0,CLR_NONE);
            if (OrderType()==OP_SELL && OrderOpenPrice()-Ask>Trailing*Point && OrderStopLoss()-Ask>Trailing*Point)
            OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Trailing*Point,OrderTakeProfit(),0,CLR_NONE);
           }
        }
}
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void CheckForClose()
  {
   double X1,X2,X3,X4;
//---- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//---- get Moving Average 
   X1=iMA(NULL,0,Fast_EMA_Period,0,MODE_EMA,PRICE_CLOSE,1);
   X2=iMA(NULL,0,Slow_EMA_Period,0,MODE_EMA,PRICE_CLOSE,1);
   X3=iMA(NULL,0,Fast_EMA_Period,0,MODE_EMA,PRICE_CLOSE,2);
   X4=iMA(NULL,0,Slow_EMA_Period,0,MODE_EMA,PRICE_CLOSE,2);
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;
      if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
      //---- check order type 
     
      if(OrderType()==OP_BUY)
        {
         if(Bid>=(OrderOpenPrice()+TakeProfit*Point)||Bid<=(OrderOpenPrice()-StopLoss*Point))OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
         break;
        }
        
      if(OrderType()==OP_SELL)
        {
         if(Ask<=(OrderOpenPrice()-TakeProfit*Point)||Ask>=(OrderOpenPrice()+StopLoss*Point)) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
         break;
        }
     }
//----
  }



//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void start()
  {
   if(Bars<25 || IsTradeAllowed()==false) 
     return (0);
   if (AccountFreeMargin()<(100*Point*Lots))
     {
      Print("Стоп! Недостаточно средств для продолжения торговли. Свободная маржа = ", AccountFreeMargin());
      return(0);  
     }
      
   if(Trailing>0) CheckForTrailing();  
     
      
//---- calculate open orders by current symbol
   if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
   else                                    CheckForClose();
   
 
   

   return(0);
  }
//+------------------------------------------------------------------+

Talvez alguém possa responder às minhas perguntas:

1. Quando abro um pedido, mantenho os nulos em OrderSend onde os parâmetros Stopplos e TakeProfit devem estar; na tentativa de colocar outros números lá, o especialista não abre negócios; verifiquei se posso abrir um negócio manualmente e imediatamente defini SL e TP, qual pode ser o problema?

2. Não entendo por que eu estabeleço TP, SL e TS de 100 pips, embora os negócios não sejam fechados múltiplos destes pips, mesmo levando em conta o spread. Talvez minha função de fechamento de pedidos não funcione? Como posso limitar a perda neste caso, originalmente definido SL, e como faço para que o preço siga apenas na direção +?

3. Minha corretora tem Stop Level=100 pips, como posso definir TP e SL virtuais, para que eu possa definir níveis inferiores ao Stop Level, como no fechamento manual de posições? (Não é proibido o uso de Pips nas contas Ecn).

4. É possível fazer o seguinte, e se for possível: fazer um fechamento inverso e simultaneamente fechar pelo SL e TP com uma transferência para o Breakeven (dependendo de qual evento acontece primeiro)? Eu tentei fazer isso, mas no testador ele abre uma posição e não a fecha até o final do teste, mas apenas coleta as trocas). Qualquer um deles funciona.

Agradecemos antecipadamente a todos que responderão!

Arquivos anexados:
 

Boa tarde ...

Apenas uma pergunta

Vamos pegar um fractal no Daily... Como encontrar o preço que termina a formação deste fractal, digamos no H1 .... É desejável que no preço apareça a seta...

 
Cmu4:
Cavalheiros, como um EA se conecta a um servidor e porta específicos? Isso é possível?
Então, nenhum especialista no assunto aqui?
 
Cmu4:
Cavalheiros, como um EA se conecta a um servidor e porta específicos? Isso é possível?

O que significa se conectar a uma tomada ou ler informações via http?
 
Olá. Eu tenho uma pergunta simples e provavelmente estúpida.Um testador de estratégias pode cometer erros...Que métodos você tem para testar suas estratégias?...Obrigado.
 

Apenas uma pergunta

Vamos pegar um fractal no Daily... Como encontrar o preço que termina a formação deste fractal, digamos no H1 .... É desejável que no preço apareça a seta...

 

Boa tarde!

Pergunta sobre funções especiais: init(), start(), deinit().

Como você sabe, inclusive pelo tutorial, para encerrar (sair) esta função especial, você DEVE COMPLETAMENTE adicionar o

Operador de retorno (por exemplo, no operador condicional IF-ELSE).

O que significam então os valores de retorno? Por exemplo: Return(0) e possivelmente algum outro número inteiro (Return(1));

 

Boa tarde a todos!

Por favor, ajude-me a editar um pouco o indicador "FX5_Divergence_V2.1".

Estou trabalhando com 3 telas. O indicador na janela é exibido com seu nome e alguns outros valores e eles dificultam a visualização do indicador. Muitas vezes, por causa desses números, não consigo ver os picos indicadores e é difícil compará-los um com o outro (circulado em amarelo na imagem da tela).

(Ajude-me a corrigir o indicador para que somente o nome do indicador seja exibido, sem todos os outros dígitos)

Indicador e captura de tela em anexo.


Agradecemos antecipadamente a qualquer pessoa que possa ajudar)


Arquivos anexados:
Razão: