[¡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 274

 
igrok2008 >> :

Hola.

Hay un experto SimpleMA, lo he retocado un poco para mí, sólo un poco ...:-))) y se llama MASimple_v2x.

entonces traté de mejorarlo PERO

Tengo un error después del experimento.

¿QUÉ HE HECHO MAL? ?????????????

>> Gracias por adelantado.



Inténtalo de esta manera:

en lugar de - si MAF_0 - MAF_1= A
si MAS_0 - MAS_1= B

este - doble A = MAF_0 - MAF_1;

doble B = MAS_0 - MAS_1;

 

Si he entendido bien, estás siguiendo una situación en la que ambas MAs se mueven en la misma dirección. Le esperan muchos más descubrimientos interesantes :))

//это выражение не имеет смысла, if здесь лишний
   if MAF_0 - MAF_1= A
   if MAS_0 - MAS_1= B
//если требовалось определить разницу значений МА на 1-ом и нулевом баре, то можно так
   double A = MAF_0 - MAF_1;
   double B = MAS_0 - MAS_1;
 
rushman >> :

¿Pueden decirme si es posible aumentar el número de lotes de una orden de mercado sin abrir otros nuevos?

Que yo sepa, no. Sólo cuando se abre un nuevo lote. ¿Qué sentido tiene aumentar los lotes después del acuerdo? ¿O quiere decir que ve cómo se abre en la dirección correcta, y quiere más y más dinero?

 
alsu 23.10.2009 10:22
>>

И что теперь с этим делать?

NormalizeDouble(Bid,4);   //:))))


Probablemente sea mejor (más versátil):

NormalizeDouble(Bid,Digits);
 

Ayúdenme a encontrar un error en el código. no hay error al compilar pero los cálculos y las transacciones no pasan( Gracias de antemano a los profesionales que están aquí.

//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
extern int    EMA1 = 14;                                  // Период 1-й EМА
extern int    EMA2 = 48;                                  // Период 2-й EМА
extern int    EMA3 = 144;                                  // Период 3-й EМА                             
extern int period=12;
extern int porog =3;
extern int metod =1;
extern int metod2=1;
extern int prise =0;
extern double SL =  1000;                                  // СтопЛосс ордера
extern double TP =  500;                                  // ТэйкПрофит ордера
extern double Lots= 0.1;  
//--------------------------------------------------------------------------------------------
int
   New_Bar,                                              // 0/1 Факт образования нового бара
   Time_0,                                               // Время начала нового бара
   total;                                                // Крличество открытых ордеров
//--------------------------------------------------------------------------------------------
double 
   Lot,                                                  // Количество лотов
   Norm,                                                 // Предыдущее значение 1-й МА (розов)
   Fast,                                                  // Текущее    значение 1-й МА (розов)
   Slow,                                                // Текущее    значение 2-й МА(голубая)
   Signal[];
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
int init()  
   {
//============================================================================================
   SL = SL*Point;                                        // SL в пунктах
   TP = TP*Point;                                        // ТР в пунктах
   return;
//============================================================================================
   }  
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
int start()  
   {
//============================================================================================
   total=OrdersTotal();                                  // Общее количество ордеров
   if ( total==2)return;                                  // Уже открыты оба ордера

//----------------------------------------------------------------------------- Новый бар ----
   New_Bar=0;                                            // Для начала обнулимся
   if ( Time_0 != Time[0])                                // Если уже другое время начала бара
      {
      New_Bar= 1;                                        // А вот и новый бар
      Time_0 = Time[0];                                  // Запомним время начала нового бара
      } 
//--------------------------------------------------------------------------------------------
//---расчет тренда ввех или вниз (XMA)
   int limit;
   double tmp1, tmp2;
   int counted_bars=IndicatorCounted();
   int i;
   if( counted_bars<0) return(-1);
   if( counted_bars>0) counted_bars--;
   limit=Bars- counted_bars;
   for ( i = limit; i>=0; i--){
     tmp1=iMA(Symbol(),0, period,0, metod, prise, i);
     tmp2=iMA(Symbol(),0, period,1, metod2, prise, i); 
     if(MathAbs( tmp1- tmp2)>= porog*Point)
     {       Signal[ i]= tmp2;      }
     
//--------------------------------------------------------------------------------------------
   Fast  =iMA(NULL,0, EMA1, 0,MODE_EMA, PRICE_CLOSE, 0);// Текущее    значение 1-й EМА
   Norm =iMA(NULL,0, EMA2, 0,MODE_EMA, PRICE_CLOSE, 0);// Предыдущее значение 2-й EМА
   Slow=iMA(NULL,0, EMA3, 0,MODE_EMA, PRICE_CLOSE, 0);// Текущее    значение 3-й EМА
   
//--------------------------------------------------------------------------------------------
   if ( Fast> Norm && Norm> Slow && New_Bar==1 && Close[ i]> Signal[ i]) Open_Buy();      // Движение снизу вверх = откр. Buy
   if ( Fast< Norm && Norm< Slow && New_Bar==1 && Close[ i]< Signal[ i]) Open_Sell();     // Движение сверху вниз = откр. Sell
   
   }
      return;
//============================================================================================
   }  
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
int Open_Buy()  
   {
   if ( total==1)
      {
      OrderSelect(0, SELECT_BY_POS);                     // Выделим ордер
      if (OrderType()==0)return;                         // Если он buy, то не открываемся
      }
   OrderSend(Symbol(),0, Lots, Ask, 0, Ask- SL, Ask+ TP, "", 0, 0, Blue);// Открываемся
   return;
   }
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
int Open_Sell() 
   {
   if ( total==1)
      {
      OrderSelect(0, SELECT_BY_POS);                     // Выделим ордер
      if (OrderType()==1)return;                         // Если он sell, то не открываемся
      }
   OrderSend(Symbol(),1, Lots, Bid, 0, Bid+ SL, Bid- TP, "", 0, 0, Red);// Открываемся
   return;
   }
 

¡¡¡Hola a todos, un consejo por favor!!! Tengo algunas preguntas, no puedo hacerlo yo mismo:

1. ¿Cómo hacer que sólo se abra una orden en una barra?

2. Hay varias condiciones de compra y venta, ¿qué función utilizar para esto?

3. ¿Cómo organizar la transferencia de una posición abierta a Breakeven?

4. ¿Cómo aplicar las tres condiciones en el código del EA (si es posible, con un ejemplo)?

Espero sus respuestas. Muchas gracias de antemano.

 
Piboli >> :

Hola. Por casualidad he encontrado un artículo sobre un tema que me interesa. A saber, esto: Elección del tamaño de la ventana. .... Se consiguen resultados óptimos

en el caso de seleccionar un tamaño de ventana del orden de la dimensión fractal de los datos. Para calcularlo, debemos "cortar" la serie con una ventana deslizante de un tamaño suficientemente grande

(ver Figura 5 ), y luego calcular la dimensionalidad fractal de los datos resultantes utilizando, por ejemplo, el método Box-count....

Por favor, aconsejar (preferiblemente más simple), cómo calcular el tamaño de esta ventana deslizante. O, al menos, dónde mirarlo.


Los datos de contacto del autor están en la web, recomiendo consultar la fuente original.
 

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡HURRA POR EL TRABAJO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Gracias a maniac y granit77.

Una anécdota reciente. Una clase de literatura en un laboratorio de informática, dirigida por un profesor de informática.

-Gerasim era, este.....thim......nu......a y no tenía tarjeta de sonido :-)))))))))))))))))

En cuanto al experto, he intentado acortar la condición de negociación. Ya sabes, para una mejor percepción.

Es decir, si hay cálculos matemáticos, es mejor llamarlos a través del doble.

 
Maniac >> :

¡¡¡Hola a todos, un consejo por favor!!! Tengo algunas preguntas, no puedo hacerlo yo mismo:

1. ¿Cómo hacer que sólo se abra una orden en una barra?

....... ...

Espero sus respuestas. Muchas gracias de antemano.

https://www.mql5.com/ru/forum/102366

//-----------------

https://www.mql5.com/ru/forum/113983/page2

//-------------

https://www.mql5.com/ru/forum/110184

 
morok >> :

Ayúdenme a encontrar un error en el código. no hay error al compilar pero los cálculos y las operaciones no pasan( Gracias de antemano a los profesionales que están aquí.

Lo primero que me llama la atención de tu código y que no tengo claro es la corrección del uso de la función IndicatorCounted() en el Asesor Experto. No lo he comprobado pero creo que su corrección está garantizada sólo en los indicadores personalizados.