Errores, fallos, preguntas - página 770

 
maryan.dirtyn:
...

p.d. los que me digan que use bibliotecas estándar por favor no se molesten, me gusta saber lo que hace mi experto y no esperar que no se aplane después

Al menos las bibliotecas estándar se pueden ver/estudiar y se puede entender qué errores se han cometido. Una muy buena oportunidad.
 

Llevo 6 horas intentando hacer esto y me inclino a pensar que es imposible

No usaré ninguna de las estándar, si me disculpan...

 
maryan.dirtyn:

Llevo 6 horas intentando hacer esto y me inclino a pensar que es imposible

No usaré nada estándar, si me disculpan...

¿Qué es lo que le asusta de las bibliotecas estándar? Mira lo que hay en el archivo Trade.mqh:

Función para abrir una posición:

//+------------------------------------------------------------------+
//| Open position.                                                   |
//+------------------------------------------------------------------+
bool CTrade::PositionOpen(const string symbol,const ENUM_ORDER_TYPE order_type,const double volume,
                          const double price,const double sl,const double tp,const string comment)
  {
//--- check stopped
   if(IsStopped(__FUNCTION__)) return(false);
//--- clean
   ClearStructures();
//--- checking
   if(order_type!=ORDER_TYPE_BUY && order_type!=ORDER_TYPE_SELL)
     {
      m_result.retcode=TRADE_RETCODE_INVALID;
      m_result.comment="Invalid order type";
      return(false);
     }
//--- setting request
   m_request.action      =TRADE_ACTION_DEAL;
   m_request.symbol      =symbol;
   m_request.magic       =m_magic;
   m_request.volume      =volume;
   m_request.type        =order_type;
   m_request.price       =price;
   m_request.sl          =sl;
   m_request.tp          =tp;
   m_request.deviation   =m_deviation;
   m_request.type_filling=m_type_filling;
   m_request.comment     =comment;
//--- action and return the result
   return(OrderSend(m_request,m_result));
  }

//---

Deberías estar de acuerdo en que no es muy diferente de lo que tú intentas hacer. Preste atención a la función ClearStructures(). Si hay que fijar los topes después de abrir la posición, la siguiente función le ayudará a hacerlo:

//+------------------------------------------------------------------+
//| Modify specified opened position.                                |
//+------------------------------------------------------------------+
bool CTrade::PositionModify(const string symbol,const double sl,const double tp)
  {
//--- check stopped
   if(IsStopped(__FUNCTION__)) return(false);
//--- clean
   ClearStructures();
//--- setting request
   m_request.action=TRADE_ACTION_SLTP;
   m_request.symbol=symbol;
   m_request.sl    =sl;
   m_request.tp    =tp;
//--- action and return the result
   return(OrderSend(m_request,m_result));
  }

//---

Es sencillo y todo funciona. Y luego puedes añadir/cambiar/experimentar como creas conveniente.

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 
maryan.dirtyn:

Llevo 6 horas intentando hacer esto y me inclino a pensar que es imposible

No usaré ninguna de las estándar, si me disculpan...

Especialmente para ti:

#include <trade\trade.mqh>
void OnStart()
  {
   CTrade trade;
   trade.Buy(1.0,"EURUSD",SymbolInfoDouble("EURUSD",SYMBOL_ASK),1.20000,1.50000,"Yeah, baby!");
  }

Para tocar lo desconocido, simplemente inserta este código en el script, compila, y luego pon el cursor en Comprar y presiona Alt + G.

Empezarás a viajar por las entrañas de todas las bibliotecas. Al mismo tiempo, se debe tener en cuenta la gestión de los errores.

 
Renat:

Especialmente para ti:

Para tocar lo desconocido, simplemente inserte este código en el script, compílelo, luego coloque el cursor en Comprar y presione Alt+G.

Empezarás a viajar por las entrañas de todas las bibliotecas. Al mismo tiempo, se debe tener en cuenta la gestión de los errores.


"Yeah, baby!"
Incluso puedes expresar lo anterior y todo estará bien. )))
 

Supongo que no hay otra forma de hacerlo, ¿verdad?

#include <trade\trade.mqh>
 
maryan.dirtyn:

Supongo que no hay otra forma de hacerlo, ¿verdad?

Haz una función(es) similar(es) en el archivo principal y no necesitas conectar nada.
 

Eso es lo que estoy haciendo))... 6ª hora... y no puedo averiguar dónde está el error

la reticencia a utilizar las bibliotecas estándar se debe a que las banderas y las variables globales se utilizan dentro de las funciones, y no parece razonable desmontar trade.mqh y otras partes

void OnTick(){ if(PositionsTotal()<1){OPEN();}}

bool OPEN(){
             MqlTradeRequest request; ZeroMemory(request);
             MqlTradeResult  result;  ZeroMemory(result);
             

             request.symbol       = _Symbol;
             request.action       = TRADE_ACTION_DEAL;
             request.type_filling = ORDER_FILLING_FOK;
             request.deviation    = 100;
             request.volume       = NormalizeDouble(2,2);
             request.type         = ORDER_TYPE_BUY;
             request.price        = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
             request.tp           = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK) + 500*_Point,_Digits);
             request.sl           = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK) - 500*_Point,_Digits);

             OrderSend(request,result);     
                        
             if(result.retcode==10009 || result.retcode==10008)  Print("Succsesful open");
             else                                               Print("Error open: ",DoubleToString(GetLastError(),0),"  response code: ",result.retcode);
    
   return(true);}
 
maryan.dirtyn:

Eso es lo que estoy haciendo))... 6ª hora... y no puedo averiguar dónde está el error

No quiero usar las bibliotecas estándar porque uso banderas y variables globales dentro de las funciones, y no parece razonable separar trade.mqh y otras funciones

¿En qué servidor y con qué símbolo lo estás intentando?

Ejecuté su código en MetaQuotes-Demo y la transacción fue exitosa:

2012.07.11 15:08:36     Trades  '1026582': deal #109507221 buy 2.00 EURUSD at 1.22625 done (based on order #115678901)
2012.07.11 15:08:36     Trades  '1026582': order #115678901 buy 2.00 / 2.00 EURUSD at 1.22625 done
2012.07.11 15:08:36     Trades  '1026582': instant buy 2.00 EURUSD at 1.22627 sl: 1.22127 tp: 1.23127 (deviation: 100)
 

MetaQuotes-Demo

Nombre de usuario: 1219233

EURUSD

Acabo de probarlo en la libra, la misma historia. no hay paradas. hago todo en el probador

Construir 655 (si ayuda)