[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 224

 

Por que as ordens não estão abrindo!

Por favor, diga-me por que este código não funciona.

Escolhi especificamente um período do gráfico em 2000 (quando o quinto sinal era 0 em todos os lugares) no qual há uma vela aberta a um preço que ocorre entre os valores da matriz.

De acordo com minha idéia - na abertura deles deve haver uma ordem - mas isso não acontece ......P O M U ????


int start()



{

 double Price=iOpen (Symbol (),0,0);        
 double SL=NormalizeDouble (Price-3000*Point, Digits);         
 double TP=NormalizeDouble (Price+100*Point, Digits);
 
 double massiv [4]={0.85370,0.85690,    0.85970 ,0.86170};//объявление и инициализация массива


 double value =  Bid ;// параметру value функции ArrayBsearch присваивается значение текущей цены
 int S = ArrayBsearch(  massiv[4],  value, WHOLE_ARRAY,  0, MODE_ASCEND); //функция ищет самое близкое к текущей цене значение
 if (Bid == massiv[S])//если текущая цена равна значению возвращенному  функцией .
 if (Bid==Price  )// и данная цена есть цена открытия нового бара
 OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123 );//открыть ордер       
}
 
solnce600:

Existem 100 valores com vírgula após o primeiro caractere (ou seja, preço)

Destacando uma linha

Home - encontrar e substituir

Mudando todas as vírgulas para pontos - bem sucedido.

Agora eu preciso colocar vírgulas entre os valores

Agora faça o seguinte: File - Save as - selecione o tipo de arquivo CSV (delimitadores - vírgulas). Economize. Como saída temos um arquivo de texto do formato necessário...

 
solnce600:

Por que as ordens não estão abrindo!

Por favor, diga-me por que este código não funciona.

Escolhi especificamente um período do gráfico em 2000 (quando o quinto sinal era 0 em todos os lugares) no qual há uma vela aberta a um preço que ocorre entre os valores da matriz.

Em minha idéia - na ordem de abertura deve funcionar - mas não acontece ......P O M U????



int S = ArrayBsearch(  massiv,  value, WHOLE_ARRAY,  0, MODE_ASCEND); //функция ищет самое близкое к текущей цене значение

Massiv[4] significa o 4º elemento da matriz massiv, preciso passar uma matriz para a função, para fazer uma busca...

 
alsu:

Agora: File - Save as - selecione o tipo de arquivo CSV (delimitadores por vírgulas). Economize. Temos em uma saída um arquivo de texto com o formato necessário...



Muito obrigado. Poderia me dizer por que minha função não funciona (post acima)?

Muito obrigado. Se eu aprender a programar...... será por causa de você.....!

 
solnce600:

Por que as ordens não estão abrindo!

Por favor, diga-me por que este código não funciona.

Escolhi especificamente um período do gráfico em 2000 (quando o quinto sinal era 0 em todos os lugares) no qual há uma vela aberta a um preço que ocorre entre os valores da matriz.

Em minha mente - em sua ordem de abertura deve funcionar - mas isso não acontece ......P O M U ????


Também seria bom se, ao comparar números duplos, pudéssemos escrever

 if (Bid == massiv[S])

assim:

 if (NormalizeDouble (Bid-massiv[S],Digits)==0)
 
alsu:

massiv[4] refere-se ao 4º elemento da matriz massiv, e você precisa passar a própria matriz para a função de busca...

Entendi. Muito obrigado.
 
solnce600:

Por que as ordens não estão abrindo!

Por favor, diga-me por que este código não funciona.

Escolhi especificamente um período do gráfico em 2000 (quando o quinto sinal era 0 em todos os lugares) no qual há uma vela aberta a um preço que ocorre entre os valores da matriz.

Em minha mente - em sua ordem de abertura deve funcionar - mas isso não acontece ......P O M U ????

Já é hora de passar para o método "adulto"!!! - Experimente com seu código para obter resultados.

Dica: acostume-se a comparar variáveis através da normalização de suas diferenças:

    double ld_Delta = 10. * Point;
    if (NormalizeDouble (MathAbs (Bid - Price), Digits) <= ld_Delta)// и данная цена есть цена открытия нового бара
    {OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123);}//открыть ордер       

e para a experiência que mencionei, "brincar" com o ld_Delta.

 
solnce600:

Muito obrigado. Você poderia me dizer por que minha função não funciona (post acima)?

Muito obrigado. Se eu aprender a programar......, será graças a você.....!


Se você aprender, será por causa de sua diligência e trabalho árduo. Meu papel é muito modesto, e objetivos egoístas (ajudar você, treinar sua própria capacidade de encontrar rapidamente bugs e erros, o que reduz seu próprio tempo gasto em programação e, ao mesmo tempo, mantém meu cérebro tonificado. Além disso, e se alguma idéia valiosa passar por aqui? Vou roubar:))))
 
incluir
alsu:

Se você aprender, é graças à sua diligência e trabalho duro. Meu papel é muito modesto, e tenho como objetivo o auto-serviço (ajudar você, treinar sua própria capacidade de encontrar rapidamente bugs e erros, o que reduz seu próprio tempo gasto em programação e, ao mesmo tempo, mantém meu cérebro tonificado. Além disso, e se alguma idéia valiosa passar por aqui? Vou roubar:))))

Pode levar muito tempo para encontrar a resposta a uma pergunta por conta própria (porque você não sabe qual o caminho a ser seguido).

Alguma outra dica?

Quero declarar e inicializar um array em um arquivo de inclusão.

Chamado de feiticeiro.

Escolha - Funções Bibliotek.

Atribuiu um nome.

Removemos tudo e declaramos e inicializamos a matriz.

Salvei o arquivo na pasta include com a extensão mq4 ao invés de mqh.

Eu inseri uma linha para chamar o arquivo e especifiquei a extensão mqh no código.

Mas o compilador dá um erro

UYTR.mqh' - não pode abrir o arquivo do programa C:\Program Files\Alpari NZ MT4(2)\experts\hhhhhh.mq4 (12, 2)

int start()



{

 double Price=iOpen (Symbol (),0,0);        
 double SL=NormalizeDouble (Price-3000*Point, Digits);         
 double TP=NormalizeDouble (Price+100*Point, Digits);
 
 #include <UYTR.mqh> 


 double value =  Bid ;// параметру value функции ArrayBsearch присваивается значение текущей цены
 int S = ArrayBsearch(  massiv,  value, WHOLE_ARRAY,  0, MODE_ASCEND); //функция ищет самое близкое к текущей цене значение
 if (Bid == massiv[S])//если текущая цена равна значению возвращенному  функцией .
 if (Bid==Price  )// и данная цена есть цена открытия нового бара
 OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123 );//открыть ордер       
}

Provavelmente, o assunto é extensões diferentes entre o arquivo na chamada de código e o arquivo na pasta include.

Por favor, me aconselhem o que fazer nesta situação.

Obrigado.

 
solnce600:
incluir

Pode levar muito tempo para encontrar a resposta a uma pergunta por conta própria (porque você não sabe qual o caminho a ser seguido).

Alguma outra dica?

Quero declarar e inicializar um array em um arquivo de inclusão.

Chamado de feiticeiro.

Escolha - Funções Bibliotek.

Atribuiu um nome.

Eu limpei tudo e declarei e inicializei a matriz.

Salvei o arquivo na pasta include com a extensão mq4 ao invés de mqh.

Eu inseri uma linha para chamar o arquivo e especifiquei a extensão mqh no código.

Mas o compilador continua a colidir.

UYTR.mqh' - não pode abrir o arquivo do programa C:\Program Files\Alpari NZ MT4(2)\experts\hhhhhh.mq4 (12, 2)

Provavelmente a diferença em extensões entre o arquivo em chamada de código e o arquivo em pasta incluída.

Por favor, informe o que fazer nesta situação.

Obrigado.


Se você estiver usando o assistente, você pode criar diretamente um arquivo include, que será salvo com extensão mqh em pasta include. Depois disso, você pode adicioná-lo em qualquer programa através de #include <>.


isto é
não selecionar - bibliotek de funções,
um arquivo de cabeçalho MQH