Come ho assemblato il mio consulente per tentativi ed errori - pagina 33

 

#proprietà versione "1.07"

Cambiato il colore dei pulsanti.

Alpari MT5

Non uso pulsanti - solo come pannello informativo

 
Aleksandr Klapatyuk:

#proprietà versione "1.07"

Cambiato il colore dei pulsanti.

i pulsanti non sono utilizzati - solo come una barra informativa

e un altro colore

Alpari MT5.png

File:
 

dimmi chi è l'autore di questo codice -(o originariamente ho scaricato un altro codice dal link che mi hai datoSpeed-v1.mq548 kb)

perché è così

//+------------------------------------------------------------------+
//| 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"

è lui?

SEM

Ho capito - quando le posizioni arrivano al profitto - premendo il pulsante, altre posizioni si apriranno in direzione di

EURUSDH2 USDCHFH2.png

No, si scopre che quando la linea orizzontale ha funzionato per la vendita, il pulsante di acquisto funziona per il pulsante di vendita e il pulsante di vendita non funziona ----- probabilmente il pulsante di inversione dovrebbe essere usato.

Dovrò sperimentare per vedere cosa è meglio, ma un'inversione probabilmente aiuterebbe.

 

#proprietà versione "1.08"

ha aggiunto un pulsante di inversione.

e nelle impostazioni, ha cambiato la posizione

impostazione del pulsante

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
//---

Quando si apre una posizione, lo stop loss è impostato immediatamente - ma anche il trawl (è una linea orizzontale gialla), per disabilitarlo, basta impostare 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)

ma lo stop loss non sarà nella stessa posizione, sarà tirato su dall'ingresso trailing ushort InpObjTrailingStop = 27;// Obj: Trailing Stop (distanza dal prezzo all'oggetto, in pip)

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

Non capisco come funzionano questi pulsanti.

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

#proprietà versione "1.09"

Aggiunto un altro pulsante - cancella tutte le posizioni aperte per tutte le coppie.

Cancella l'Expert Advisor e cambia il modello del grafico

Alpari MT5XXX

File:
2.mq5  17 kb
 

#proprietà versione "1.10"

aggiunto, nascondere i pulsanti.

Ho fatto un casino qui - funziona su demo, ma su reale ha avuto errore 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);
     }
   //+------------------------------------------------------------------+
 

ecco un esperto funzionante

File:
 

Aggiunto al precedente Expert, due metodi per la linea orizzontale.

1 possibilità: la linea 1 aprirà la linea 4 a una data distanza, la linea 2 aprirà la linea 3a una data distanza.

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:

2a possibilità: la linea 7 aprirà una linea 10 a una data distanza che si muove dietro il prezzo e quando il prezzo la toccherà, si attiverà un comando. la linea 8 aprirà una linea 9 a una data distanza, - la stessa azione come con 7 e 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. Дальнейшие уточнения свойств созданного объекта возможно с помощью функций по работе с графическими объектами.
File:
 
Aleksandr Klapatyuk:

Aggiunto al precedente Expert, due metodi per la linea orizzontale.

1 possibilità: la linea 1 aprirà la linea 4 a una data distanza, la linea 2 aprirà la linea 3 a una data distanza.

2 possibilità: la linea 7 aprirà una linea 10 a una data distanza che si muove dietro il prezzo e quando il prezzo la tocca, scatta un comando. la linea 8 aprirà una linea 9 a una data distanza, - la stessa azione della 7 e della 10.

provato come funziona

EURJPYM301.png

EURJPYM302

EURJPYM303

avresti potuto cambiare nelle impostazioni da quella linea - avrebbe aperto una vendita

File:
 
Aleksandr Klapatyuk:

Aggiunto al precedente Expert, due metodi per la linea orizzontale.

1 possibilità: la linea 1 aprirà la linea 4 a una data distanza, la linea 2 aprirà la linea 3 a una data distanza.

2a possibilità: la linea 7 aprirà una linea 10 a una data distanza, che si muove dietro il prezzo e quando il prezzo la tocca, scatta un comando. la linea 8 aprirà una linea 9 a una data distanza, - la stessa azione della 7 e della 10.

nella prima possibilità, le linee 4 e 3 si apriranno a una data distanza, fino all'infinito

File: