[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 57

 
Karabas >> :

Olá, você poderia me dizer se é possível mudar a cor do indicador? Digamos que existem duas médias móveis com períodos diferentes na janela principal com cores diferentes. >> Obrigado


Clique com o botão direito do mouse em um dos MAs (Moving Average), aparecerá uma janela, clique em "propriedades da Moving Average" e lá você verá onde mudar a cor

 
xruss >> :

Cls_B e Cls_S permitem fechar uma posição e não podem contradizer Opn_B Opn_S. aqui você precisa escrever no código uma série de tempo que marque a barra onde a ordem de Compra ou Venda foi aberta e onde ela deve ser fechada para que não haja mais posições abertas durante este período((

Não pretendo substituir as condições de abertura que você já tem, mas acrescentar novas condições a elas. Pelo que entendi, você quer proibir a EA de abrir uma posição sobre um sinal para abrir, se não houver sinal para fechar sobre o mesmo sinal. Então, acrescente:

if (Opn_B==true && Cls_B==false) { не открывать Buy }
if (Opn_C==true && Cls_C==false) { не открывать Sell }

E se você o fizer à sua maneira - como calcular a barra na qual uma posição deve fechar ali algum dia? :)

 

Olá

//+------------------------------------------------------------------+
int start()
  {
//----
 double Macd_0=iMACD(NULL,0, MAFastPeriod, MASlowPeriod, MASignalPeriod,1,0,0);
 double Macd_1=iMACD(NULL,0, MAFastPeriod, MASlowPeriod, MASignalPeriod,1,0,1);
 double signal_0=iMACD(NULL,0, MAFastPeriod, MASlowPeriod, MASignalPeriod,1,1,0);
 double signal_1=iMACD(NULL,0, MAFastPeriod, MASlowPeriod, MASignalPeriod,1,1,1);
    
    if(( Macd_0 < Macd_1 && Macd_1 > 0) && ( signal_0 < signal_1 && signal_1 > 0))
     if( CheckOrders(OP_SELL))
      {
       if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, NULL, MagicNumber))
         Print("Не открыт ордер Buy. Ошибка №", GetLastError()); 
       }
       
    if(( Macd_0 > Macd_1 && Macd_1 < 0) && ( signal_0 > signal_1 && signal_1 < 0))
     if( CheckOrders(OP_BUY))
      {
       if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, NULL, MagicNumber))
         Print("Не открыт ордер Sell. Ошибка №", GetLastError()); 
       }

//----
   return(0);
  }
//+------------------------------------------------------------------+

Esta é a primeira opção.

//+------------------------------------------------------------------+
int start()
  {
//----
 double Macd_0=iMACD(NULL,0, pFast, pSlow, pSignal,1,0,0);
 double Macd_1=iMACD(NULL,0, pFast, pSlow, pSignal,1,0,1);
 double signal_0=iMACD(NULL,0, pFast, pSlow, pSignal,1,1,0);
 double signal_1=iMACD(NULL,0, pFast, pSlow, pSignal,1,1,1);
    
    if(( Macd_0 < Macd_1 && Macd_1 > 0) && ( signal_0 < Macd_0 && signal_1 < Macd_1 && signal_1 > 0))
     if( CheckOrders(OP_SELL)) //продажа
      {
       if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, NULL, MagicNumber))
         Print("Не открыт ордер Buy. Ошибка №", GetLastError()); 
       }
       
    if(( Macd_0 > Macd_1 && Macd_1 < 0) && ( signal_0 > Macd_0&& signal_1 > Macd_1&& signal_1 < 0))
     if( CheckOrders(OP_BUY)) //покупка
      {
       if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, NULL, MagicNumber))
         Print("Не открыт ордер Sell. Ошибка №", GetLastError()); 
       }

//----
   return(0);
  }
//+------------------------------------------------------------------+

Esta é a segunda variante.

Expert Advisor baseado em macd, a negociação é simples (tudo é baseado em 0 e 1 barra, o preço é aberto).

No primeiro caso, os valores macd aumentam (para compra), para venda diminuem. A linha de sinais também se baseia nestas condições.

No segundo caso, tentei realizar o cruzamento da linha de macd rápido e lento. Mas algumas dúvidas permaneceram.............Se está correto.........

 
Everlost >> :

Não pretendo substituir as condições de abertura que você já tem, mas acrescentar novas condições a elas. Pelo que entendi, você quer proibir a EA de abrir uma posição sobre um sinal para abrir, se não houver sinal para fechar sobre o mesmo sinal. Então, acrescente-os:

if (Opn_B==true && Cls_B==false) { не открывать Buy }
if (Opn_C==true && Cls_C==false) { не открывать Sell }

E se você o fizer à sua maneira - como calcular a barra na qual a posição deve fechar em algum momento? :)

como posso abrir uma posição?)

porque abre quando Opn_B=verdadeiro Cls_B=falso e Cls_B não pode ser verdadeiro naquele momento.


digamos que temos um MA` que cruzou as cotações de preços (formado Opn_S), abriu uma posição para baixo e SL- passou para Breakeven. e depois o preço deslizou SL para Breakeven e...

no meu caso, uma posição é aberta abaixo(((( antes da formação de um novo sinal de MA`cruzamento de preços (Cls_S)



 
xruss >> :

mas como minha posição será aberta?:)

porque abre quando Opn_B=verdadeiro Cls_B=falso e Cls_B não pode ser verdadeiro naquele momento.

Ok, crie outra variável, por exemplo, int Last_Position=-1. Insira aí o tipo de pedido assim que a posição for aberta. E acrescentar condições:

if (Opn_B==true && Last_Position==OP_BUY) { сигнал Buy пропускаем }

 
Everlost >> :

OK, criar outra variável, por exemplo, int Last_Position=-1. Insira aí o tipo de pedido assim que a posição for aberta. E acrescentar condições:

if (Opn_B==true && Last_Position==OP_BUY) { сигнал Buy пропускаем }

Foi mais ou menos assim que o fiz, mas fiquei um pouco desapontado com o resultado(

Às vezes a tendência se afrouxa, vai para uma posição plana (corrige) e então continua se movendo novamente com uma nova força e dá o sinal Opn_S correto que será bloqueado desta forma. Como limitar o comércio por uma ordem na área do sinal Opn_S para Cls_S e de Opn_B para Cls_B?

 
xruss >> :

Eu fiz dessa maneira, mas não estou satisfeito com o resultado((

Às vezes a tendência enfraquece, entra em um plano (faz uma correção) e então continua a se mover com uma nova força e dá o sinal certo Opn_S, que será assim bloqueado. Como limitar o comércio com uma ordem na área do sinal Opn_S para Cls_S e de Opn_B para Cls_B?

É muito simples - quando o sinal Cls_S ou Cls_B é recebido, você deve esquecer a posição aberta por último (redefinir o valor da variável Last_Position de volta para -1).

if ((Cls_S==true || Cls_B==true) && Last_Position>=0) Last_Position=-1;

 
Você pode aconselhar como acrescentar uma condição ao Expert Advisor, para que ele saiba que o comércio anterior estava perdendo?
 
Dimoncheg >> :
Você pode dizer como soletrar a condição em sua EA, para que ela saiba que o comércio anterior era deficitário?

se (OrderProfit() < 0) {

...

}

 
Caros especialistas, por favor, não ignorem minha pergunta.

Existe um indicador que conta a volatilidade, por exemplo, diariamente. Mas não aquele que dá um número indefinido, como 0,34. Mas ele deve calcular o número de castiçais por dia e dividi-lo por um determinado período (número de dias) para que o indicador conheça o valor médio. Exemplo: abertura 100, fechamento 200; o segundo dia - abertura 200, fechamento 250. Volatilidade média para estes 2 dias = ((200-100)+(250-200))/2 dias=(100+50)/2=75
Onde fazer o download, se disponível.