Cómo armo mi asesor por ensayo y error - página 33

 

#versión de la propiedad "1.07"

Se ha cambiado el color de los botones.

Alpari MT5

No utilizo los botones - sólo como un panel de información

Archivos adjuntos:
 
Aleksandr Klapatyuk:

#versión de la propiedad "1.07"

Se ha cambiado el color de los botones.

los botones no se utilizan - sólo como una barra de información

y otro color

Alpari MT5.png

Archivos adjuntos:
 

dime quién es el autor de este código -(o originalmente he descargado otro código desde el enlace que me disteSpeed-v1.mq548 kb)

porque es así

//+------------------------------------------------------------------+
//| AVGiS.mq5 |
//| Copyright 2017, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"

¿Es él?

SEM

lo tengo - cuando las posiciones llegan a la ganancia - presionando el botón, más posiciones se abrirán en la dirección de

EURUSDH2 USDCHFH2.png

No, resulta que cuando la línea horizontal funcionó para la venta, el botón de compra funciona para el botón de venta y el botón de venta no funciona ----- probablemente el botón de inversión debe ser utilizado.

Tendré que experimentar para ver qué es lo mejor, pero una inversión probablemente ayudaría.

 

#versión de la propiedad "1.08"

ha añadido un botón de reversión.

y en la configuración, cambió la ubicación

configuración de los botones

input string   t9="------ Button: AVGiS -----";         // AVGiS
input bool     ObjectLineX             = false;         // Button: Horizontal Line(true) || Buy/Sell(false)
input bool     TickRevers              = false;         // Button: Revers
input int      TrailingStop_STOP_LEVEL = 350;           // Trailing Stop LEVEL
input ENUM_TIMEFRAMES _period          = PERIOD_CURRENT;// period
input int      limit_total_symbol      = 190;           // limit_total_symbol
input int      limit_total             = 190;           // limit_total
//---

Al abrir una posición, el stop loss se fija inmediatamente - pero también el arrastre (es una línea horizontal amarilla), para desactivarlo, basta con poner 0

input string   t2="------ Obj:Trailing Line     --- ";  // Trailing Obj:Line
input double   InpStopLoss             = 55;            // Obj: Stop Loss, in pips (1.00045-1.00055=1 pips) ------------------что бы отключить, ставим 0 !!!!!!
input ushort   InpObjTrailingStop      = 27;            // Obj: Trailing Stop (distance from price to object, in pips)
input ushort   InpObjTrailingStep      = 9;             // Obj: Trailing Step, in pips (1.00045-1.00055=1 pips)

pero el stop de pérdidas no estará en la misma posición, sino que será arrastrado por laentrada trailing ushort InpObjTrailingStop = 27;// Obj: Trailing Stop (distancia del precio al objeto, en pips)

----------------------------------------------------------------

No entiendo cómo funcionan estos botones.

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
При создании графического объекта функцией ObjectCreate() необходимо указать тип создаваемого объекта, который может принимать одно из значений перечисления ENUM_OBJECT. Дальнейшие уточнения свойств созданного объекта возможно с помощью функций по работе с графическими объектами.
Archivos adjuntos:
2.mq5  17 kb
 

#versión de la propiedad "1.09"

Se ha añadido otro botón: borra todas las posiciones abiertas de todos los pares.

Elimina el Asesor Experto y cambia la plantilla del gráfico

Alpari MT5XXX

Archivos adjuntos:
2.mq5  17 kb
 

#versión de la propiedad "1.10"

añadido, ocultar botones.

Lo he estropeado aquí - funciona en la demo, pero en la real tiene error 2019.11.05 15:51:33.103 AVGiS intelligence (GBPUSD,H1) array out of range in 'AVGiS intelligence.mq5' (176,34)

   //+------------------------------------------------------------------+
   //| Calculate optimal lot size                                       |
   //+------------------------------------------------------------------+
   double            TradeSizeOptimized(void)
     {
      double price=0.0;
      double margin=0.0;
      string arr[];
      int resize = 0, syTotal = SymbolsTotal(true);
      for(int i = 0; i < syTotal; i++)
        {
         string name = SymbolName(i, true);
         if(SymbolInfoInteger(name, SYMBOL_VISIBLE))
           {
            resize = ArrayResize(arr, i+1);
            arr[i] = name;
           }
         //--- select lot size

         if(!SymbolInfoDouble(arr[i],SYMBOL_ASK,price))
            return(0.0);
         if(!OrderCalcMargin(ORDER_TYPE_BUY,arr[i],1.0,price,margin))
            return(0.0);
         if(margin<=0.0)
            return(0.0);
        }
      double lot=NormalizeDouble(AccountInfoDouble(ACCOUNT_MARGIN_FREE)*MaximumRisk/margin,2);
      //--- calculate number of losses orders without a break
      if(DecreaseFactor>0)
        {
         //--- select history for access
         HistorySelect(0,TimeCurrent());
         //---
         int    orders=HistoryDealsTotal();  // total history deals
         int    losses=0;                    // number of losses orders without a break

         for(int y=orders-1; y>=0; y--)
           {
            ulong ticket=HistoryDealGetTicket(y);
            if(ticket==0)
              {
               Print("HistoryDealGetTicket failed, no trade history");
               break;
              }
            for(int i = 0; i < syTotal; i++)
              {
               string name = SymbolName(i, true);
               if(SymbolInfoInteger(name, SYMBOL_VISIBLE))
                 {
                  resize = ArrayResize(arr, i+1);
                  arr[i] = name;
                 }
               //--- check symbol
               if(HistoryDealGetString(ticket,DEAL_SYMBOL)!=arr[i])
                  continue;
               //--- check Expert Magic number
               if(HistoryDealGetInteger(ticket,DEAL_MAGIC)!=Magic_Number)
                  continue;
               //--- check profit
               double profit=HistoryDealGetDouble(ticket,DEAL_PROFIT);
               if(profit>0.0)
                  break;
               if(profit<0.0)
                  losses++;
              }
           }
         //---
         if(losses>1)
            lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
        }
      for(int i = 0; i < syTotal; i++)
        {
         string name = SymbolName(i, true);
         if(SymbolInfoInteger(name, SYMBOL_VISIBLE))
           {
            resize = ArrayResize(arr, i+1);
            arr[i] = name;
           }
         //--- normalize and check limits
         double stepvol=SymbolInfoDouble(arr[i],SYMBOL_VOLUME_STEP);
         lot=stepvol*NormalizeDouble(lot/stepvol,0);
         double minvol=SymbolInfoDouble(arr[i],SYMBOL_VOLUME_MIN);
         if(lot<minvol)
            lot=minvol;
         double maxvol=SymbolInfoDouble(arr[i],SYMBOL_VOLUME_MAX);
         if(lot>maxvol)
            lot=maxvol;
        }
      //--- return trading volume
      return(lot);
     }
   //+------------------------------------------------------------------+
Archivos adjuntos:
 

aquí hay un experto en trabajo

Archivos adjuntos:
 

Añadido al anterior Experto, dos métodos para la línea Horizontal.

1 posibilidad : la línea 1 abrirá la línea 4 a una distancia determinada, la línea 2 abrirá la línea 3a una distancia determinada.

input string   t3="------ Obj:Name 1-2-3-4 ------";     // Имя Объекта
input string   InpObjUpNameZ           = "TOP 1";       // Obj: TOP (Name Obj) ВВЕРХУ 1
input string   InpObjDownNameZ         = "LOWER 2";     // Obj: LOWER (Name Obj) ВНИЗУ 2
input int      Step                    = 5;             // Obj: Шаг сетки, пунктов(0 = false)
input string   InpObjDownName0         = "TOP 3";       // Obj: TOP (Name Obj) ВВЕРХУ 3
input ENUM_TRADE_COMMAND InpTradeCommand=open_sell;     // Obj:  command:
input string   InpObjUpName0           = "LOWER 4";     // Obj: LOWER (Name Obj) ВНИЗУ 4
input ENUM_TRADE_COMMAND InpTradeCommand0=open_buy;     // Obj:  command:

2ª posibilidad: la línea 7 abrirá una línea 10 a una distancia determinada que se mueve detrás del precio y cuando el precio la toque, se disparará una orden. la línea 8 abrirá una línea 9 a una distancia determinada, - la misma acción que con 7 y 10.

input string   t5="- 2_Obj:Trailing Line 7-8-9-10 --- ";// Trailing Obj:Line
input string   InpObjUpNameZx          = "TOP 7";       // Obj: TOP (Name Obj) ВВЕРХУ 7
input string   InpObjDownNameZx        = "LOWER 8";     // Obj: LOWER (Name Obj) ВНИЗУ 8
input int      StepZx                  = 5;             // Obj: Шаг сетки, пунктов(0 = false)
input string   InpObjUpNameX           = "TOP 9";       // Obj: TOP (Horizontal Line) ВВЕРХУ 9
input ENUM_TRADE_COMMAND InpTradeCommandX=open_sell;    // Obj:  command:
input string   InpObjDownNameX         = "LOWER 10";    // Obj: LOWER (Horizontal Line) ВНИЗУ 10
input ENUM_TRADE_COMMAND InpTradeCommand0X=open_buy;    // Obj:  command:
input ushort   InpObjTrailingStopX     = 5;             // Obj: Trailing Stop (distance from price to object, in pips)
input ushort   InpObjTrailingStepX     = 5;             // Obj: Trailing Step, in pips (1.00045-1.00055=1 pips)
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
При создании графического объекта функцией ObjectCreate() необходимо указать тип создаваемого объекта, который может принимать одно из значений перечисления ENUM_OBJECT. Дальнейшие уточнения свойств созданного объекта возможно с помощью функций по работе с графическими объектами.
Archivos adjuntos:
 
Aleksandr Klapatyuk:

Añadido al anterior Experto, dos métodos para la línea Horizontal.

1 posibilidad : la línea 1 abrirá la línea 4 a una distancia determinada, la línea 2 abrirá la línea 3 a una distancia determinada.

2 posibilidades: la línea 7 abrirá una línea 10 a una distancia determinada que se mueve detrás del precio y cuando el precio la toca, se dispara una orden. la línea 8 abrirá una línea 9 a una distancia determinada, - la misma acción que para 7 y 10.

probó cómo funciona

EURJPYM301.png

EURJPYM302

EURJPYM303

podría haber cambiado en la configuración de esa línea - habría abierto una venta

Archivos adjuntos:
 
Aleksandr Klapatyuk:

Añadido al anterior Experto, dos métodos para la línea Horizontal.

1 posibilidad : la línea 1 abrirá la línea 4 a una distancia determinada, la línea 2 abrirá la línea 3 a una distancia determinada.

2ª posibilidad: la línea 7 abrirá una línea 10 a una distancia determinada , que se mueve detrás del precio y cuando éste la toca, se dispara una orden. la línea 8 abrirá una línea 9 a una distancia determinada, - la misma acción que para 7 y 10.

en la primera posibilidad, las líneas 4 y 3 se abrirán a una distancia determinada, hasta el infinito

Archivos adjuntos: