Asesores Expertos: Cidomo - página 2

 

A continuación, el código:

//--- comprobar los niveles de Congelación y Paradas
/*
 Tipo de orden/posición | Precio de activación | Comprobación
 ------------------------|--------------------|--------------------------------------------
 Orden de compra limitada| Precio Ask| Ask-OpenPrice >= SYMBOL_TRADE_FREEZE_LEVEL
 Orden Stop de compra| Ask| OpenPrice-Ask >= SYMBOL_TRADE_FREEZE_LEVEL
 Orden limitada de venta | Oferta| OpenPrice-Bid > = SYMBOL_TRADE_FREEZE_LEVEL= SYMBOL_TRADE_FREEZE_LEVEL
 Orden Sell Stop| OfertaBid-OpenPrice >= SYMBOL_TRADE_FREEZE_LEVEL
 Posición de compra| Oferta| TakeProfit-Bid >= SYMBOL_TRADE_FREEZE_LEVEL 
 |Posición de venta | Bid-StopLoss >= SYMBOL_TRADE_FREEZE_LEVEL
 Posición de venta| Ask| Posición de venta Ask-TakeProfit >= SYMBOL_TRADE_FREEZE_LEVEL
 | |StopLoss-Ask >= SYMBOL_TRADE_FREEZE_LEVEL
 
 La compra se realiza al precio Ask| La venta se realiza al precio de Oferta
 ------------------------------------------------|----------------------------------
 TakeProfit >= Oferta| TakeProfit<= Ask
 StopLoss<= Oferta| StopLoss>= Demanda
 TakeProfit - Demanda >= SYMBOL_TRADE_STOPS_LEVEL || Demanda - TakeProfit >= SYMBOL_TRADE_STOPS_LEVELAsk - TakeProfit >= SYMBOL_TRADE_STOPS_LEVEL
 Bid - StopLoss >= SYMBOL_TRADE_STOPS_LEVEL | StopLoss - Ask >= SYMBOL_TRADE_STOPS_LEVEL
*/
   if(!RefreshRates() || !m_symbol.Refresh())
     {
      PrevBars=0;
      return;
     }
//--- FreezeLevel -> para orden pendiente y modificación
   double freeze_level=m_symbol.FreezeLevel()*m_symbol.Point();
   if(freeze_level==0.0)
      freeze_level=(m_symbol.Ask()-m_symbol.Bid())*3.0;
   freeze_level*=1.1;

Los cálculos no están claros aquí:

freeze_level=(m_symbol.Ask()-m_symbol.Bid())*3.0;

freeze_level*=1.1;

¿Con qué fin? Y por qué multiplicar *3.0 y *=1.1.

 
Sysmart:

El código es el siguiente:

Los cálculos aquí no están claros:

freeze_level=(m_symbol.Ask()-m_symbol.Bid())*3.0;

freeze_level*=1.1;

Con qué propósito. Y por qué multiplicar *3.0 y *=1.1.

La tarea principal es cortar scalpers y pipsetters.

 

La función OnTradeTransaction es muy misteriosa para mí, si es posible, por favor explique con el mayor detalle posible lo que está pasando aquí:

void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
//--- obtener el tipo de transacción como valor de enumeración 
   ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- si la transacción es el resultado de la adición de la transacción en la historia
   if(type==TRADE_TRANSACTION_DEAL_ADD)
     {
      long     deal_ticket       =0;
      long     deal_order        =0;
      long     deal_time         =0;
      long     deal_time_msc     =0;
      long     deal_type         =-1;
      long     deal_entry        =-1;
      long     deal_magic        =0;
      long     deal_reason       =-1;
      long     deal_position_id  =0;
      double   deal_volume       =0.0;
      double   deal_price        =0.0;
      double   deal_commission   =0.0;
      double   deal_swap         =0.0;
      double   deal_profit       =0.0;
      string   deal_symbol       ="";
      string   deal_comment      ="";
      string   deal_external_id  ="";
      if(HistoryDealSelect(trans.deal))
        {
         deal_ticket       =HistoryDealGetInteger(trans.deal,DEAL_TICKET);
         deal_order        =HistoryDealGetInteger(trans.deal,DEAL_ORDER);
         deal_time         =HistoryDealGetInteger(trans.deal,DEAL_TIME);
         deal_time_msc     =HistoryDealGetInteger(trans.deal,DEAL_TIME_MSC);
         deal_type         =HistoryDealGetInteger(trans.deal,DEAL_TYPE);
         deal_entry        =HistoryDealGetInteger(trans.deal,DEAL_ENTRY);
         deal_magic        =HistoryDealGetInteger(trans.deal,DEAL_MAGIC);
         deal_reason       =HistoryDealGetInteger(trans.deal,DEAL_REASON);
         deal_position_id  =HistoryDealGetInteger(trans.deal,DEAL_POSITION_ID);

         deal_volume       =HistoryDealGetDouble(trans.deal,DEAL_VOLUME);
         deal_price        =HistoryDealGetDouble(trans.deal,DEAL_PRICE);
         deal_commission   =HistoryDealGetDouble(trans.deal,DEAL_COMMISSION);
         deal_swap         =HistoryDealGetDouble(trans.deal,DEAL_SWAP);
         deal_profit       =HistoryDealGetDouble(trans.deal,DEAL_PROFIT);

         deal_symbol       =HistoryDealGetString(trans.deal,DEAL_SYMBOL);
         deal_comment      =HistoryDealGetString(trans.deal,DEAL_COMMENT);
         deal_external_id  =HistoryDealGetString(trans.deal,DEAL_EXTERNAL_ID);
        }
      else
         return;
      if(deal_symbol==m_symbol.Name() && deal_magic==m_magic)
         if(deal_entry==DEAL_ENTRY_IN)
            if(deal_type==DEAL_TYPE_BUY || deal_type==DEAL_TYPE_SELL)
              {
               m_need_delete_buy_stop  = true;
               m_need_delete_sell_stop = true;
              }
     }
  }
 

En la expresión:

      double tp=(InpTakeProfit==0)?0.0:price+ExtTakeProfit;
      if(tp!=0.0 && ExtTakeProfit<level) // comprobar precio
         tp=price+ExtTakeProfit;

Creo que hay un error, debería ser: tp=precio+nivel;

 

Hola mi freind gracias por la ea, lo pruebo en la demo y su trabajo bien, abrir y hacer órdenes pinding.


Pero cuando trato de usar en cuenta real. su conseguir rechazado de hacer eso. cualquier idea para ayudar por favor con que quiero probarlo en cuenta real.


Con mi agradecimiento

 
Mazyad AlAdwani :

Hola mi freind gracias por la ea, lo pruebo en la demo y su trabajo bien, abrir y hacer órdenes pinding.


Pero cuando trato de usar en cuenta real. su conseguir rechazado de hacer eso. cualquier idea para ayudar por favor con que quiero probarlo en cuenta real.


Gracias

Desafortunadamente, no puedo leer mentes a distancia. Además, un telépata a tiempo completo está de vacaciones. Por lo tanto: proporcionar estos datos (y es una buena práctica para proporcionar datos técnicos en un recurso técnico)

  • divisa y saldo de la cuenta de operaciones
  • configuración del asesor
  • archivo de registro (de la pestaña Expertos y de la pestaña Diario)
 
Vladimir Karputov:

Por desgracia, no puedo leer la mente a distancia. Además, un telépata a tiempo completo está de vacaciones. Por lo tanto: proporcionar dichos datos (y es una buena práctica proporcionar datos técnicos sobre un recurso técnico).

  • divisa y saldo de la cuenta de operaciones
  • configuración del asesor
  • archivo de registro (de la pestaña Expertos y de la pestaña Diario)


  • configuración del asesor


  • archivo de registro (de la ficha Expertos y la ficha Diario)

gracias de antemano , y lo siento no poner todo lo que desde el principio soy nuevo en todo lo que, pero el aprendizaje,.



 

hola de nuevo, te esperaba para solucionar mi problema con el EA. quiero usarlo en cuenta real, ¿alguna novedad?

 
Mazyad AlAdwani :

hola de nuevo, te esperaba para solucionar mi problema con el EA. quiero usarlo en cuenta real, ¿alguna novedad?

Aprende a leer primero. Aquí es un foro técnico y si se le pide que realice algunas acciones - debe realizar estas acciones.


Foro sobre trading, sistemas automatizados de trading y prueba de estrategias de trading

Expertos: Cidomo

Vladimir Karputov, 2020.06.03 05:08

Por desgracia, no puedo leer la mente a distancia. Además, un telépata a tiempo completo está de vacaciones. Por lo tanto: proporcionar dichos datos (y es una buena práctica para proporcionar datos técnicos sobre un recurso técnico)

  • divisa y saldo de la cuenta de operaciones
  • configuración del asesor
  • archivo de registro (de la pestaña Expertos y de la pestaña Diario)

 
Vladimir Karputov:

Aprende a leer primero. Este es un foro técnico y si se le pide que realice algunas acciones, debe realizarlas.



Lo siento, envie una imagen en la primera respuesta pero no me di cuenta de que habian sido borradas.


de todas formas he hecho un video para que puedas verlo