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

 
Ibiss >> :

Como programar corretamente uma saída em um cruzamento inverso das linhas principais e de sinal ? porque os sinais vêm em curtos intervalos de tempo... e as ordens não são fechadas onde deveriam estar na condição...

esta pergunta tem me incomodado há muito tempo! AJUDA!

Aqui está a condição de saída:


Eu não sou um ás mas

if(OrderMagicNumber()!= MAGICMA || OrderSymbol()!=Symbol()) continue;

se (OMN não for igual a OMN ou OS não for igual a OS) {então continue}


mas isso significa que o pedido não pertence ao Consultor Especialista

tente

if(OrderMagicNumber()!= MAGICMA || OrderSymbol()!=Symbol()) break;
 
Ibiss >> :

Como programar corretamente uma saída em um cruzamento inverso das linhas principais e de sinal ? porque os sinais vêm em curtos intervalos de tempo... e as ordens não são fechadas onde deveriam estar na condição...

esta pergunta tem me incomodado há muito tempo! POR FAVOR!

Aqui está a condição de saída:


Snachala narusyj sebe blok shemy svoego algorutma, chtob tu vuzyalno vudel chto tu doesh y po kakum yslovuyam y tebya zakruvayutsya ordens, a vse eto delo perevestu v kod eto yge delo tehnuku - ya tak dymayu.

 

Cavalheiros, poderiam me dizer se há algo pronto para exibir comentários no gráfico para cada pedido. Isto é, seta em um gráfico e ao lado dele um comentário com um motivo. Eu quero que seja desenhado no testador :)

Obrigado.

 
AndBar >> :

Snachala narusyj sebe blok shemy svoego algoritmo, chtob tu vuzyalno vudel chto tu doaesh y po kakum yslovuyam y tebya zakruvayutsya ordens, a vse eto delo perevestu v kod eto yge delo tehnuku - ya tak dymayu.


Ei cara, você pode falar assim ou assim :) >> Estou quebrando meus olhos. :)
 

acolhedor, não ajudou, mas obrigado!

talvez alguém saiba como fazer a travessia e a travessia de volta para abrir e fechar ordens opostas!??

isto precisa de alguma magia...ahhh....

Você vê quantas compras e vendas diferentes deveriam existir... e há apenas um par de peças...

como posso resolver este problema?

quem não se importa de olhar para o código! por favor!

Está tudo no código da EA, não no indicador... Acho que...

e os drawdowns são como... você não pode desejar 96%... quem se importa :)

deveria ser assim:


Arquivos anexados:
itrend.mq4  5 kb
 

De qualquer forma, decidi refazer a EA após ler sobre variáveis globais, e eureka!!!

e havia também um problema com os carrapatos...

se abrem em todos os crossovers, mas um grande MAS... eles abrem emgrandes pilhas...

pessoas, como eu resolvo este problema? tenha piedade))))

aqui está uma captura de tela:


"Não é para os fracos de coração".

Arquivos anexados:
ggftest.mq4  3 kb
 
Ibiss >> :

acolhedor, não ajudou, mas obrigado!

Alguém pode saber como fazer encomendas opostas abertas e fechadas na travessia e na travessia de volta!?

isto precisa de alguma magia...ahhh....

Você vê quantas compras e vendas diferentes deveriam existir... e há apenas um par de peças...

como este erro pode ser corrigido?

quem não se importa de olhar para o código! por favor!

Está tudo no código da EA, não no indicador... Acho que...

e os drawdowns são como... você não pode desejar 96%... quem se importa :)

é assim que deve ser:



A maneira mais fácil:

A cada tick, inicializamos 4 variáveis indicadoras. Dois para a linha vermelha e dois para a verde. E duas variáveis de sinais comerciais, respectivamente.

Neste caso, o código deve ser parecido com este:

// ------ Пользовательские переменные -------------------
extern bool CloseObr=true;// закрывать ли противоположный ордер при возникновении торгового сигнала
// ---------- Вспомогательные переменные ------------
double Green_1, Green_2, Red_1, Red_2;// значения индикатора на первой и второй свечках
bool SigBuy, SigSell;// торговые сигналы
int TICKET;

int start(){
  Green_1=iCustom(****);// зелёная на первой свече
  Green_2=iCustom(****);// зелёная на второй свече
  Red_1=iCustom(****);// красная на первой свече
  Red_2=iCustom(****);// красная на второй свече
  
  // ------- формируем торговые сигналы -------------
  
  SigBuy=false;
  SigSell=false;
  
  if( Green_2<= Red_2 && Green_1> Red_1){// зелёная пересекает красную снизу вверх
    SigBuy=true;
  }
  if( Green_2>= Red_2 && Green_1< Red_1){// зелёная пересекает красную сверху вниз
    SigSell=true;
  }
  
  // ------ Сигналы сформированы. Торгуем ------------------
  if( SigBuy){
    if( CloseObr){
      // то удаляем все Sell-ордера
    }
    // --- противоположные удалены. Открываем позу
    ......
    TICKET=OrderSend( тут пишем параметры установки лонга);
  }
  if( SigSell){
    if( CloseObr){
      // то удаляем все Buy-ордера
    }
    // --- противоположные удалены. Открываем позу
    ......
    TICKET=OrderSend( тут пишем параметры установки шорта);
  }
}
De modo geral, é assim que a EA deve funcionar. Pode não ser a versão mais perfeita do conjunto de códigos, mas ilustra bem a lógica de sua construção.
 

drknn, obrigado pela idéia e pelo código)!


por acaso você sabe como lidar com uma multidão de pedidos?)

 
Ibiss >> :

De qualquer forma, decidi refazer a EA após ler sobre variáveis globais, e eureka!!!

e havia também um problema com os carrapatos...

se abrem em todos os crossovers, mas um grande MAS... eles abrem em grandes pilhas...

pessoas, como eu resolvo este problema? tenha piedade))))

aqui está uma captura de tela:


">> não é para os fracos de coração.



Bem, então você pode fazer isso assim:

// ------ Пользовательские переменные -------------------
extern bool CloseObr=true;// закрывать ли противоположный ордер при возникновении торгового сигнала
extern int MAGIC=0;// у ордеров открытых вручную магик = 0
// ---------- Вспомогательные переменные ------------
double Green_1, Green_2, Red_1, Red_2;// значения индикатора на первой и второй свечках
bool SigBuy, SigSell;// торговые сигналы
int TICKET;

int start(){
  Green_1=iCustom(****);// зелёная на первой свече
  Green_2=iCustom(****);// зелёная на второй свече
  Red_1=iCustom(****);// красная на первой свече
  Red_2=iCustom(****);// красная на второй свече
  
  // ------- формируем торговые сигналы -------------
  
  SigBuy=false;
  SigSell=false;
  
  if( Green_2<= Red_2 && Green_1> Red_1){// зелёная пересекает красную снизу вверх
    SigBuy=true;
  }
  if( Green_2>= Red_2 && Green_1< Red_1){// зелёная пересекает красную сверху вниз
    SigSell=true;
  }
  
  // ------ Сигналы сформированы. Торгуем ------------------
  if( SigBuy && SchBuy( MAGIC)==0){
    if( CloseObr && SchSell( MAGIC)>0){
      // то удаляем все Sell-ордера
    }
    // --- противоположные удалены. Открываем позу
    ......
    TICKET=OrderSend( тут пишем параметры установки лонга);
  }
  if( SigSell && SchSell( MAGIC)==0){
    if( CloseObr && SchBuy( MAGIC)>0){
      // то удаляем все Buy-ордера
    }
    // --- противоположные удалены. Открываем позу
    ......
    TICKET=OrderSend( тут пишем параметры установки шорта);
  }
return(0);
}
// --------- Пользовательские подпрограммы -----------------

// ==========================================================================================================================
// ************************* Счётчики ордеров *******************************************************************************
// ==========================================================================================================================


//=========== SchBuy()  ===============================
//  Функция возвращает количество Buy-ордеров
//   SchBuy      - счётчик Buy ордеров
//-----------------------------------------------------------
int SchBuy(int MAGIC){
  string SMB=Symbol();
  int SchBuy=0;
  int i;
  for ( i=OrdersTotal()-1; i>=0; i--) {
    if (!OrderSelect( i, SELECT_BY_POS, MODE_TRADES)) { WriteError( i);}
    else {
      if(OrderSymbol()!= SMB || OrderMagicNumber()!= MAGIC){ continue;}
      if(OrderType()==OP_BUY){ 
        SchBuy++;
      }  
    }
  }
  return( SchBuy);
}                  
//==================================================================================================


//=========== SchSell()  ===============================
//  Функция возвращает количество Sell-ордеров
//  SchSell  - счётчик Sell ордеров
//-----------------------------------------------------------
int SchSell(int MAGIC){
  string SMB=Symbol();
  int SchSell=0;
  int i;
  for ( i=OrdersTotal()-1; i>=0; i--){
    if (!OrderSelect( i, SELECT_BY_POS, MODE_TRADES)) { WriteError( i);}
    else {
      if(OrderSymbol()!= SMB || OrderMagicNumber()!= MAGIC){ continue;} 
      if(OrderType()==OP_SELL){
        SchSell++;
      }
    }
  }
 return( SchSell);     
}                  
//==================================================================================================
 
Bond >> :

Cavalheiros, poderiam me dizer se há algo pronto para exibir comentários no gráfico para cada pedido. Isto é, uma seta na tabela e ao lado dela um comentário com a razão. Eu quero que seja desenhado no testador).

>> Obrigado.


Se quisermos que ele seja desenhado mesmo no testador, teremos que fazer o código de programação à mão.

Neste caso, é melhor colocar as setas nas funções OrderSend() e OrderClose().

O comentário pode ser impresso de várias maneiras. Quanto aos prontos, posso dizer que esta é uma tarefa bastante específica - é improvável que se consiga encontrar um código pronto.

Eu postei meu script aqui na MQL4 que mostra o histórico comercial nos gráficos. Minha idéia foi posteriormente modificada por outros programadores. Eu só tinha setas e linhas mostrando pontos de abertura/fecho de ordem. Posteriormente, comentários a pedidos e indicação de preços de execução apareceram nos scripts de outros programadores. Isto pode ser bom de se encontrar aqui.