[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 171

 

Hola a todos, ¡escribí un EA! En el probador, todo funciona, pero en la cuenta real, ¡se niega a abrir posiciones! Tenga en cuenta que cierra muy bien las posiciones abiertas manualmente, pero, precisamente para abrir, no quiere ... ¿Qué hacer?


CÓDIGO:


//+------------------------------------------------------------------+
//| DOKTRADE.mq4 ||
//| DOKSTER@YANDEX.RU |
//| DOKSTER@YANDEX.RU |
//+------------------------------------------------------------------+
#property copyright "DOKSTER@YANDEX.RU"
#enlace de propiedad "DOKSTER@YANDEX.RU"

extern double LOT = 0.01; // LOTES
extern double KOF = 2;
extern double SAF = 5;
extern int FRC = 21;

int inicio()

{


int CNT;

int TOTAL;
int SPREAD;

doble SPR;
doble SPRW;

doble FRCU;
doble FRCU; doble FRCD;

doble EMAH;
doble EMAM;;
doble EMAL; doble EMAL;

doble OPEN;
doble cierre;

doble DFB;
doble DFS;

EMAH = iMA(NULL,0,34,8,MODE_SMA,PRICE_HIGH,1);
EMAM = iMA(NULL,0,34,8,MODE_SMA,PRICE_MEDIAN,1);
EMAL = iMA(NULL,0,34,8,MODE_SMA,PRICE_LOW,1);

OPEN = iOpen(NULL,0,1);
CLOSE = iClose(NULL,0,1);

FRCU = High[iHighest(NULL,0,MODE_HIGH,FRC,1)];
FRCD = Low[iLowest(NULL,0,MODE_LOW,FRC,1)];

DFB = (CLOSE-FRCD);
DFS = (FRCU-CLOSE);

SPR = MarketInfo(Symbol(),MODE_SPREAD);
SPRW = (SPR*Punto);

TOTAL = OrdersTotal();

if(TOTAL<1)

{

{ si (OPEN<EMAH&&CLOSE>EMAH)

OrderSend(Symbol(),OP_BUY,LOT,Ask,3,FRCD-(SAF*Point),CLOSE+(DFB*KOF), "DOKTRADE",15775,0,Green);


si (OPEN>EMAL&&CLOSE<EMAL)

OrderSend(Symbol(),OP_SELL,LOT,Bid,3,FRCU+((SAF*Point)+SPRW),CLOSE-(DFS*KOF), "DOKTRADE",15885,0,Red);

return(0);

}
}

for(CNT=0;CNT<TOTAL;CNT++)

{

OrderSelect(CNT,SELECT_BY_POS,MODE_TRADES);

{

if (OrderType()==OP_BUY && OrderSymbol()==Symbol())

{

si (OPEN>EMAL&&CLOSE<EMAL)

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);

return(0);

}

if (OrderType()==OP_SELL && OrderSymbol()==Symbol())

{

si (OPEN<EMAH&&CLOSE>EMAH)

OrderClose(OrderTicket(),OrderLots(),Ask,3,Blue);

return(0);

}

}

}

}
 

¡Buenas tardes!

Chicos, por favor, ayudadme a saber en qué me estoy equivocando. Tengo el indicador Aroon Up&Dn.

Estoy tratando de ponerlo en mi Asesor Experto... No quiere abrir órdenes:

extern int     _Aroon_Period = 14;
extern int     _TimeF = 60;
extern int     _Point = 10;
extern double  _lots=0.01;
extern int     _Prof = 150;
int start()
  {
//----
   double _Up1, _Up2, _Dn1, _Dn2;
   if (Volume[0]>1) return;
   if (_Point<MarketInfo(Symbol(),MODE_STOPLEVEL)) _Point=MarketInfo(Symbol(),MODE_STOPLEVEL);
   _Up1=iCustom(NULL,_TimeF,"Aroon_Up_Down",_Aroon_Period,1,1); // пробовал 0 и AroonUpBuffer
   _Up2=iCustom(NULL,_TimeF,"Aroon_Up_Down",_Aroon_Period,1,2);
   _Dn1=iCustom(NULL,_TimeF,"Aroon_Up_Down",_Aroon_Period,2,1);
   _Dn2=iCustom(NULL,_TimeF,"Aroon_Up_Down",_Aroon_Period,2,2);  // пробовал 1 и AroonDnBuffer

   if (_Up1>_Dn1  && _Up2<_Dn2) 
   
   {      
       _OrderDelete(OP_SELLSTOP);
      _price=NormalizeDouble((High[1]+_Point*Point),MarketInfo(Symbol(),MODE_DIGITS));
      _OrderModify(OP_SELL);
      OrderSend(Symbol(),OP_BUYSTOP,_lots,_price,5,0,_price+_Prof*Point,0,0,0,Green);
   }
   if ( _Up1<_Dn1  && _Up2>_Dn2 ) 
   
   {     
      _OrderDelete(OP_BUYSTOP);
      _price=NormalizeDouble((Low[1]-_Point*Point),MarketInfo(Symbol(),MODE_DIGITS));
      _OrderModify(OP_BUY);
      OrderSend(Symbol(),OP_SELLSTOP,_lots,_price,5,0,_price-_Prof*Point,0,0,0,Red);
   }

//---- OrderSendError
   return(0);
  }
Archivos adjuntos:
 
7sintez:

Hola a todos, ¡he escrito un EA! En el probador, todo funciona, pero en la cuenta real, ¡se niega a abrir posiciones! Tenga en cuenta que cierra muy bien las posiciones abiertas manualmente, pero, precisamente para abrir, no quiere ... ¿Qué debo hacer?


En primer lugar, mira los errores en el registro... Para los parámetros de precio al enviar la orden es muy recomendable NormalizeDouble.

 
splxgf:

Para empezar, fíjate en los errores del cuaderno de bitácora... Para los parámetros de precio al enviar una orden es muy recomendable NormalizeDouble.

Gracias por el consejo, pero si puedes ser más específico... No puedo ver nada en mi diario, ¡excepto la sincronización! Por favor, aconséjeme, ¿puede haber algo que añadir en alguna parte? Sí, y cierra normalmente... ¡Es decir, en el cierre todo funciona...!
 
Y otra pregunta - ¿puede el funcionamiento de cualquier otro script afectar el funcionamiento de este EA?
 
Terminado con NormalizeDouble... ¡No hay reacción! ¿Qué debo cambiar en la configuración?
 
splxgf:

Puede ir a https://docs.mql4.com/ru/array/ArrayMaximum

en una matriz de Alto.

Si puedes ser más específico, no he podido averiguarlo. Necesito encontrar el valor más alto entre High[i] y High[1]. Gracias.
 
93408:

¡Buenas tardes!

Chicos, por favor, ayudadme a saber en qué me estoy equivocando. Tengo el indicador Aroon Up&Dn.

Estoy tratando de ponerlo en mi Asesor Experto... No quiere abrir órdenes:


Creo que debido a esto

si (Volumen[0]>1) retorno;

 
7sintez:
Gracias por el consejo, pero si puedes ser más específico... Porque el registro no muestra nada aparte de la sincronización. Por favor, aconséjeme, ¿puede haber algo que añadir en alguna parte? Sí, y cierra normalmente... Es decir, al cerrar todo funciona...!

En realidad, es una tontería hacer esas preguntas a un escritor experto :) Si quiere comprobar las posiciones de comprobación y los valores límite para ver si están cerca del precio de apertura, probablemente aprenderá un par de cosas sobre la gramática china.
 
Roger:


Creo que es por eso.

si (Volumen[0]>1) retorno;

No, no es eso.

Gracias a todos, lo tengo. Funcionó