[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 4

 
en una señal: fractal (indicador olyakish). sólo se abre 1 posición, que se cierra en el fractal opuesto y se abre inmediatamente la posición opuesta. Objetivo: codificar un stop en el valor mínimo o máximo del fractal al que se abrió la posición +\- 5 pips.
 
Definitivamente debe comprobar
- si el precio en el momento de la apertura de la orden se ha ido +/-5 pt del fractal
- o coger el momento de abrir cuando el precio está en el pasillo +/-5 del fractal
= poner stops / sticks + luego comprobar los niveles de congelación
 

¡Hola Señores Profesionales!

Finalmente mi cerebro ha descubierto cómo instalar un EA, pero,

He instalado Rabbit3 - ejecutarlo, establecer el permiso de autotrade. Tengo a Rabbit3, lo tengo, tengo un botón de vender o comprar, y luego tengo una confirmación. Lote 0,01, los botones de venta y compra están inactivos, y cuando cambio el lote a 0,1, "No hay suficiente dinero". ¿Qué debo hacer? ¿Es este EA capaz de operar con micro lotes o no?

 

Decidí codificar la apertura de posiciones utilizando el indicador MACD_Histograma(que se encuentra en la base https://www.mql5.com/ru/code/8253), pero no puedo averiguar cómo codificarlo correctamente. Debería añadir algunas correcciones al indicador, no tiene errores al compilar, pero el probador culpa a los búferes. Por favor, aconseja cómo y qué arreglar.

//+------------------------------------------------------------------+
//|                                                           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);
       //----
       
       //----
       
       //----
       
     }
//----   
 
¿Alguien puede ayudarme con una pregunta...
 
es necesario establecer las propiedades
- #búferes de propiedad
- Colores de la propiedad
ver ejemplos en el mismo código MASD
 
Korey >> :
necesidad de fijar las propiedades
- #búferes de propiedad
- Colores de la propiedad
ver ejemplos en el mismo código MASD

Por desgracia, no ayuda. El mismo registro dice 2009.02.11 00:08:10 2009.01.05 00:00 E_ EURGBP,M1: La función SetIndexBuffer debe ser llamada sólo desde el indicador personalizado

Se repite 3 veces y ..... parece que hay un problema... ¿qué más hay?

Aquí está la traducción...2009.02.11 00:08:10 2009.01.05 00:00 E_ EURGBP,M1: La función SetIndexBuffer debe ser llamada sólo desde el indicador personalizado

 
amur писал(а) >>

Aquí está la traducción...2009.02.11 00:08:10 2009.01.05 00:00 E_ EURGBP, M1: la función SetIndexBuffer debe ser llamada sólo desde el indicador personalizado

Personalizado...) En el probador, se prueban Asesores Expertos, no indicadores, y si son indicadores, se prueban Asesores Expertos. Y esto sigue siendo un indicador, aunque esté torcido por manos temerarias. Si quieres codificar por ti mismo, tienes que llenar las lagunas de tus conocimientos.

 
Figar0 >> :

Aduanas...) En el probador se prueban los EAs, no los indicadores, y si hay indicadores, pues probando los EAs. Y esto sigue siendo un indicador, aunque esté mutilado por manos embotadas. Si quieres codificar por ti mismo, tienes que llenar las lagunas de tus conocimientos.

Figar0, estoy tratando de aprender, escribí arriba que no puedo entender cómo describir los búferes del tutorial - en general, el Asesor de Expertos para el comercio en las señales del indicador MACD_Histograma.

>> Por eso me he decidido a pediros ayuda a los profesionales. gracias por vuestra ayuda))


 
amur писал(а) >>

Figar0, estoy tratando de aprender, por encima de lo que escribí que no puedo entender desde el tutorial de cómo describir los búferes - en general, que el Asesor de Expertos ha negociado en las señales de MACD_Histograma indicador.

He decidido pediros ayuda a vosotros, profesionales, gracias por vuestra ayuda))

Tome el Asesor Experto, por ejemplo, la muestra MACD, viene con MT4. Mira su código. Utiliza el indicador MACD pero no tiene topes. ¿No es así? En cambio, accede a los valores del indicador a través de iMACD(....). Es lo mismo en tu caso, no debes rehacer el indicador para operar, sino tomar tu Asesor Experto y modificarlo para que funcione con tu indicador. Y para dirigirse a los valores de los indicadores a través de iCustom (....) (Las reglas de uso están en la ayuda y el tutorial). Si tiene preguntas más exactas, por favor, pregunte.

Razón de la queja: