[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 49

 
xruss >> :

Mais tarde postarei uma seção do meu código, mas acho que seria mais legal com caixas de seleção. como escrevê-las em mql4?

https://book.mql4.com/ru/variables/arrays

No final desta seção, o princípio do uso de bandeiras é muito bem descrito por um exemplo do fato de se formar uma nova barra. Da mesma forma, criamos duas variáveis do tipo bool que indicarão a possibilidade de abrir negócios de um determinado tipo, por exemplo, Buy_Allowed e Sell_Allowed. Por padrão, atribuímos valores de verdadeiro a essas variáveis. Se houver um sinal de compra, em caso de abertura de posição bem sucedida, definimos Buy_Allowed=false; neste caso antes de OrderSend() adicionamos a condição de sua execução para Buy deals somente se Buy_Allowed===true. Quando um sinal inverso é recebido, descartamos a bandeira Buy_Allowed=true. O mesmo esquema é usado para negócios de venda, mas com a bandeira Sell_Allowed.

 
Everlost >> :

https://book.mql4.com/ru/variables/arrays

No final desta seção o princípio do uso de bandeiras é muito bem descrito pelo exemplo da formação de uma nova barra. Por analogia, criamos duas variáveis do tipo bool que indicarão a permissibilidade de abrir negócios de um determinado tipo, por exemplo, Buy_Allowed e Sell_Allowed. Por padrão, atribuímos valores de verdadeiro a essas variáveis. Se houver um sinal de compra, em caso de abertura de posição bem sucedida, definimos Buy_Allowed=false; neste caso antes de OrderSend() adicionamos a condição de sua execução para Buy deals somente se Buy_Allowed===true. Quando um sinal inverso é recebido, descartamos a bandeira Buy_Allowed=true. O mesmo esquema é usado para negócios de venda, mas com a bandeira Sell_Allowed.

Obrigado. Eu postei algum do código no último post.

 

Eu já baixei meu Daydream EA deste site.Quando testei, o lote máximo tomado no teste foi 0,1 e o saldo foi de 10.000. Testei-o com GBPUSD 15 no Meta Trader 4 222.

Segunda pergunta: qual é o "descasamento de erros" no relatório de teste?

A terceira pergunta, por que não consigo obter um sinal? Tenho a impressão de que isto está de alguma forma relacionado à primeira pergunta, ou seja, algo está com defeito no programa. Estou usando EURUSD M1 MACD Sample (que vem como padrão), diminuí o MACD OpenLevel para 1 e não recebi nada.

Não sei como utilizá-lo.

 
xruss >> :

Obrigado, vou me educar. Eu postei algum do código no último post.

int    ORDtype=-1, ORDtime=0;
double ORDprofit;

for (int i=OrdersHistoryTotal()-1; i>=0; i--) {
  if (OrderSelect( i, SELECT_BY_POS, MODE_HISTORY)) {
    if (OrderSymbol()==Symbol()) {
      if (OrderCloseTime()!=0 && OrderCloseTime()> ORDtime) {
        ORDtime=OrderCloseTime();
        ORDtype=OrderType();
        ORDprofit=OrderProfit();
      }
    }
  }
}

//........

if ( ORDtype==-1)
{
  // В истории не нашлось подходящих ордеров
}

if ( ORDtype==OP_SELL)
{
  // Последним был закрыт Sell
}

if ( ORDtype==OP_BUY)
{
  // Последним был закрыт Buy
}
A variante de trabalho de seu código. Você não deveria ter retirado o cheque (OrderCloseTime()>time). Sem ele, todo o sentido seria perdido - estamos escolhendo a última ordem fechada, comparando o tempo de fechamento de cada ordem sendo pesquisada com o tempo mais antigo de fechamento das ordens encontradas anteriormente, o qual guardamos na variável ORDtime. Mas você acabou de passar por todas as ordens da história. Você também tinha uma condição sobre o ORDprofit, mas você mesmo pode acrescentar isso. :)
 
Everlost >> :
Versão de trabalho do seu código. Você não deveria ter retirado o cheque (OrderCloseTime()>time) porque sem ele todo o sentido seria perdido - estamos escolhendo a última ordem fechada comparando o tempo de fechamento de cada ordem sendo pesquisada com o tempo mais antigo das ordens encontradas anteriormente. Você também tinha uma condição sobre o ORDprofit, mas você mesmo pode acrescentar isso. :)

sim eu tinha uma condição para proibir a abertura na mesma direção se o último pedido tivesse lucro :)

muito obrigado!!!!)

 
zas писал(а) >>

Segunda pergunta: O que são "erros de discrepância" no relatório de teste?

Já foi perguntado muitas vezes, é mais fácil para você procurar...

zas escreveu >>

Tentei usar GBPUSD 15 em um Meta Trader 4 222. O que é interessante, o teste com 1 lote em outro computador foi bom. Qual é o truque?

Talvez o MT4 no outro computador esteja anexado à conta de outro corretor, corretores diferentes, condições comerciais diferentes... Ou talvez a EA determine o lote de forma aleatória?) Você pode precisar do código do consultor especializado, das declarações, e obterá uma resposta precisa.

zas escreveu(a) >>

Minha impressão é que de alguma forma está relacionada à primeira pergunta, ou seja, algo está com defeito no programa. Eu tentei usar EURUSD M1 MACD Sample (que vem como padrão), diminuí o MACD OpenLevel para 1 e não consegui nada.

Veja o registro do testador, se você estiver falando de um testador. Afixar o conjunto de parâmetros e o resultado do teste EA (onde não há sinais). Parece que todas as suas garras por falta de experiência, e não por falhas no programa...

 
VladislavVG >> :

Uma opção :

Defina a variável NeedAlert como verdadeira quando você começar a negociar.


Obrigado, e eu pensei que não ia funcionar - como se o laço não funcionasse - acontece que eu esqueci o suporte encaracolado))

 
Eis uma pergunta: Como calcular o tamanho do lote para que o lucro estimado de 20 pips seja de 4% do depósito atual?
 
xruss писал(а) >>

Obrigado, vou me educar. Eu postei algum do código no último post.

//+------------------------------------------------------------------+
// Проверка последнего ордера по условию                             |
//+------------------------------------------------------------------+
bool LastCloseOrd(string Sy = "",//Если Sy=="" на принадлежность символу не проверяем
                  int  Type = -1,//Если Typ==-1 любой тип ордера
                  int Magic = -1,//Если Magic=-1любой магик
                  int Pr_Ls =  0){//Если Pr_Ls =0 без проверки на профит, если <0 то фильтр лосевых , если >0 то фильтр профитных ордеров
                  int time=0;
if(OrdersHistoryTotal()<1){return(false);}//Если нет закрытых ордеров выходим 
  for(int i=0; i<OrdersHistoryTotal(); i++){//Перебираем закрытые ордера
    if(OrderSelect( i, SELECT_BY_POS, MODE_HISTORY)){//Выбираем ордер из истории
      if(OrderCloseTime()!=0){//Если ордер уже закрыт
        if( Sy==""||OrderSymbol()== Sy){//если совпадает символ, или нет проверки на символ
          if( Type==-1||OrderType()== Type){//если совпадает тип, или нет проверки на тип
            if( Magic==-1||OrderMagicNumber()== Magic){//если совпадает магик , или не проверки на магик
              if(OrderCloseTime()> time){//если время закрытия ордера больше чем предыдущее
                time=OrderCloseTime();//записываем время закрытия (в конце цикла у нас в ловушке булет сидеть последний закрытый ордер
              }                                                  //попадающий под все условия выставленных фильтров)
            }
          }
        }
      }
    }
  }  
if( Pr_Ls==0&&time!=0){return(true);}//если нет условия на профит-лосс подтверждаем наличие ордера
if( Pr_Ls<0&&OrderProfit()<0){return(true);}//если ордер лосевый подтверждаем наличие ордера
if( Pr_Ls>0&&OrderProfit()>0){return(true);}//если ордер профитный подтверждаем наличие ордера
return(false);//нет ни одного попадающего под выставленные условия ордера
} 
 

Isto é sobre os erros no testador.........

Se alguém souber, por favor, avise ......

')' - wrong parameters count	C:\Program Files\MetaTrader - Alpari\experts\expertCCI_WILLIAMS.mq4 (64, 37)
')' - wrong parameters count	C:\Program Files\MetaTrader - Alpari\experts\expertCCI_WILLIAMS.mq4 (65, 37)
O que os números 64,37 e 65,37 significam????????????