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

 
Roman:

Porque há muitas inconsistências com as realidades atuais.
E você está tentando arranjar desculpas para essas inconsistências.
Pelo contrário, eu escrevi que um tique não equivale a um ponto!
É o seu próprio ponto interno, inventado.
Tendo em vista que o Point costumava corresponder exatamente a um ponto, quando havia apenas quatro dígitos.
Mas após a introdução do quinto dígito, você começou a inventar nomes com suas desculpas.

Não, não é. Você sugeriu mostrar a distância em tamanhos de carrapatos em vez de pontos.

Isso é um absurdo. Distância é distância. E o tamanho do tick é o passo pelo qual o preço se move minimamente de uma vez.

É por isso que você não está pedindo a distância do ponto A ao ponto B, mas o número de passos necessários para mover essa distância.

Estou lhe dizendo - está tudo confuso...

Sua realidade é um pouco garganta cortante. Ele não contém metade dos conceitos aceitos. Há algo de sua cabeça.

 
Roman:

Provavelmente porque você tem que devolver o valor de retorno da função.

Obrigado pela resposta, mas ainda não há solução para o problema... Eu preciso do parâmetro de função "str" para retornar ao MQL seu estado alterado

extern "C" __declspec(dllexport) wchar_t* __stdcall ToString(wchar_t* &str)
{
        str = L"-- Я изменил параметр str :) --"; // Вот это я хочу получить!
        return L"--- Привет! ---";
}

Na MQL4, neste momento:

#import  "Win32Project1.dll"
   string ToString(string &str);
#import

Bem e a função chama-se a si mesma:

string str = "";
Print("-> Метод: " + ToString( str ));
Print("-> Параметр: " + str);

O resultado é este:

Ou seja, o valor é passado como parâmetro, mas não é correto... Como posso resolver este problema? :)

 
Vadim Lin:

Obrigado pela resposta, mas ainda não há solução para o problema... Eu preciso do parâmetro de função "str" para retornar ao MQL seu estado alterado

Na MQL4, neste momento:

Bem e a função chama-se a si mesma:

O resultado é este:

Ou seja, o valor é passado como parâmetro, mas não é correto... Como posso resolver este problema? :)

O cavalheiro descansa por 24 horas para o corrico.
 
Artyom Trishkin:

Se o terminal cair, ele terá que ser reiniciado. O indicador terá que ser colocado no gráfico novamente, ou para executar o Expert Advisor, que usa os dados deste indicador (então o próprio Expert Advisor carregará este indicador ao acessá-lo). Neste caso (e mesmo durante o reinício normal do terminal com um carregamento automático dos programas instalados na carta), o indicador desenhará de novo todas as suas linhas - não há necessidade de salvar nada. Estas linhas podem ser lidas novamente mais tarde. Além disso, eles têm que ser lidos de qualquer maneira.

Para a EA monitorar apenas as linhas criadas pelo indicador, basta olhar os nomes das linhas criadas pelo indicador e tentar encontrar o substrato de repetição em nomes - o mesmo para todas as linhas. Procure as linhas necessárias por estes substratos.

É simples - basta olhar para a lista de objetos quando o indicador está funcionando.

Estamos divagando sobre o assunto! Quanto mais discutimos, mais fora de tópico fica! :)

O homem só precisava de conseguir o EVENTO, quando o preço cruzasse a linha.

Em seguida, comecei a especular por que meu exemplo era "problemático". Embora de fato resolva o problema, o que, em princípio, foi definido. A seguir - a imaginação do autor, eu ajudei o máximo que pude))


Se estiver fora de tópico... e sobrecarregar o terminal, as linhas não vão a lugar algum, e há uma chance de que fiquem em seus lugares. Se eles forem renomeados, ou marcados - você pode usar a lógica convencional para descobrir que estas linhas já foram acionadas em algum momento, e devem ser ignoradas. Mas essa não é a tarefa em mãos)) Além disso, suponha que o indicador refaz as linhas, e daí? Como você vai determinar que alguns deles já acionaram?))

Se não há nada na tabela, exceto linhas que precisam ser monitoradas (como diz o autor), então elas nem mesmo precisam ser filtradas pelo nome.

Mas é claro, a idéia não é traçar linhas, mas salvar todos os níveis em um arquivo e verificar quais deles já funcionaram. E sobrecarregar o terminal, você se lembrará deles sem nomes de objetos)).

 
Roman:

Onde diabos está a lógica nos caras.
Por este motivo, é um erro grave e, se feito intencionalmente, é um desvio))

Petya: E qual é a lógica, Vasily Ivanovich?

V.I.: Bem, é simples, olhe, você tem fósforos?

Petya: Eu quero!

V.I.: Então você fuma, e se você fuma, você bebe, e se você bebe, você sai com garotas, entendeu?

Petya: Sim, é simples!

Petyka para um homem do Exército Vermelho que passa: você tem fósforos?

Homem do Exército Vermelho: Não.

Petya: Então você é um "bicha".



LOGIC, bem, é tão estranho, e sob LOGIC, você não tem que ajustar suas expectativas

Se um desenvolvedor construiu um novo tipo de dados ENUM_TIMEFRAMES, ele fará uso dele em outras partes do programa - essa é a lógica.


SZS: Claro, pode-se argumentar que o MT4 foi projetado por pessoas que sabiam o que era necessário para o comércio, enquanto o "outro terminal" foi escrito por um grupo de alienígenas ..... Mas iremos além do formato de comunicação deste fórum, por isso não devemos falar de sabotagem - usamos o que nos foi dado, o que nos falta - nós mesmos o escrevemos, graças ao desempenho do terminal é mais do que suficiente

Assim

 
Igor Makanu:


LOGIC, bem, é tão estranho, e sob LOGIC, você não tem que ajustar suas expectativas

Se o desenvolvedor construiu um novo tipo de dados ENUM_TIMEFRAMES, isso significa que ele construiu um novo uso desse tipo em outras partes do programa - essa é a lógica


SZS: É claro, pode-se argumentar que o MT4 foi projetado por pessoas que sabiam o que era necessário para o comércio, enquanto o "outro terminal" foi escrito por um grupo de alienígenas ..... Mas iremos além do formato de comunicação deste fórum, por isso não devemos falar de sabotagem - usamos o que nos foi dado, o que nos falta - nós mesmos o escrevemos, graças ao desempenho do terminal é mais do que suficiente

como este

ainda bem que eles não procuram a lógica na sintaxe com tanta frequência)))) A lógica na velocidade é vista no caso de prazos, mas posso estar errado)

 
Igor Makanu:

Petya: E qual é a lógica, Vasily Ivanovich?

Já ouvi outra versão:

Anka come arenque? Depois ela bebe água...

A conclusão lógica é que ela... pode.

 
Vadim Lin:



MAS, e se a Proposta, por alguma razão, cruzasse a linha, e não fosse igual ao preço da linha, então o que...? Forneça então pelo menos uma variável, na qual o tick anterior esteja armazenado, e se houvesse um novo tick cruzando sua linha - então faça alguma ação... Mas, neste caso, não se esqueça de providenciar uma travessia "permissível", pois se o mercado se abrir com um Gap grande, ou apenas um grande salto no preço, você abrirá em muitas linhas de uma só vez e provavelmente não estará lá onde você quer. Se a travessia for mais do que aceitável, você só receberá uma mensagem...

Obrigado pela ajuda, a ação ocorre quando você define as linhas manualmente e atravessa estas linhas, mas por alguma razão a EA não vê as linhas indicadoras e não executa a ação que eu especifiquei. Todas as linhas indicadoras têm a seguinte frase no nome @Line (mais a numeração "semana-4" que muda) - isso pode ser usado de alguma forma?

//+------------------------------------------------------------------+
void OnTick()
  {
//---
        iCustom(Symbol(), 0, "ITS-Level Gun", 0, 0);  
 
        for(int i = ObjectsTotal() - 1; i >=0; i--) {

// все что не горизонтальные линии - игнорируем

        if(ObjectType(ObjectName(i)) != OBJ_HLINE) continue; 

        double PriceLine = NormalizeDouble(ObjectGet(ObjectName(i), OBJPROP_PRICE1), Digits());
        
// измените условие Bid == PriceLine
        
             if(Bid == PriceLine)
             {
  {OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);}
        } 
  
  }
  }
//+------------------------------------------------------------------+
Arquivos anexados:
 
Erradamente escrito: o nome das linhas em si não muda, mas todas têm a frase comum@Line em seu nome
 
Fib0 RU:
Erradamente escrito: o nome das linhas em si não muda, mas todas têm a frase comum@Line em seu nome
if(Bid == PriceLine)

Não vai embora.

leia

Особенности работы с числами типа double в MQL4
Особенности работы с числами типа double в MQL4
  • www.mql5.com
При программировании на языке MQL4 у новичков порой возникают ситуации, когда результаты некоторых математических вычислений отличаются от ожидаемых. При этом программа компилируется и работает, но не так, как нужно. Они начинают разбираться в программе, находят новые "ошибки" в языке, реализации функций и т.п. В большинстве случаев последующий...