[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 442

 
sergeev:

A documentação e um livro didático MQL são como a Bíblia e um livro didático MQL.

Pense em qual escolher para ler e estudar - a documentação primária ou a interpretação do autor?

O problema é que eu já li o livro didático (5 ou 6 vezes e anotei para mim mesmo), e a própria documentação (pelo menos 3 vezes), e fiz alguns scripts e indicadores.... Essas perguntas que estou fazendo agora são uma espécie de "limpeza" dos pontos mal entendidos restantes... Isto é o que justifica minha "irritante" repetição de perguntas... Não quero mesmo deixar buracos negros...

 
7777877:
MQL é minha primeira língua em geral (exceto russo e ucraniano), portanto, infelizmente, não há como "dominar" a Documentação))

Pense nisso - MQL é uma das poucas linguagens de programação originalmente escrita por falantes nativos da língua e mentalidade russa. E não uma traduzida, como a maioria das linguagens de programação são. Portanto, compreender sua essência não é realmente difícil. Além disso, é muito, muito fácil e se adapta perfeitamente ao papel de "primeira língua". Se a documentação for muito pesada para você, você pode continuar aprendendo com um tutorial (do qual há muitos na Internet). Mas lembre-se que qualquer interpretação de qualquer coisa envolve a visão e os métodos do intérprete. Eu recomendo vivamente que você estude a documentação, você precisa conhecê-la como uma tabela de multiplicação. Você chegará lá de qualquer maneira, então por que seguir o caminho da rotunda.
 
Pacman:

Olá a todos!

Estou apenas começando a aprender MQL (por favor, não julgue de forma muito dura).

Eu tenho uma pergunta do tutorial MQL4.

Eu iniciei o programa e ele funciona.

Não entendo como o programa conta de 10 a 19, se o operador de laço"for(int i=20; i<=90; i=i+10)" conta de 20 e"for(int j=1; j<=9; j++)" de 1 a 9.

Por favor, explique.

A contagem vai de 20, pois todos os valores de array ANTES de 20 são INCLUÍDOS (conjuntos) inicializados explicitamente em linhas: Texto[1]="um"; Texto[2]="dois"; ... ; Texto[20]="vinte". O resto (21 a 29; 31 a 39; ...) são definidos usando para loops
 
E quanto aos pedidos que se fecham depois de um tempo????
 
JokerJoke:
E quanto aos pedidos que se fecham depois de um tempo????

Sim, se o tio Kolya estiver aqui....
 
borilunad:

double valHigh = iHigh(Symbol(),PERIOD_H1,1);
double valLow  = iLow(Symbol(),PERIOD_H1,1);


não funciona, prazos diferentes têm dados diferentes e você precisa da última hora:(
 
Elektronik:

não funciona, dados diferentes sobre prazos diferentes, e eu preciso deles para a última hora :(
Você já viu esta função?
int iHighest( símbolo de corda, int timeframe, int tipo, int count=WHOLE_ARRAY, int start=0) ?
 
snail09_1:
Você já examinou esta função?
int iHighest( símbolo de corda, int timeframe, int tipo, int count=WHOLE_ARRAY, int start=0) ?


TOTALMENTE:)

Obrigado

 
kostikk:


Obrigado!!!

Você conhece a função onde você pode definir o horário de negociação, ou seja, a EA só negocia das 11:00 às 19:00 depois das 19:00, fecha a posição ou coloca uma parada e não abre uma posição até a manhã seguinte 09:00

Obrigado


Seja bem-vindo! Eu não uso a função de tempo aberto. É uma opção melhor para a otimização:

extern int    stArt  = 11;
extern int    stOpen = 19;

------------------------------
int start()
{
  int h = TimeHour(TimeCurrent());

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

    if((stArt < stOpen && h >= stArt && h < stOpen) || (stArt >= stOpen && (h >= stArt || h < stOpen)))//условие входа

//для выключения действия условия поставь любое значение, одинаковое для переменных. 
//Экономит число перестановок,значит и время при оптимизации! 
Boa sorte!
 

Por favor, me diga o que eu perdi quando rediscutei o código para linhas horizontais

int start()
  {
  bool fm=false;
  int GLE=0;
  double SvojstvoUP=111,SvojstvoDOWN=111,SvojstvoAM=TimeLocal()-4*60*60,SvojstvoPM=0;
  
  fm=ObjectCreate("UP_LEVEL",OBJ_HLINE,0,Time[0],Bid+111*Point);
  if(fm==0 || fm==-1)
  fm=ObjectSet("UP_LEVEL",OBJPROP_COLOR,Green);
  if(fm==0 || fm==-1)
  fm=ObjectSet("UP_LEVEL",OBJPROP_WIDTH,5);
  if(fm==0 || fm==-1)
   
 
  SvojstvoUP=ObjectGet("UP_LEVEL",OBJPROP_PRICE1);
            if(SvojstvoUP==111)
  if(SvojstvoUP!=Bid+111*Point){
   fm=ObjectSet("UP_LEVEL",OBJPROP_PRICE1,Bid+111*Point);
  if(fm==0 || fm==-1)
  return(0);}
 
 
  fm=ObjectCreate("DOWN_LEVEL",OBJ_HLINE,0,0,Bid-111*Point);
  if(fm==0 || fm==-1)
  fm=ObjectSet("DOWN_LEVEL",OBJPROP_COLOR,Red);
  if(fm==0 || fm==-1)
  fm=ObjectSet("DOWN_LEVEL",OBJPROP_WIDTH,1);
  if(fm==0 || fm==-1)
 
  SvojstvoDOWN=ObjectGet("DOWN_LEVEL",OBJPROP_PRICE1);
            if(SvojstvoDOWN==111)
  if(SvojstvoDOWN!=Bid-111*Point){
   fm=ObjectSet("DOWN_LEVEL",OBJPROP_PRICE1,Bid-111*Point);
  if(fm==0 || fm==-1)
  return(0);}         

no código para linhas verticais.

  fm=ObjectCreate("AM_LEVEL",OBJ_VLINE,0,TimeLocal()-4*60*60,0);
  if(fm==0 || fm==-1)
  fm=ObjectSet("AM_LEVEL",OBJPROP_COLOR,Yellow);
  if(fm==0 || fm==-1)
  fm=ObjectSet("AM_LEVEL",OBJPROP_WIDTH,1);
  if(fm==0 || fm==-1)
  
 
  SvojstvoAM=ObjectGet("AM_LEVEL",OBJPROP_PRICE1);
            if(SvojstvoAM==TimeLocal()-4*60*60)
  if(SvojstvoAM!=TimeLocal()-4*60*60){
   fm=ObjectSet("AM_LEVEL",OBJPROP_PRICE1,TimeLocal()-4*60*60);
  if(fm==0 || fm==-1)
  return(0);}
 
 
  fm=ObjectCreate("PM_LEVEL",OBJ_VLINE,0,Time[0],0);
  if(fm==0 || fm==-1)
  fm=ObjectSet("PM_LEVEL",OBJPROP_COLOR,Black);
  if(fm==0 || fm==-1)
  fm=ObjectSet("PM_LEVEL",OBJPROP_WIDTH,1);
  if(fm==0 || fm==-1)
 
  SvojstvoPM=ObjectGet("PM_LEVEL",OBJPROP_PRICE1);
            if(SvojstvoPM==0)
  if(SvojstvoPM!=Time[0]){
   fm=ObjectSet("PM_LEVEL",OBJPROP_PRICE1,Time[0]);
  if(fm==0 || fm==-1)
  return(0);}         
   
  return(0);
  }

Se não houver linhas, elas são desenhadas normalmente, o erro na segunda parte quando. Quando eles começam a verificar sua presença e a reorganizar se não estão no lugar.

Razão: