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

 
Tretyakov Rostyslav #:

O que não existe?

Do tipo mostrado na foto de Andrei.

 
Andrey Sokolov #:

Primeiro o fiz para 4, mas agora é para 5, e há o mesmo erro, nenhuma função na dll


Andrei, preste atenção a estas palavras na documentação

Не рекомендуется использовать полностью квалифицированное имя загружаемого модуля вида Drive:\Directory\FileName.Ext. 
Библиотеки MQL4 загружаются из папки terminal_dir\MQL4\Libraries. 
Если библиотека не была найдена, то производится попытка загрузить библиотеку из папки terminal_dir\experts.

está escrito em documentação mql5 também. Consequentemente, a .dll deve estar na pasta Bibliotecas. Não é?

Документация по MQL5: Программы MQL5 / Вызов импортируемых функций
Документация по MQL5: Программы MQL5 / Вызов импортируемых функций
  • www.mql5.com
Вызов импортируемых функций - Программы MQL5 - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Andrey Sokolov #:

Ainda não consegui importar as funções, descrevi o problema no primeiro post da página anterior.

Estou tentando fazer isso de uma maneira diferente, como na ajuda

https://www.mql5.com/ru/docs/basis/preprosessor/import

Ainda não consigo decidir se o estou fazendo de forma incorreta pelo exemplo acima ou se o exemplo está errado.

Vamos começar do início. Para que serve a biblioteca que você está criando? Deve estar sob .Net, está indicado nos documentos, a propósito, e funciona corretamente sob ele. Sob .Core e UWP você pode tentar, eu sou preguiçoso demais para tentar eu mesmo, me diga depois.


 
Alexey Viktorov #:

Andrei, preste atenção a estas palavras na documentação

também está escrito na documentação mql5. Consequentemente, a .dll deve estar na pasta Bibliotecas. Não é?

Eu movi e especifiquei #importar "TestLib.dll", o erro é o mesmo. O arquivo dll em si é encontrado sem isto.

 
Vladimir Simakov #:

Vamos começar pelo início. Para que você está criando a biblioteca? A propósito, deve estar em .Net, que está listado nos documentos, e funciona exatamente abaixo dele. Sob .Core e UWP você pode tentar, preguiçoso, me dizer mais tarde.


Sim, sob .Net

 
Andrey Sokolov #:

Sim, sob .Net.

O método é estático?

 

feliz ano novo a todos!

Obrigado a todos que me ajudaram este ano com conselhos e códigos)

Agora estou procurando uma função para definir o intervalo de tempo no trabalho do robô.

O problema é este:

robô com um comércio Martin Comprar/vender em um comércio (close take/stop)

se o tamanho do lote exceder o especificado nos parâmetros do Expert Advisor, então a abertura da próxima negociação deve ser adiada por n horas/dia.

quais funções são usadas para resolver este problema?

por onde começar?

talvez alguém tenha um exemplo pronto?

 
законопослушный гражданин #:

Agora estou procurando uma função para definir o intervalo de tempo no trabalho do robô.

Feliz Ano Novo também para você. O que você mesmo fez que não está funcionando?

 
Vladimir Simakov #:

O método é estático?

Sim. Aqui eu o tornei o mais simples possível, liguei-o ao aplicativo, ele funciona lá.

 
Andrey Sokolov #:

Feliz Ano Novo também para você. O que você mesmo fez que não está funcionando?

Tenho um tipster montado e trabalhando.

A questão é se devemos parar ou suspender. Comecei agora mesmo a cavar nesta direção.

Meu entendimento é o seguinte:

int OnInit()
  {
Start          = TimeCurrent();
MaxMartinLot   = Lot*MathPow(1.4,OrdersClose);
MaxMartinLot2  = Lot*MathPow(K_Martin2,OrdersClose2);

O Expert Advisor começa a qualquer momento.

além disso:

void OnTick()
  {
// Получим значение индикатора
   dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.

// Если нет открытых ордеров, то входим в условие
      if(CountOrders()==0)
     {
// Если появился сигнал на покупку, то откроем ордер на покупку
      if(bSignalBuy() == true)
         vOrderOpenBuy();

// Если появился сигнал на продажу, то откроем ордер на продажу
      if(bSignalSell() == true)
         vOrderOpenSell();
     }

acontece que, assim queCountOrders()==0&& (OrderLots()>=Lotcontrol)- "o lote ajustado foi alcançado".

preciso parar / parar de enviar o sinalbSignalBuy/bSignalSellpor N horas/dia

acontece que eu preciso compararo TimeCurrent() com algum parâmetro, como o TimeControl (o nome não importa)

e se TimeCurrent()>=TimeControl- então bSignalBuy/bSignalSell vai novamente.

Já perguntei sobre (Dormir) que me disseram que não é recomendado parar o processo.

A questão não é o que não posso fazer, mas estou pensando corretamente e que função devo usar para descrever o TimeControl?