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

 
em um sinal: fractal (indicador de carvalho-oligo). apenas 1 posição é aberta, que é fechada no fractal oposto e a posição oposta é imediatamente aberta. Objetivo: codificar uma parada no valor mínimo ou máximo do fractal no qual a posição foi aberta +\- 5 pips.
 
Você definitivamente deve verificar
- se o preço no momento da abertura do pedido foi +/-5 pt do fractal
- ou pegar o momento de abrir quando o preço está no corredor +/-5 do fractal
= colocar paradas / paus + depois verificar os níveis de congelamento
 

Olá Cavalheiros Profissionais!

Finalmente, meu cérebro descobriu como instalar um EA, mas,

Eu instalei o Rabbit3 - execute-o, defina a permissão de comércio automático. Tenho aqui o Rabbit3, tenho um pedido de Compra ou Venda. O lote 0,01, Botões de Venda e Compra estão inativos, e quando eu mudo o lote para 0,1, "Não há dinheiro suficiente". O que eu devo fazer? Este EA é ou não capaz de negociar em micro lotes?

 

Decidi codificar a abertura de posição usando o indicador MACD_Histograma(encontrado na base https://www.mql5.com/ru/code/8253), mas não consigo descobrir como codificá-lo corretamente. Devo acrescentar algumas correções ao indicador, ele não tem erros na compilação, mas o testador culpa os tampões. Por favor, informe como e o que consertar.

//+------------------------------------------------------------------+
//|                                                           E .mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//---- input parameters
extern string separator1 = "*** MACD Settings ***";
extern int FastMAPeriod = 12;
extern int SlowMAPeriod = 26;
extern int SignalMAPeriod = 9;
extern double Lots = 0.01;
#define arrowsDisplacement 0.0001

//---- buffers
double MACDLineBuffer[];
double SignalLineBuffer[];
double HistogramBuffer[];
double bullishDivergence[];
double bearishDivergence[];
//---- variables
double alpha = 0;
double alpha_1 = 0;
static datetime lastAlertTime;
static string   indicatorName;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  { 
//---- 
   SetIndexStyle(0, DRAW_LINE);                        SetIndexBuffer(0, MACDLineBuffer);
   SetIndexStyle(1, DRAW_LINE);                        SetIndexBuffer(1, SignalLineBuffer);
   SetIndexStyle(2, DRAW_HISTOGRAM, STYLE_SOLID,2);    SetIndexBuffer(2, HistogramBuffer);
   SetIndexStyle(3, DRAW_ARROW);                       SetIndexArrow(3, 233);
   SetIndexStyle(4, DRAW_ARROW);                       SetIndexArrow(4, 234);
//----
	  alpha = 2.0 / ( SignalMAPeriod + 1.0);
	  alpha_1 = 1.0 - alpha;
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   for(int i = ObjectsTotal() - 1; i >= 0; i--)
     {
       string label = ObjectName( i);
       if(StringSubstr( label, 0, 19) != "MACD_DivergenceLine")
           continue;
       ObjectDelete( label);   
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   int limit;
   int counted_bars = IndicatorCounted();
   //---- check for possible errors
   if( counted_bars < 0) 
       return(-1);
   //---- last counted bar will be recounted
   if( counted_bars > 0) 
       counted_bars--;
   limit = Bars - counted_bars;
   CalculateIndicator( counted_bars);
//----
   for(int i = limit; i >= 0; i--)
     {
       MACDLineBuffer[ i] = iMA(NULL, 0, FastMAPeriod, 0, MODE_EMA, PRICE_CLOSE, i) - 
                           iMA(NULL, 0, SlowMAPeriod, 0, MODE_EMA, PRICE_CLOSE, i);
       SignalLineBuffer[ i] = alpha* MACDLineBuffer[ i] + alpha_1* SignalLineBuffer[ i+1];
       HistogramBuffer[ i] = MACDLineBuffer[ i] - SignalLineBuffer[ i];
     }

//----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CalculateIndicator(int countedBars)
  {
   for(int i = Bars - countedBars; i >= 0; i--)
     {
       CalculateMACD( i);
       CatchBullishDivergence( i + 2);
       CatchBearishDivergence( i + 2);
     }              
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CalculateMACD(int i)
  {
   MACDLineBuffer[ i] = iMA(NULL, 0, FastMAPeriod, 0, MODE_EMA, PRICE_CLOSE, i) - 
                       iMA(NULL, 0, SlowMAPeriod, 0, MODE_EMA, PRICE_CLOSE, i);
   SignalLineBuffer[ i] = alpha* MACDLineBuffer[ i] + alpha_1* SignalLineBuffer[ i+1];
   HistogramBuffer[ i] = MACDLineBuffer[ i] - SignalLineBuffer[ i];      
  }
//+------------------------------------------------------------------+
//|         сигнал                                                         |
//+------------------------------------------------------------------+
void CatchBullishDivergence(int shift)
  {   
   int currentTrough = shift;
   int lastTrough = GetIndicatorLastTrough( shift);
//----   
   if( MACDLineBuffer[ currentTrough] > MACDLineBuffer[ lastTrough] && 
      Low[ currentTrough] < Low[ lastTrough])
     {
       bullishDivergence[ currentTrough] = MACDLineBuffer[ currentTrough] - 
                                          arrowsDisplacement;
       // OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"",0,0,Red);
       //----
       
       //----
       
       //----
       
     }
//----   
 
Ninguém pode me ajudar com uma pergunta...
 
você precisa definir as propriedades
- buffers de propriedade
- #cores da propriedade
ver exemplos no mesmo código MASD
 
Korey >> :
necessidade de definir propriedades
- buffers de propriedade
- #cores da propriedade
ver exemplos no código do mesmo MASD

Infelizmente, isso não ajuda. O mesmo log diz 2009.02.11 00:08:10 2009.01.05 00:00 E_ EURGBP,M1: A função SetIndexBuffer deve ser chamada apenas do indicador personalizado

Repete 3 vezes e ..... parece que há um problema...o que mais existe?

Aqui está a tradução...2009.02.11 00:08:10 2009.01.05 00:00 E_ EURGBP,M1: A função SetIndexBuffer deve ser chamada apenas do indicador personalizado

 
amur писал(а) >>

Aqui está a tradução...2009.02.11 00:08:10 2009.01.05 00:00 E_ EURGBP, M1: função SetIndexBuffer deve ser chamada apenas do indicador personalizado

Custom?) No testador, você testa os Expert Advisors, não os indicadores, e se eles são indicadores, você testa os Expert Advisors. E isto ainda é um indicador, mesmo que seja torturado por mãos atrevidas. Se você quiser codificar por si mesmo, você tem que preencher as lacunas de seu conhecimento.

 
Figar0 >> :

Alfândega?) No testador você testa EAs, não indicadores, e se houver indicadores, então, testando EAs. E isto ainda é um indicador, mesmo que seja mutilado por mãos sem brilho. Se você quiser codificar por si mesmo, você tem que preencher as lacunas de seu conhecimento.

Figar0, estou tentando aprender, escrevi acima que não consigo entender como descrever os amortecedores do tutorial - em geral, o Expert Advisor para comercializar os sinais indicadores MACD_Histogram.

>> Por isso decidi pedir ajuda a vocês - profissionais. obrigado por sua ajuda))


 
amur писал(а) >>

Figar0, estou tentando aprender, acima escrevi que não consigo entender pelo tutorial como descrever os buffers - em geral, que o Expert Advisor negociou os sinais do indicador MACD_Histogram.

Decidi pedir ajuda a vocês, profissionais. Obrigado por sua ajuda))

Pegue o Expert Advisor, por exemplo, MACD Sample, vem com o MT4. Veja o seu código. Ele usa o indicador MACD mas não tem nenhum amortecedor. Não é assim? Ao invés disso, acessa os valores indicadores através do iMACD(....). É o mesmo em seu caso, você não deve refazer o indicador para negociação, mas pegar seu Consultor Especialista e modificá-lo para trabalhar com seu indicador. E para endereçar aos valores indicadores através do iCustom (....) (Regras de uso estão na ajuda e no tutorial). Se você tiver perguntas mais exatas, por favor, pergunte.