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

 
Aleksei Beliakov:

Por que é a última linha sem uma barra, e é possível devolver um valor de uma macro

isto é sintaxe de substituição macro, colagem de cordas

aqui está um exemplo de como devolver um valorhttps://www.mql5.com/ru/forum/318246/page10#comment_12652228

 
Por favor, alguém pode me ajudar?
 
jaffer wilson:
Por favor, alguém pode me ajudar?
em vez de letras - fazer perguntas. Quem quer que esteja no ar irá considerar e ajudar com a substância do fórum.
 
se (MA5>MA20)
{
Sinal=1;
}

if(Sinal>Nível de comércio) // Nível de comércio está ajustado a 0.
{
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-SL*Point,Bid+TP*Point, "Optim",16384,0,Blue);
}



Você pode me dizer por que esta lógica não funciona? (mql4)
Os negócios não se abrem

(tudo mais, variáveis, tudo é descrito - modelo padrão de coruja em MT, sem erros de compilação)
 
Ivan Butko:

   if (MA5>MA20)
     {
      Signal=1;
     }
   if(Signal>TradeLevel) // TradeLevel установлен в 0.
     {
      ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-SL*Point,Bid+TP*Point,"Optim",16384,0,Blue);
     } 


Por favor, informe por que esta lógica não funciona? (mql4)
Os negócios não se abrem

(tudo mais, variáveis, tudo é descrito - modelo padrão de coruja em MT, sem erros de compilação)

Então a lógica não está funcionando ou as posições da EA não estão se abrindo?

É um bom hábito olhar primeiro para a revista "Experts" - há muito sobre o que escrever. E eu também faria bem em verificar o "Diário".

Vejo exatamente dois erros e uma incerteza ao enviar um pedido comercial.

 
Artyom Trishkin:

Então a lógica não está funcionando ou as posições da EA não estão se abrindo?

É um bom hábito olhar primeiro para a revista "Experts" - há muito sobre o que escrever. E não custa olhar para o "Jornal" também.

Logo no topo da minha cabeça, vejo exatamente dois erros e uma incerteza ao enviar um pedido comercial.

Obrigado, está funcionando!

Bastava reverter esta lógica para o padrão MACD EA.
Só precisava de uma base para implantar sinais diferentes e resumi-los.

Pedimos desculpas pelo incômodo. (a propósito, o registro estava vazio, sem erros também, apenas não abriu negócios e pronto).

Se você não se importa, por favor, ainda aponte o erro

 

Há um código primitivo

templ(T)class CData{
public:CData(){};~CData(){};
       T Total(T &mas[]  ,int y){return(ArraySize(mas));}    
       T Total(T &mas[][],int y){return(ArraySize(mas));}}

Pergunta como chamar a funçãoTotal(), eu quero chamá-la, por exemplo, no OnInit(), por favor não sejam rudes, eu sou um idiota, eu não entendo a ajuda? Preciso apagar a memória da classe, e se sim, onde e como?

 

FALHA AO CALCULAR O RISCO POR COMÉRCIO.

TAREFA: Calcular o tamanho do lote a um nível de risco aceitável por negociação de $250 para qualquer instrumento (incluindo forex, mulhões, CFDs).

MINHA REALIZAÇÃO (para COMPRAR, trecho de código de função):

//valSL - размер стопа
//price - цена открытия ордера
//iLots - размер лота
SL_punkt=(price-valSL)/MarketInfo(currencySelect,MODE_POINT); //Переводим денежное выражение в пункты
 double pricePunkt=NormalizeDouble(iLots*MarketInfo(symb,MODE_TICKVALUE)*SL_punkt,MarketInfo(symb,MODE_DIGITS)); //Вычисляем уровень убытка при заданном размере лота

O PROBLEMA: Este código calcula corretamente as perdas para todos os ativos, incluindo pares de moedas (incluindo cruzes), ouro, petróleo, MAS INDEXES, nq100, PARA EXEMPLO,NÃO CALCULA corretamente. Nomeadamente, meus dados de script (perdas potenciais de negócios) são consistentemente 10 vezes MENOS do que o MT4 STRATEGY Tester lê!

ALGUMAS NOTAS:

1. Os testes foram realizados no terminal Alpari.

2. Segundo o terminal, a forma de cálculo do lucro no XAUUSD, BRN (petróleo) e NQ100 é "CFD", em pares de moedas, respectivamente, "forex".

Acho que o problema está no tamanho do contrato, que não levo em conta (para óleo - 1000, para XAUUSD - 100, para NQ100 - 10). Mas então por que XAUUSD, BRN estão contando corretamente (e pares de moedas também), mas NQ100 não está? Talvez, apesar do fato de que nas propriedades do símbolo do terminal Alpari o método de cálculo do lucro é "CFD", mas na realidade ele é contado como "Forex"? Isto é mesmo possível?

Em geral, eu gostaria que alguém me explicasse meu erro de roteiro e como corrigi-lo.

OBRIGADO!

 
Сергей Михеев:

FALHA AO CALCULAR O RISCO POR TRANSAÇÃO.

MODELO _TICKSIZE

 
Yurij Kozhevnikov 2019.08.10 17:57 PT
Сергей Михеев:

FALHA NO CÁLCULO DO RISCO POR COMÉRCIO.

MODELO _TICKSIZE

Leia xxxxxxxx

Isto não resolve o problema, infelizmente. Eu tenho

MODE_TICKVALUE равно MODE_POINT и равно MODE_TICKSIZE (для NQ100 это 0.1)

Tentei também esta variante de código:

double StoimPunkt(string B){
double S = MarketInfo(B,MODE_TICKVALUE)/(MarketInfo(B,MODE_TICKSIZE)/MarketInfo(B,MODE_POINT));return(S);
}
//valSL - размер стопа
//price - цена открытия ордера
//iLots - размер лота
SL_punkt=(price-valSL)/MarketInfo(symb,MODE_POINT); //Переводим денежное выражение в пункты
 double pricePunkt=NormalizeDouble(iLots*StoimPunkt(symb)*SL_punkt,MarketInfo(symb,MODE_DIGITS)); //Вычисляем уровень убытка при заданном размере лота

O RESULTADO É EXATAMENTE O MESMO QUE NO MEU EXEMPLO ACIMA.

Alguma outra idéia?

Razão: