Eu nem sei o que mais acrescentar... Eu basicamente dei os exemplos básicos. Este é o código. É por isso que você pode me perguntar o que não está claro.
Saudações! Igor um exemplo claro de como obter um valor . Tenho uma linha de nível_baixo_D1_baixo que encontra a barra mais próxima na história qual o valor será inferior ao nível_baixo_D1_baixo
Se eu trabalhar com Estrutura sem matriz, obtenho o mesmo resultado que no último código.
Escreva um exemplo , e se não se importar com uma descrição .
//+------------------------------------------------------------------+//| Dark_Level.mq4 |//| Copyright 2020, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2020, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"#property strict
double Low_D1_Level;
struct BarData
{
datetime time; // время начала периода double open; // цена открытия double high; // наивысшая цена за период double low; // наименьшая цена за период double close; // цена закрытия long tick_volume; // тиковый объем
};
BarData Bar_data_D1[]; // обьявляем массив структуры в памяти //+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
Low_D1_Level = iLow (_Symbol,PERIOD_D1,1); // Возвращает значение минимальной цены бара D1// Bar_data_D1.low [i]; //Минимум свечи// Bar_data_D1.low [i]= iLow (_Symbol,PERIOD_D1,1);
}
One Click Close The script allows users to easily close positions if their profit/loss reaches or exceeds a value specified in pips. Please set slippage value first. Sometimes some positions do not close due to high volatility of the market. Please set larger slippage or restart the script. The free demo version is: ...
Se o Nível_Baixo_D1_Nível é o nível do dia anterior, então o Nível_Mín_D_Nível é pesquisado a partir doNível_Baixo_D1_Nível e é igual a i=1 , ou estou enganado?
Desculpe, eu não entrei no código, pedi para ter certeza de que você estava fazendo isso de forma consciente.
Você pode me dizer o que você quer obter como resultado? Algum nível diário ou o quê? Olhando para a primeira linha, copiar constantemente um array no ArrayCopyRates e depois passar por ele não é a opção mais econômica. Você poderia encontrar uma solução mais elegante.
Peço desculpas, não me aprofundei no código, pedi para ter certeza de que você está fazendo isso conscientemente.
Você pode dizer o que quiser no final. Algum nível diário ou o quê? Observar a primeira linha, copiar constantemente a matriz para ArrayCopyRates e depois fazer um loop por ela não é a opção mais econômica. Você pode encontrar uma solução mais elegante.
Estou na bolsa há mais de 5 anos, e no momento vivo completamente ( você faz isso conscientemente ). Há um ano, quando o entendimento da negociação em bolsa já estava mais ou menos fortalecido,
Decidiu-se automatizar os seus conhecimentos no ofício, quer fazer um bom DIY.
Foi assim que o MQL4 conscientemente veio até mim, no momento o EA tem mais de 6.000 linhas.
aqui está um código de exemplo ao calcular o lote 1 ano atrás.
// Примитивно но работало //+-------------------------------------------------------------------------+// Функция расчета лота от прибыли + +//+-------------------------------------------------------------------------+// double Lots; //string lots; double FloatingLots()
{
double Lots1= 1200 ,Lots2= 2200 ,Lots3= 3200 ,Lots4= 4200 ,Lots5= 5200 ,Lots6= 6200 ,Lots7= 7200 ,Lots8= 8200 ,Lots9= 9200 ,Lots10= 10200 ;
if (AccountBalance()<=Lots1){Lots= 0.1 ;}
if (AccountBalance()>=Lots1 && AccountBalance()<=Lots2){Lots= 0.2 ;}
if (AccountBalance()>=Lots2 && AccountBalance()<=Lots3){Lots= 0.3 ;}
if (AccountBalance()>=Lots3 && AccountBalance()<=Lots4){Lots= 0.4 ;}
if (AccountBalance()>=Lots4 && AccountBalance()<=Lots5){Lots= 0.5 ;}
if (AccountBalance()>=Lots5 && AccountBalance()<=Lots6){Lots= 0.6 ;}
if (AccountBalance()>=Lots6 && AccountBalance()<=Lots7){Lots= 0.7 ;}
if (AccountBalance()>=Lots7 && AccountBalance()<=Lots8){Lots= 0.8 ;}
if (AccountBalance()>=Lots8 && AccountBalance()<=Lots9){Lots= 0.9 ;}
if (AccountBalance()>=Lots9){Lots= 1 ;}
return (Lots);
}
E aqui está a mesma função depois de meio ano
//+-------------------------------------------------------------------------+// Функция расчета лота от прибыли V 1.1 +//+-------------------------------------------------------------------------+//double Lots; // переменная для расчёта лота и вывода в кнопке double FloatingLots()
{
double S_lots = 0.1 ;
double i;
for ( i = 1000 ; i <= AccountBalance();i+= 1000 )
{
if (i > (AccountBalance())- 1000 )
{
Lots = S_lots; break ;
}
else S_lots+= 0.1 ;
}
return (S_lots);
Aqui está o motivo da criação deste tópico.
Percebi puramente por acaso e visualmente quando comecei a executar o advisor em longos períodos, se a segunda condição foi removida no ciclo, ocorreu um erro (fora do array) e a segunda condição simplesmente mascarou o erro real.
Aqui está a Função que precisa ser depurada, e é hora de estudar Estruturas, Classes.
Você me pergunta por que não funciona, e eu estou tentando entender o essencial em palavras, porque pode haver uma solução melhor para o seu problema, que é o que eu estou tentando descobrir.
Você me pergunta por que isso não funciona, e eu estou tentando entender o essencial em palavras, porque pode haver uma solução melhor para seu problema, que é o que eu estou tentando descobrir.
Sim, é assim que funciona a percepção humana. Eu também, quando estou realmente apaixonado por uma idéia, mal consigo ouvir os argumentos da outra pessoa. Ah, bem...
Háum nívelBaixo_D1_Nível_Baixo , então precisamos obter o valor do próximo nível Min_D_Nível, que será o próximo mais baixo da história e será inferior ao Nível_Baixo_D1_Nível.
Não sei como explicar melhor. Se você executar o código no testador com a visualização na minha opinião, tudo é visível.
E, em geral, se você vier ao posto, por favor, tenha a gentileza de, pelo menos, ler a essência.
Isso não tem nada a ver com a questão:
Qual é o "problema XY"?
É um erro que muitas vezes desperdiça o tempo tanto da pessoa que pede ajuda quanto das pessoas que tentam respondê-la. Também é chamado de "Problema do Martelo". Em resumo, as pessoas tendem a perguntar sobre suas tentativas fracassadas de resolver o problema, e não sobre o problema em si. Acaba indo algo parecido com isto:
Uma pessoa quer fazer X.
Ele não sabe como fazer X, mas adivinha que fazer Y pode levar ao sucesso.
Entretanto, a pessoa também não sabe como fazer Y.
Neste momento, ele decide pedir ajuda a outras pessoas.
Todos tentam ajudar a pessoa com o problema Y, se perguntando porque não está claro por que alguém precisaria de tal coisa.
Depois de muito questionamento e muito tempo perdido, finalmente fica claro que a pessoa realmente queria resolver X, e que Y não pode ajudá-lo em nada.
Eu nem sei o que mais acrescentar... Eu basicamente dei os exemplos básicos. Este é o código. É por isso que você pode me perguntar o que não está claro.
Saudações! Igor um exemplo claro de como obter um valor . Tenho uma linha de nível_baixo_D1_baixo que encontra a barra mais próxima na história qual o valor será inferior ao nível_baixo_D1_baixo
Se eu trabalhar com Estrutura sem matriz, obtenho o mesmo resultado que no último código.
Escreva um exemplo , e se não se importar com uma descrição .
Se o Nível_Baixo_D1_Nível é o nível do dia anterior, então o Nível_Mín_D_Nível é pesquisado a partir doNível_Baixo_D1_Nível e é igual a i=1 , ou estou enganado?
Desculpe, eu não entrei no código, pedi para ter certeza de que você estava fazendo isso de forma consciente.
Você pode me dizer o que você quer obter como resultado? Algum nível diário ou o quê? Olhando para a primeira linha, copiar constantemente um array no ArrayCopyRates e depois passar por ele não é a opção mais econômica. Você poderia encontrar uma solução mais elegante.
Peço desculpas, não me aprofundei no código, pedi para ter certeza de que você está fazendo isso conscientemente.
Você pode dizer o que quiser no final. Algum nível diário ou o quê? Observar a primeira linha, copiar constantemente a matriz para ArrayCopyRates e depois fazer um loop por ela não é a opção mais econômica. Você pode encontrar uma solução mais elegante.
Estou na bolsa há mais de 5 anos, e no momento vivo completamente ( você faz isso conscientemente ). Há um ano, quando o entendimento da negociação em bolsa já estava mais ou menos fortalecido,
Decidiu-se automatizar os seus conhecimentos no ofício, quer fazer um bom DIY.
Foi assim que o MQL4 conscientemente veio até mim, no momento o EA tem mais de 6.000 linhas.
aqui está um código de exemplo ao calcular o lote 1 ano atrás.
E aqui está a mesma função depois de meio ano
Aqui está o motivo da criação deste tópico.
Percebi puramente por acaso e visualmente quando comecei a executar o advisor em longos períodos, se a segunda condição foi removida no ciclo, ocorreu um erro (fora do array) e a segunda condição simplesmente mascarou o erro real.
Aqui está a Função que precisa ser depurada, e é hora de estudar Estruturas, Classes.
Não julgue estritamente por escrever código - :)
Aqui está a função de depuração.
OK, e você pode me dizer com o que você quer acabar?
Ok, você pode me dizer com o que você quer acabar?
Aqui está a versão abreviada executada no AUDUSD 2020
Por que não vai mais longe na matriz?
Você me pergunta por que não funciona, e eu estou tentando entender o essencial em palavras, porque pode haver uma solução melhor para o seu problema, que é o que eu estou tentando descobrir.
Explique o que você está tentando alcançar.Você me pergunta por que isso não funciona, e eu estou tentando entender o essencial em palavras, porque pode haver uma solução melhor para seu problema, que é o que eu estou tentando descobrir.
Explique o que você quer obter.Até agora eu vejo _so_
Até agora eu vejo _that_.
Sim, é assim que funciona a percepção humana. Eu também, quando estou realmente apaixonado por uma idéia, mal consigo ouvir os argumentos da outra pessoa. Ah, bem...
Até agora eu vejo _ so_.
Háum nívelBaixo_D1_Nível_Baixo , então precisamos obter o valor do próximo nível Min_D_Nível, que será o próximo mais baixo da história e será inferior ao Nível_Baixo_D1_Nível.
Não sei como explicar melhor. Se você executar o código no testador com a visualização na minha opinião, tudo é visível.
E, em geral, se você vier ao posto, por favor, tenha a gentileza de, pelo menos, ler a essência.
Isso não tem nada a ver com a questão:
Qual é o "problema XY"?
É um erro que muitas vezes desperdiça o tempo tanto da pessoa que pede ajuda quanto das pessoas que tentam respondê-la. Também é chamado de "Problema do Martelo". Em resumo, as pessoas tendem a perguntar sobre suas tentativas fracassadas de resolver o problema, e não sobre o problema em si. Acaba indo algo parecido com isto:
Até agora, eu vejo _so_.
Então eu acho que você ainda não encontrou seu X e Y !!!