Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1676

 
Alexey Viktorov #:

Se você precisar fechar 0,3 e depois 0,7 do 1º lote, é mais fácil abrir duas ordens com decolagens diferentes.

Isto não é conveniente, no meu sistema de escalpe você tem que seguir ativamente as negociações. + pode haver impulsos, e abrir de diferentes janelas ou mudar muito em segundos é uma atividade assim :) É mais fácil abrir 1 lote, e depois consertar parcialmente. Mas não fixar manualmente, mas por determinados níveis de preço (preço). Se você trabalha com 3 Takei, você terá que tocar piano ao abrir negócios.
 
TranceFM #:
Não é conveniente, em meu sistema de couro cabeludo você tem que seguir ativamente as negociações de forma tática. + pode haver impulsos, e abrir de diferentes janelas ou mudar de lote em segundos é uma atividade desse tipo :) É mais fácil abrir 1 lote, e depois consertar parcialmente. Mas não fixar manualmente, mas por determinados níveis de preço (preço). Se você trabalha com 3 Takei, você terá que tocar piano ao abrir o comércio.
Então encomende um consultor especializado
 
MakarFX #:
Em seguida, encomende um consultor.

Então não existem prontas? Certo. (risos) Quanto custaria uma coruja como esta?

 

No roteiro.

#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//обьявим класс
class Сleaner
 {
 public:     

         Сleaner() { Alert("Конструктор");
          }
           ~Сleaner() { Alert("Деструктор"); }
  void come(int &array[],int &re[]){ 
        int AS=ArraySize(array);
        int n=0;    
  for(int i=0; i<AS; i++) {
    if(ArraySearch(re, array[i])==-1) {
      n++;
      ArrayResize(re,n);
      re[n-1]=array[i];
     }
   }
 }
 void sleep() { Sleep(1000); }
private:
          int ArraySearch(int& m[], int e)
       {
        for(int i=0; i<ArraySize(m); i++) {
        if(m[i]==e) return(i);
//        Print(" e =",e,", ArraySize(m) =",ArraySize(m)," ,m[i] =",m[i]," ,i =",i );
       }
  return(-1);
    }
 };
Сleaner pi;
int arr[]= {6,4,6,7,9,65,66,2,2,9,7,7};
int res[];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
  
  pi.come(arr,res);
  pi.sleep();
  for(int z=0;z<ArraySize(res);z++)
  Print(res[z]);
   
  }
//+------------------------------------------------------------------+

funciona corretamente.

2021.10.14 17:24:29.321 Eye_12 GBPUSD,M5: Alerta: Destruidor

2021.10.14 17:24:29.321 Eye_12 GBPUSD,M5: Uninit reason 0

2021.10.14 17:24:29.321 Eye_12 GBPUSD,M5: 2

2021.10.14 17:24:29.321 Eye_12 GBPUSD,M5: 66

2021.10.14 17:24:29.321 Eye_12 GBPUSD,M5: 65

2021.10.14 17:24:29.321 Eye_12 GBPUSD,M5: 9

2021.10.14 17:24:29.321 Eye_12 GBPUSD,M5: 7

2021.10.14 17:24:29.321 Eye_12 GBPUSD,M5: 4

2021.10.14 17:24:29.321 Eye_12 GBPUSD,M5: 6

2021.10.14 17:24:28.209 Eye_12 GBPUSD,M5: inicializado

2021.10.14 17:24:28.209 Eye_12 GBPUSD,M5: Alerta: Construtor

As repetições são removidas da matriz. Em virtude disso, se for um array.

int arr[]= {6,4,6,7,9,65,66,2,2,9,7,7};

é dinâmico e aumenta, também funciona corretamente, mas se diminui, começa a mentir.

 

Não sei como reproduzi fielmente

#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//обьявим класс
class Сleaner
 {
 public:     

         Сleaner() { Alert("Конструктор");
          }
           ~Сleaner() { Alert("Деструктор"); }
  void come(int &array[],int &re[]){ 
        int AS=ArraySize(array);
        int n=0;    
  for(int i=0; i<AS; i++) {
    if(ArraySearch(re, array[i])==-1) {
      n++;
      ArrayResize(re,n);
      re[n-1]=array[i];
     }
   }
 }
 void sleep() { Sleep(1000); }
private:
          int ArraySearch(int& m[], int e)
       {
        for(int i=0; i<ArraySize(m); i++) {
        if(m[i]==e) return(i);
//        Print(" e =",e,", ArraySize(m) =",ArraySize(m)," ,m[i] =",m[i]," ,i =",i );
       }
  return(-1);
    }
 };
Сleaner pi;
int arr[]= {6,6,2};
int res[];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {

   arr[0]= 6;
   arr[1]= 6;

  pi.come(arr,res);
//  pi.sleep();
  for(int z=0;z<ArraySize(res);z++)
  Print(res[z]);
   
  }
//+------------------------------------------------------------------+

mas esse é exatamente o resultado na coruja

2021.10.14 21:11:34.802 Oko_12 GBPUSD,M5: Alerta: Destruidor

2021.10.14 21:11:34.802 Eye_12 GBPUSD,M5: uninit reason 0

2021.10.14 21:11:34.523 Eye_12 GBPUSD,M5: 2

2021.10.14 21:11:34.523 Eye_12 GBPUSD,M5: 6

2021.10.14 21:11:34.523 Eye_12 GBPUSD,M5: inicializado

2021.10.14 21:11:34.523 Eye_12 GBPUSD,M5: Alerta: Construtor


 
Olá a todos, Sr. desenvolvedor experiente, você poderia aconselhar um iniciante? Estou interessado no processo de embalagem do MQL4 Expert Advisor em um arquivo ex4 para envio ao Mercado se eu tiver um indicador personalizado conectado através do iCustom (e o próprio indicador também está conectado a outro indicador, e este último por sua vez é uma biblioteca). Será que existe uma maneira fácil de mover todas essas coisas para um arquivo ou terei que integrar tudo diretamente no código EA?
 
Aleksandr Kononov um indicador personalizado conectado através do iCustom (e o próprio indicador também está conectado a outro indicador, e este último por sua vez está conectado à biblioteca). Será que existe uma maneira fácil de mover todas essas coisas para um arquivo ou terei que integrar tudo diretamente no código EA?

têm que integrar tudo

 
Aleksandr Kononov indicador personalizado conectado através do iCustom (o próprio indicador também está conectado a outro indicador, e este último por sua vez está conectado à biblioteca). Será que existe uma maneira fácil de mover todas essas coisas para um arquivo ou terei que integrar tudo diretamente no código EA?

Conecte-se através de um recurso

 
Vitaly Muzichenko #:

Conecte-se através de um recurso

Obrigado por reading🤜🤛
 
ENUM_POSITION_TYPE type = PositionGetInteger(POSITION_TYPE);
Por que o compilador dá o aviso implícito de conversão enumerativa?
Документация по MQL5: Торговые функции / PositionGetInteger
Документация по MQL5: Торговые функции / PositionGetInteger
  • www.mql5.com
PositionGetInteger - Торговые функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Razão: