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

 
Igor Makanu:

Duvido que eu possa explicar, se é isso que você está perguntando

objeto é ... digamos uma variável do tipo classe

em sua seção de código é classe CProgram

em algum lugar em seu código deve dizer

e você precisará ligar para

Você é DEUS!!! Eu o entendi e tudo funcionou)
 

Você pode me dizer o que isso significa?

valor de retorno de'OrderSend' deve ser verificado TestLibrary.mq4 64 6

 
MakarFX:

Você pode me dizer o que isso significa?

valor de retorno de 'OrderSend' deve ser verificado TestLibrary.mq4 64 6

O resultado do OrderSend deve ser verificado. :-)

 
Maxim Kuznetsov:

EncomendarEnviar resultado deve ser verificado. :-)

Eu sei inglês))))

como verificá-lo?

 
MakarFX:

Eu sei inglês))))

Como você verifica isso?

result=SomeOperation(....)

if (result!=ok) {

Print("Error");

}

 
Maxim Kuznetsov:

result=SomeOperation(....)

if (result!=ok) {

Print("Error");

}

Obrigado
 
//+------------------------------------------------------------------+
//| TEST_V01.mq4 |
//| Copyright 2019, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#direitos autorais "Copyright 2019, MetaQuotes Software Corp."
#link da propriedade "https://www.mql5.com"
#propriedade versão "1.00"
#propriedade rigorosa
#define MAGICMA 20131111
//--- Entradas
input int Risco = 1;
entrada no Max_Risk = 8;
input int SL = 100;
//+------------------------------------------------------------------+
//| Função de inicialização do especialista |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEED);
}
//+------------------------------------------------------------------+
//| Função de desinicialização especializada |
//+------------------------------------------------------------------+
nulo OnDeinit(const int razão)
{
//---
}
//+------------------------------------------------------------------+
//| Função de carrapato de especialista |
//+------------------------------------------------------------------+
nulo OnTick()
{
if(OrdensTotal()==0)
if(OrderSend(Symbol(), OP_BUY, Lot_Calculate(Symbol(), Risk, Max_Risk, SL), Ask, 30, NormalizeDouble(Ask - SL*Point, Digits), NormalizeDouble(Ask + SL*Point, Digits),",MAGICMA,0,Blue)==-1)
Imprimir("Erro: ",GetLastError()));
}
//+------------------------------------------------------------------+
//-----------------------------------------------------------------
// Lote_Calculado |
//-----------------------------------------------------------------
double Lot_Calculate(string _symbol, int _risk, int _m_risk, int _pips)
{
_m_risco = Max_Risco;
_pips +=20;
minlot duplo = MarketInfo(_símbolo,MODE_MINLOT);
double maxlot = MarketInfo(_símbolo,MODE_MAXLOT);
double steplot = MarketInfo(_símbolo,MODE_LOTSTEP);
duplo dinheiro_risco = NormalizeDuplo(AccountEquity()*_risco/100,2);
duplo calk_pip_cost = NormalizeDouble(money_risk/_pips,2); // custo por ponto
double lot_pip_cost = MarketInfo(_symbol,MODE_TICKVALUE); // o custo de um pip a uma mudança de preço por volume de um lote padrão
// while(!MathIsValidNumber(lot_pip_cost || lot_pip_cost ==0)
//{
// lote_pip_cost = MarketInfo(_símbolo,MODE_TICKVALUE);
//}
lote duplo = calk_pip_cost/lot_pip_cost;
//-------------------------------------------------------------
duplo dinheiro_m_risco = NormalizeDuplo(AccountEquity()*2*_risco/100,2); // Eu também dobro o risco
duplo _m_calk_pip_cost = NormalizeDouble(money_m_risk/_pips,2); // cálculo do valor de um ponto após dobrar
duplo lote_m = _m_calk_pip_cost/lot_pip_cost; // cálculo do lote após a duplicação
if(lote <= minlot) lote = minlot;
senão se(lote >= maxlot) lote = maxlot;
senão se(lote > minlot && lote < maxlot)
{
int k = int((lote - minlot)/steplot);
lote = NormalizeDuplo(minlot+k*steplot,2);
}
retorno(lote);
// ------------------------------------------------------
{
if(lot_m <= minlot) lot_m = minlot; // a partir desta linha, meu eu
senão se(lote_m >= maxlot) lote_m = maxlot;
else if(lot_m > minlot && lot_m < maxlot)
{
int k = int((lote - minlot)/steplot);
lote_m = NormalizeDuplo(minlot+k*steplot,2);
}
return(lot_m);
if(OrderProfit()>0) lote..;
if(OrderProfit()<0) lot_m++;
}
if(_m_risk == Max_Risk) lot_m = lot; // você não pode entender nada aqui
retorno(0);

}


Há dois dias tenho lutado contra isso. Não posso escrever a função que recalcula o risco.

Se uma negociação for fechada pela TP, o risco permanecerá o mesmo.

Se o risco é fechado pelo SL, o risco é aumentado em 2 vezes e assim por diante, até o valor prescrito nas variáveis de entrada do Expert Advisor, digamos Max_Risk = 8;

e, em seguida, redefinido para o risco inicial Risco = 1;

Bem, se depois de dobrar, o comércio for fechado na TR, voltamos novamente ao Risco inicial = 1;

Você pode ajudar?

Agradecemos antecipadamente.

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. и снова dll и маркет День добрый! Правило №1 dll на...
 
Não é nada disso.
 

Boa tarde!

Os profissionais, por favor, ajudem. Eu não consigo resolver um problema. Aqui está o código:


datatime some_time=TimeCurrent();

int start()

{

soma dupla;

Duplo razn;

int k=iBarShift(",PERÍODO_M5,some_time);

duplo VAL0=MathAbs(iATR(NULL,0,1,1,1))/Point;

duplo VAL1=MathAbs(iATR(NULL,0,1,0))/Ponto;

se (VAL1>VAL0)

{

razn =MathAbs((iATR(NULL,0,1,0))-(iATR(NULL,0,1,1))/Point;

for(int i = k; i >= 1; i--)

{

summ=summ+razn;

}

Comentário ("Períodos usados: ",k,"\n,

"ATR anterior: "+VAL0+"\n",

"Corrente ATR: ",VAL1,"\n",

"Diferença ATR: ",razn,"\n",

"Diferença ATR:",summ,"\n");

}

retorno(0);

}

A idéia é a seguinte: o Expert Advisor conta a diferença entre o valor ATR atual e o anterior. Mas somente com o aumento da ATR.

Esta diferença é exibida na variável "razn". Eu preciso que o valor da variável "razn" seja adicionado/cumulado à variável "summ" a cada chegada de uma nova barra.

Na versão atual, o acúmulo de "soma" não funciona corretamente.

Suspeito que se trata de loops.


Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Периоды графиков
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Периоды графиков
  • www.mql5.com
Все предопределенные периоды графиков имеют уникальные идентификаторы. Идентификатор PERIOD_CURRENT означает текущий период графика, на котором запущена mql5-программа.
 
Boa tarde para os membros do fórum. Não consigo encontrar nenhuma informação. Existe alguma ferramenta que automaticamente desenha linhas (não horizontais) de baixo e alto até um certo nível de ponto? Em outras palavras, você define o baixo ou alto e desenha a linha para o castiçal que fixa a distância em pips do alto ou baixo? Descobri que o indicador Fractal faz determinação baixa e alta. Mas não consegui encontrar tal complemento que me permitisse traçar uma linha até o ponto de mudança de preço em um certo número de pontos.