[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 71

 
DhP:
El MagicNumber no cambia en este caso, a menos que sea proporcionado por el código EA.

Gracias a todos.
 
Roman.:


Solución:

Para comprar (vender - por analogía):

1. Fractura MA - obtener los valores MA en las barras 3, 2 y 1 - comparar. Si los valores de MA en las barras 3>2 y 2<1, es una ruptura.

2. entonces - fractal - penetración - una señal para hacer un trato

En cuanto a la enumeración de MA, colóquela en variables externas (optimizables):

Period_MA (se puede establecer de 2 a 240 con el paso 2), MODE - (método de cálculo de MA - rango de cambios de 0 a 3 paso 1), PRICE_TYPE - (precio constante - rango de cambios de 0 a 6 paso 1), he oído que cuando se trabaja dentro del día MA cuenta con los valores medios (el precio de cierre no es importante), cuando se trabaja en las velas del día MA cuenta con los precios de cierre de los días.

PERIODO - lo cambias manualmente con cada optimización posterior - 1,5,15,30,60,240...

Pulsa F1 en el iMA - vuelve a leer con atención todo lo que hay allí.

Y por supuesto optimizar el TP y el Stop Loss como siempre.

P.D. No olvides escribir una información sobre los resultados de las pruebas... :-)))

Los resultados de las pruebas para TF=1 min no dieron variantes rentables, incluso si optimizamos el EA una vez al día.
 
DhP:
Cuando una posición está parcialmente cerrada, se puede cambiar el magik. Estoy seguro de que puedes escribir esto fácilmente.

Probablemente tienes conocimientos que no están al alcance de la comunidad mql o simplemente no entiendes la pregunta o eres un ingenuo iluso que la función OrderClose cambia el magik.

 
gince:

Entiendo que no tengo una configuración inicial de flag[i+1 ]. Si es así, ¿dónde y cómo lo hago?

Si pongo 1, entonces cuando inicie el indicador, éste (el indicador) esperará el cambio.

La forma correcta de hacerlo es esta:

if ((flag[i]==1 || flag[i]==0) && условие продажи)
con la condición de que la bandera no inicializada =0 (o tomar EMPTY_VALUE....)
 
sergeev:

lo correcto es esto:

Con la condición de que la bandera no inicializada =0 (o tomar EMPTY_VALUE....)

Gracias a todos. Hice lo que quería hacer.

 
volshebnik:
Los resultados de las pruebas en TF=1 min no dieron opciones rentables, incluso si se optimiza el EA una vez al día.

Cuanto menor sea la TF, mayor será el ruido...
 
Roman.:

Cuanto menor sea la TF, mayor será el ruido...
Sí, pero si la estrategia es correcta, debería, me parece, funcionar en cualquier TF, sólo que con diferentes parámetros. El resultado de las pruebas en TF=5 min tampoco dio opciones rentables.
 
volshebnik:
Sí, pero si la estrategia es correcta, debería, me parece, funcionar en cualquier TF, sólo que con diferentes parámetros. El resultado de las pruebas en TF=5 min tampoco dio ninguna opción rentable.

La estrategia es correcta allí. Ahora estoy borracho. Estoy descansando.
 
sergeev:

todavía tienes un error en tu código.

Recuerde: los Stops y Takeovers en las órdenes pendientes no se basan en el precio actual sino en el precio de apertura de la orden.



Un agradecimiento y un respeto especial para ti :)))))

Errores corregidos (espero que ahora todos :)) ) + limitadores añadidos. Será muy útil para aquellos que realmente necesitan asignar un número mágico a los pedidos realizados.

Que lo disfrutes.

#property copyright "Copyright © 2010 - 2011, Хлыстов Владимир, в редакции AMRo"
#property link      "cmillion@narod.ru, nemo811@mail.ru"
#property show_inputs
/*
Иногда требуется помочь советнику добавить ордер, но чтобы советник его принял за свой
необходим Magic номер. Для выставления ордера с таким номером и предназначен этот скрипт.
Возможна одновременная установка до 6 типов ордеров. При сбоях связи или резком движении цены
будет выполнено 10 попыток выставления ордера, после чего скрипт закончит работу.
*/
//--------------------------------------------------------------------
extern int     Magic       = 0;        //уникальный номер ордера
extern bool    BUY         = false;    //открыть ордер BUY
extern bool    BUY_STOP    = false;    //поставить ордер BUY STOP
extern bool    BUY_LIMIT   = false;    //поставить ордер BUY LIMIT
extern bool    SELL        = false;    //открыть ордер SELL
extern bool    SELL_STOP   = false;    //поставить ордер SELL STOP
extern bool    SELL_LIMIT  = false;    //поставить ордер SELL LIMIT
extern double  Lot         = 0.1;      //объем ордера
extern int     takeprofit  = 0;        //уровень выставления TP, если 0, то TP не выставляется
extern int     stoploss    = 0;        //уровень выставления SL, если 0, то SL не выставляется
extern int     DistanceSet = 40;       //расстояние от рынка для отложенника
extern int     slippage    = 3;        //максимально допустимое отклонение цены для рыночных ордеров
//--------------------------------------------------------------------
double SL,TP;
//--------------------------------------------------------------------
int start()
{
   if (BUY)
   {
      if (takeprofit!=0) TP  = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL  = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0;     
      OPENORDER ("Buy");
   }
   if (SELL)
   {  
      if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL = NormalizeDouble(Bid + stoploss*Point,Digits);  else SL=0;              
      OPENORDER ("Sell");
   }
   if (BUY_STOP)
   {
      if (takeprofit!=0) TP  = NormalizeDouble(Ask + DistanceSet*Point + takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL  = NormalizeDouble(Ask + DistanceSet*Point - stoploss*Point,Digits); else SL=0;     
      OPENORDER ("Buy Stop");
   }
   if (SELL_STOP)
   {  
      if (takeprofit!=0) TP = NormalizeDouble(Bid - DistanceSet*Point - takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL = NormalizeDouble(Bid - DistanceSet*Point + stoploss*Point,Digits);  else SL=0;              
      OPENORDER ("Sell Stop");
   }
   if (BUY_LIMIT)
   {
      if (takeprofit!=0) TP  = NormalizeDouble(Ask - DistanceSet*Point + takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL  = NormalizeDouble(Ask - DistanceSet*Point - stoploss*Point,Digits); else SL=0;     
      OPENORDER ("Buy Limit");
   }
   if (SELL_LIMIT)
   {  
      if (takeprofit!=0) TP = NormalizeDouble(Bid + DistanceSet*Point - takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL = NormalizeDouble(Bid + DistanceSet*Point + stoploss*Point,Digits);  else SL=0;              
      OPENORDER ("Sell Limit");
   }
return(0);
}
//--------------------------------------------------------------------
void OPENORDER(string ord)
{
   int error,err;
   while (true)
   {  error=true;
      if (ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Buy Stop" ) error=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(Ask + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Sell Stop") error=OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid - DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Buy Limit" ) error=OrderSend(Symbol(),OP_BUYLIMIT, Lot,NormalizeDouble(Ask - DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Sell Limit") error=OrderSend(Symbol(),OP_SELLLIMIT,Lot,NormalizeDouble(Bid + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
      if (error==-1) //неудачная попытка
      {  
         ShowERROR();
         err++;Sleep(2000);RefreshRates();
      }
      if (error || err >10) return;
   }
return;
}                  
//--------------------------------------------------------------------
void ShowERROR()
{
   int err=GetLastError();
   switch ( err )
   {                  
      case 1:   return;
      case 2:   Alert("Нет связи с торговым сервером ",Symbol());return;
      case 3:   Alert("Error неправильные параметры ",Symbol());return;
      case 130: Alert("Error близкие стопы   Ticket ",Symbol());return;
      case 134: Alert("Недостаточно денег   ",Symbol());return;
      case 146: Alert("Error Подсистема торговли занята ",Symbol());return;
      case 129: Alert("Error Неправильная цена ",Symbol());return;
      case 131: Alert("Error Неправильный объем ",Symbol());return;
      case 4200:Alert("Error Объект уже существует ",Symbol());return;
      default:  Alert("Error  " ,err," ",Symbol());return;
   }
}
//--------------------------------------------------------------------
 
Roman.:

hay una verdadera estrangulación allí. Ahora mismo estoy muy colocado. Estoy descansando.
Lo mismo en TF = 15 min. Todavía no veo ninguna "fidelidad" en esta estrategia, puede que aparezca más adelante. (Que tenga un buen descanso))