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

 
WinProject:

Obrigado!) a variável Cena=FileReadString(handle); inseri na função Separator=StringReplace(Sepa,",",","); escreve o erro "conversão implícita de número para string" -

não quer ler valor com separador "," (1.22426) como uma corda, e StringReplace não funciona. Ou estou fazendo isso errado?


Por favor, copie a parte do código como você a tem, desde o início da leitura do arquivo, especificando o tipo de variável CENA

 
Vladislav Andruschenko:

Favor copiar a parte do código como você a tem, desde o início da leitura do arquivo, especificando o tipo da variável CENA


nulo MyFunc()

{

handle=FileOpen('Data.csv',FILE_CSV|FILE_READ,';');

while(FileIsEnding(handle)!=true)

{ string cena=FileReadString(handle);

string Separ=StringReplace(cena,",",");

if(FileIsEnding(handle)==verdadeiro)

pausa;

}

FileClose(handle);

}

 
WinProject:

nulo MyFunc()

{

handle=FileOpen('Data.csv',FILE_CSV|FILE_READ,';');

while(FileIsEnding(handle)!=true)

{ string cena=FileReadString(handle);

string Separ=StringReplace(cena,",",");

if(FileIsEnding(handle)==verdadeiro)

pausa;

}

FileClose(handle);

}

Por favor, leia o que esta função retorna. Você está tentando definir o resultado. Mas esta função apenas substitui um caractere por uma corda. Você pode continuar a usar a cena com mudanças
 
Vladislav Andruschenko:
Por favor, leia o que esta função retorna. Você está tentando definir o resultado. Mas esta função apenas substitui um personagem por um personagem. Você pode continuar a usar a cena já com as mudanças
Descobri meu erro, (corda Separ=é redundante aqui) e funcionou.

Obrigado, obrigado!)

 

Ajuda, preciso tirar um retângulo da altura da vela anterior até um ponto 200p acima dela e cronometrar uma barra à frente.

Eu escrevi o código, mas não entendo porque o ponto esquerdo do retângulo não se move? E o direito desliza por trás do hai.

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   //ObjectDelete(0,"Name");
   ArraySetAsSeries(high,true);
   ObjectCreate(0,"Name",OBJ_RECTANGLE,0,TimeCurrent(),high[0],TimeCurrent()+PeriodSeconds(PERIOD_CURRENT)*2,high[0]+200*_Point);
   ObjectSetInteger(0,"Name",OBJPROP_FILL,true);
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
Roman Sharanov:

Ajuda, preciso tirar um retângulo da altura da vela anterior até um ponto 200p acima dela e cronometrar uma barra à frente.

Eu escrevi o código, mas não entendo porque o ponto esquerdo do retângulo não se move? E o direito desliza por trás do hai.


Talvez você esteja tentando criar um objeto que já esteja na tabela?


E a barra anterior é 1 e não 0.

high[0] - это ХАЙ текущего бара
 
Vladislav Andruschenko:

Talvez você esteja tentando criar um objeto que já esteja na carta? Talvez seja melhor verificar se já existem objetos na carta.


Sim e a barra anterior é 1 e não 0.


É isso mesmo, já foram fixados os índices.

Mudou o nome, olhou para a lista, nada mudou, ainda o mesmo, um ponto está pendurado em um lugar, o outro segue o hai

 
Roman Sharanov É isso mesmo, já foram fixados os índices.

Mudou o nome, olhou para a lista, nada mudou, continua o mesmo, um ponto está pendurado em um lugar, o outro segue o hai

   ObjectDelete(0,"Name");
   ObjectCreate(0,"Name",OBJ_RECTANGLE,0,
                TimeCurrent()-_Period*60,high[1],
                TimeCurrent()+PeriodSeconds(PERIOD_CURRENT)*2,high[0]+200*_Point);
   ObjectSetInteger(0,"Name",OBJPROP_FILL,true);
   return(rates_total);

Está em movimento.


 
STARIJ:
É muito simples. Você precisa definir 7 parâmetros para o cálculo do iMA. O primeiro parâmetro, o nome do símbolo, é óbvio. Como segundo parâmetro, o cronograma, defina M1. O terceiro parâmetro - o período - definido quantas vezes você precisar, quantos dias é mais de um minuto. O quarto parâmetro - shift = 0. Os dois parâmetros seguintes - o método de cálculo da média e o tipo de preço - você sabe. O último é o número da barra. Por favor, calcule o número da barra se você souber o tempo necessário. Isso é tudo! Verifique novamente, fazendo cálculos para os prazos M5 e M15. Talvez até mesmo para M30.

STARIJ, Obrigado pela ajuda, verificado, infelizmente a partida com o original é pobre, e como a TF aumenta (por exemplo, de 30 min para semanalmente) a partida diminui significativamente. Este método é melhor do que nada, mas não há muita precisão nele. Existem outras variantes?

 
Boss11:

STARIJ, Obrigado pela ajuda, verificado, infelizmente a partida com o original é pobre, e como a TF aumenta (por exemplo, de 30 min para semanalmente) a partida diminui significativamente. Este método é melhor do que nada, mas não há muita precisão nele. Existem outras variantes?

Sim. Devemos usar M1, e M5, ... - para verificar. Talvez devêssemos usar a interpolação? O MT5 tem um histórico de carrapatos. Se você me disser onde está o lucro, darei outra olhada.
Razão: