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

 
belous:

¡¡¡¡Chicos... ayuda que sabe!!!!


La esencia de la estrategia: Entrada por estocástico (5,14,3) salida también por estocástico pero con otro periodo (5,3,3). Aquí no entiendo cómo puede zdelat una salida por los estocásticos, y no en la señal inversa?
Tengo un problema y no tengo ni idea de cómo se puede solucionar, voy a intentar explicarlo.
Así, hay 2 funciones en el código que he expuesto
...

Publica los códigos en el foro con el SRC. Y no hay nada que gritar.


 
Hola.Quien puede sugerir cual es el problema con el asesor.Al compilar da el error de que hay que poner un paréntesis, yo al poner-compilar da otro que el paréntesis está mal puesto.Toda mi cabeza ya está rota.
Archivos adjuntos:
 
artemka_1981:
Hola, podría alguien aconsejarme cuál es el problema de mi EA. Me sigue dando un error durante la compilación, me sigue dando un error cuando escribo un paréntesis de cierre y el compilador me da otro error cuando escribo un paréntesis de cierre.

Si pones una llave de cierre al final,

añadir líneas como OrderMagicNumber() == )

y poner un paréntesis de cierre en uno de ellos, todo compila

 
¿Pueden decirme cómo configurar correctamente la caducidad de los pedidos? He intentado escribir TimeCurrent()+60, las órdenes no se abren. Por lo general, este parámetro se permite en el corredor
 
sss2019:
¿Dígame cómo configurar correctamente la caducidad de los pedidos? He intentado escribir TimeCurrent()+60, pero no abre las órdenes. Por lo general, este parámetro se permite en el corredor

60 son 60 segundos, por lo que probablemente no puedas establecerlo tan bajo (yo tengo un límite de 10 minutos, por ejemplo).

intente TimeCurrent()+60*60*24 - un día

y ver qué código de error aparece

 
ilunga:

Si pones una llave de cierre al final,

añadir líneas como OrderMagicNumber() == )

y poner un paréntesis de cierre en uno de ellos, todo compila

Hola. He añadido un paréntesis y ahora el error es '\Nfin_del_programa' - paréntesis izquierdo desequilibrado. No está claro ( poner un paréntesis de cierre en uno de ellos )
if(tim<iTime(Symbol(),PERIOD_D1,0)) return(1);
 return(0);
 }
 
 OrderMagicNumber()

 
artemka_1981:
Hola. He añadido un paréntesis y ahora el error es '\Nfin_del_programa' - paréntesis izquierdo desequilibrado. No está claro ( poner un paréntesis de cierre en uno de ellos )

se compila así:

//+------------------------------------------------------------------+
//|                                                Open_Buy_Sell.mq4 |
//|                                                                  |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#define magic 999

#property link      "http://www.metaquotes.net"
extern double  _lots         = 0.01;
extern int     _takeProfit   = 1200;
extern int      maxpos       = 1;     // количество поз
extern bool    _trailingStop = true;
//+------------------------------------------------------------------+

int start()
  {
   double _slBuy=0.0,_slSell=0.0, _tpBuy=0.0, _tpSell=0.0, _opBuy=0.0, _opSell=0.0;

//if (iVolume(Symbol(),PERIOD_D1,0)>1) return;
//     if (Volume[0]>1) return;
     if (_trailingStop){ 
     _TrailingStop();
      }
   _opBuy=NormalizeDouble(iHigh(Symbol(),0,1), Digits);
   _slBuy=NormalizeDouble(iLow(Symbol(),PERIOD_D1,1), Digits);
   _tpBuy=NormalizeDouble(Ask+_takeProfit*Point, Digits);
      if ( _opBuy<Ask && CountPos(1)<maxpos)
       if(barOpen(OP_BUYSTOP)==1 ||barOpen(OP_BUY)==1 )
        OrderSend(Symbol(),OP_BUYSTOP,_lots,_opBuy,15,_slBuy,_tpBuy,"Open_Buy_Sell",0,Green);

   _opSell=NormalizeDouble(iLow(Symbol(),0,1), Digits);
   _slSell=NormalizeDouble(iHigh(Symbol(),PERIOD_D1,1), Digits);
   _tpSell=NormalizeDouble(Bid-_takeProfit*Point, Digits);
     if (_opSell>Bid && CountPos(0)<maxpos)
      if(barOpen(OP_SELLSTOP)==1 ||barOpen(OP_SELL)==1 )
       OrderSend(Symbol(),OP_SELLSTOP,_lots, _opSell,15,_slSell,_tpSell,"Open_Buy_Sell",0,Red);
//----
   return(0);
  }
//+------------------------------------------------------------------+  
 //Проверяем количесвто позиций.
   int CountPos(int type) 
{//Описание http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=66

int i;
int col;
int count=0 ;
for(i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS)==true)
{
if(OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol() && type==1 && OrderMagicNumber()== magic){count++;}
if(OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol() && type==0 && OrderMagicNumber()== magic){count++;}
         }
       }   
return(count);
}
//+------------------------------------------------------------------+
void _TrailingStop(){
   int i;
   double _stopLossSellF=NormalizeDouble(iHigh(Symbol(),0,1), Digits),
          _stopLossBuyF=NormalizeDouble(iLow(Symbol(),0,1), Digits);
   if (OrdersTotal()>0){
      for (i=OrdersTotal()-1; i>=0; i--){
         if (OrderSelect(i, SELECT_BY_POS)){
            if (OrderSymbol()==Symbol() && OrderMagicNumber()==magic){
             
               if (OrderType()==OP_BUY && OrderOpenPrice() < _stopLossBuyF){
                  while (IsTradeContextBusy()) Sleep(1000);
                  RefreshRates();
                  OrderModify(OrderTicket(),OrderOpenPrice(),_stopLossBuyF,OrderTakeProfit(),OrderExpiration(),CLR_NONE);
               }
           
               if (OrderType()==OP_SELL && OrderOpenPrice() > _stopLossSellF && _stopLossSellF!=0.0){
                  while (IsTradeContextBusy()) Sleep(1000);
                  RefreshRates();
                  OrderModify(OrderTicket(),OrderOpenPrice(),_stopLossSellF,OrderTakeProfit(),OrderExpiration(),CLR_NONE);
               }
            }
         }
      }
   }
return;
}
int barOpen(int ty)
{
datetime tim=0;
 for(int i=0; i<=OrdersTotal(); i++)
    {  
       if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))continue;
       if(OrderSymbol() !=Symbol()|| OrderMagicNumber()!= magic|| OrderType()!=ty) continue; 
       if(tim<OrderOpenTime())        
          tim=OrderOpenTime();
   }
 for(i=0; i<=OrdersHistoryTotal(); i++)
    {  
       if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))continue;
       if(OrderSymbol() !=Symbol()|| OrderMagicNumber()!= magic|| OrderType()!=ty) continue; 
       if(tim<OrderOpenTime())        
          tim=OrderOpenTime();
   }
 
if(tim<iTime(Symbol(),PERIOD_D1,0)) return(1);
 return(0);
}
 

¿Puede decirme si tengo dos comandos OrderSend consecutivos estableciendo órdenes, necesito colocar la función IsTradeAllowed entre ellos?

¿o no es necesario y el EA pasará de la primera llamada OrderSend a la segunda sólo después de una orden colocada con éxito?

Si IsTradeAllowed sigue siendo necesario, ¿qué tiempo de espera debe establecerse en el bucle while?

 
¿Hubo un error en esa línea? Muchas gracias.
if(OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol() && type==1 && OrderMagicNumber()==MAGICMA ){count++;}
if(OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol() && type==0 && OrderMagicNumber()==MAGICMA ){count++;}
ilunga:

Así es como se compila:

Ahora al probar no abre ninguna transacción en el registro escribe Open_BuyS_SellS EURUSD,Daily: OrderSend error 131

 
Buenas noches. Me gustaría saber si alguien utiliza el indicador para distribuir las operaciones por niveles de precios en un marco temporal determinado, que se puede descargar de http://fxcoder.ru/indicators/tpo. Si es así, ¿cómo se puede analizar adecuadamente? ¿Tiene alguna información al respecto?
Razón de la queja: