Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 313

 
 
Burger:
Precisa de uma crítica sobre a linha de ajuda da EA https://docs.google.com/document/d/1Bkqu7NzSj8mrNsa5iO8lB6UmKNCJ4YiaY-wKXzbF3Wo/pub


Eu gosto de criticar, mas há muito - um pouco do primeiro parágrafo

O arquivo não está se fixando corretamente (( Vou carregá-lo agora em um site de compartilhamento de arquivos.

 
VladislavVG:

Se isto sempre o mais próximo então pode ser bastante simples e, naturalmente, não são necessários mágicos. Mas não ouvimos nada sobre isso da PGM5, e no caso geral pode não ser a ordem mais próxima, mas uma ordem mais distante do preço atual e entre ordens pode ser colocada devido a outras razões: não sabemos nada sobre o algoritmo de tomada de decisão. Estávamos falando apenas de ordens relacionadas.
Por alguma razão, tenho em mente que o mais próximo deve ser removido. Os demais estão todos mais distantes e abertos sob diferentes condições. E como a ordem pendente mais próxima é oposta à do mercado, temos todos os dados para encontrá-la corretamente.
 
PGM5:
Obrigado por seu apoio. Você pode me dizer onde procurar a resposta a esta pergunta? Sim, mais uma coisa: as ordens devem ser definidas quando uma ordem é acionada e quando o takeprofit é acionado e a ordem mais próxima deve ser apagada antes disso. Obrigado de antemão.

Você já está começando a escrever o TOR. Você já começou a fazer alguma coisa? Ou você está esperando o peixe? Nesta linha, eles ajudam aqueles que querem aprender a programar em mql4 de graça, não aqueles que querem obter uma solução pronta e gratuita.
 
43
alexey1979621 29.11.2013 11:52 #

Saudações a todos! Estou pedindo ajuda para resolver um problema interessante. Existe um EA, cuja característica é que após obter um lucro, as próximas negociações de 1 a 4 são fechadas em stop loss, depois lucro novamente. O Expert Advisor abre negócios com base no sinal indicador. Para excluir negócios lucrativos após o lucro, deve-se ignorar os sinais gerados pelo indicador, ou seja, não fechar negócios (1,2,3,4) após obter um lucro. A função Sig está disponível para este fim. Entretanto, acho que escrevi mal esta função, pois a EA não abre ordens com ela e tudo está funcionando muito claramente sem ela. Talvez haja também um erro na condição. Em geral, .... Não sei que diabos é isso, não consigo consertar esse bloqueio há duas semanas. Vocês poderiam me aconselhar, gente esperta, onde está o erro?

Sim, sinal é o número de sinais após um lucro e pynkt é o tamanho do lucro em pips.

Eu ficaria grato por qualquer ajuda.

void CheckForOpen()
{
   int ticket, STOPLEVEL;
   double Price, SL, TP; 
   STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);


   double MA1Low = NormalizeDouble (iMA(NULL,0,MA_Period_2,MA_Shift_2,MA_Method_2,0,1), Digits); 
   double MA2High = NormalizeDouble (iMA(NULL,0,MA_Period_2,MA_Shift_2,MA_Method_2,1,1), Digits);
   
 
  
   if(Volume[0]>1) return;

    // продажа
   if (Open[1]>Close[1] && Open[1] > MA1Low && Close[1] < MA1Low)
   
{
      if(Pro(1,100))

   {
       ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL,TP,"Pattern_1",1000,0,Red);
      return;
    }
   
  }  
//---- buy conditions
   // покупка
  if (Open[1]<Close[1] && Open[1] < MA2High && Close[1] > MA2High)
 
 { 
   if(Pro(1,100))
   {
      ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SL,TP,"Pattern_1",1000,0,Blue);
      return;
   }       
   }
}
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool Sig(int signal,int pynkt)
 {
  static int cnt = 0;
  static datetime tm;
  if(Time[0] == tm) return(false);
  tm = Time[0];
  if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY) == true)
   {
    cnt = cnt + 1;
    if(OrderType() == OP_BUY && OrderClosePrice() - OrderOpenPrice() < pynkt*Point) cnt = 0;
    if(OrderType() == OP_SELL && OrderOpenPrice() - OrderClosePrice() < pynkt*Point) cnt = 0;
    if(cnt >= signal) return(true);
   }
  return(false);
 }
//+------------------------------------------------------------------+
 
artmedia70:
Você está começando a escrever os ToR. Você mesmo já começou a fazer alguma coisa? Ou você está esperando o peixe? Nesta linha, eles ajudam aqueles que querem aprender a programar em mql4 de graça, não aqueles que querem obter uma solução pronta e gratuita.



Olá. Sou um principiante em programação. Usei apenas o fórum e um tutorial para aprender. No início eu entendia tudo, mas quando cheguei às funções gerais, comecei a entender mal algo, a propósito, durante a correspondência, eu tinha aprendido algo... Tirei o roteiro de lá, o roteiro de lá e sublinhei algumas coisas do fórum. Eu experimentei no demo-it mostra lucro, mas os scripts são simples: os pedidos nem sempre são feitos e um pedido perdido causa falha no sistema. Eu tentei na conta real: todos os pedidos são feitos (mas desta vez não houve lacunas), isso traz lucro, mas muitas posições desnecessárias são abertas. Percebi que scripts e funções simples não podem resolver este problema e pedi ajuda. O Expert Advisor é lucrativo, mas precisa de alguma "ajuda" com suas mãos. Estou pensando em automatizar esta "ajuda" a tempo.
 
assessor filehttp://drive.google.com/file/d/0B0Zxi_UuVVTZejc3Tmg1Zk5ablU/edit?usp=sharing
 
alexey1979621:
43
alexey1979621 29.11.2013 11:52 #

Saudações a todos! Estou pedindo ajuda para resolver um problema interessante. Existe um EA, cuja característica é que após obter um lucro, as próximas negociações de 1 a 4 são fechadas com stop loss, depois lucro novamente. O Expert Advisor abre negócios com base no sinal indicador. Para excluir negócios lucrativos após o lucro, deve-se ignorar os sinais gerados pelo indicador, ou seja, não fechar negócios (1,2,3,4) após obter um lucro. A função Sig está disponível para este fim. Entretanto, acho que escrevi mal esta função, pois a EA não abre ordens com ela e tudo está funcionando muito claramente sem ela. Talvez haja também um erro na condição. Em geral, .... Não sei que diabos é isso, não consigo consertar esse bloqueio há duas semanas. Vocês poderiam me aconselhar, gente esperta, onde está o erro?

Sim, sinal é o número de sinais após um lucro e pynkt é o tamanho do lucro em pips.

Eu ficaria grato por qualquer ajuda.


Função Sig() proíbe a abertura de negócios se o histórico de pedidos estiver ausente (devoluções falsas)
 
Vinin:

Função Sig() proíbe a abertura de negócios se não houver histórico de pedidos (devoluções falsas)
Presumi que a história no testador fosse simulada (então eu estava errado). Parece que devemos realizar uma função de busca da última ordem por um simulador, um deslizador e descartar ordens pendentes. Meu cérebro o entende (se eu estiver pensando na direção certa), mas não posso usar minhas próprias mãos para executar o código. Você pode me dar uma dica? Obrigado pela ajuda.
 
alexey1979621:
Presumi que a história no testador fosse simulada (então eu estava errado). Acontece que você precisa fazer uma função para buscar a última encomenda, por simulação, medj, e descartar as pendentes. Meu cérebro o entende (se eu estiver pensando na direção certa), mas não posso usar minhas próprias mãos para executar o código. Você pode me dar uma dica? Obrigado por sua ajuda.
Todas as suas dicas!
Documentação Tutorial

E funções:

GetIndexLastPos - Retorna o índice da última posição aberta ou -1
GetLotLastPos - Retorna o tamanho do lote da última posição aberta ou -1

E muitos outros muito úteis!