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

 
artmedia70:

Você já foi informado qual é a razão. A questão não é i++ ou i-- mas sim em que fim da lista devemos começar a eliminar pedidos - do início da lista (como você fez) ou do final da lista (como você deve fazer neste caso).

Para entender o que acontece quando as ordens são eliminadas, é preciso saber e entender como as ordens são armazenadas na matriz.

Quando você elimina a primeira ordem primeiro (é indexada por i=0), os índices de todas as ordens são deslocados na matriz - a primeira ordem torna-se nula, a segunda ordem torna-se primeira, a terceira torna-se segunda e assim por diante. É por isso que todas as ordens não são completamente removidas - na verdade, quando eu me torno 6, a sexta ordem é deslocada para a quinta posição na matriz de ordens e a ordem não é selecionada pelo índice 6.

Quando você elimina ordens do final da lista, o turno não acontecerá - a primeira ordem tem uma posição zero na lista, e continuará a tê-la. A 10ª ordem tinha a posição 9, foi excluída, depois a 9ª ordem, que tem uma posição 8 na lista é excluída, e assim por diante, até a primeira ordem com uma posição zero no conjunto de ordens.

Um GRANDE OBRIGADO à artmedia70 por sua resposta abrangente, apenas um agradecimento à ilunga ... e a nadya por sua participação também ... tudo de bom ...
 
Aconselho, por favor, que eu criei a ferramenta de múltiplas moedas para trabalhar com várias moedas de uma janela. Mas o problema é que a troca entre moedas é tão rápida que não há tempo para abrir um pedido. Dentro de 3 minutos, 4 ordens + 4 ordens pendentes foram abertas. E houve muita troca entre as moedas.
 
volshebnik:
O que é melhor e o que? )
Fazendo nomes únicos e lembrando-os. Não conheço sua tarefa, talvez você não precise conhecê-la.
 
forexnew:
Aconselho, por favor, que eu criei a ferramenta de múltiplas moedas para trabalhar com várias moedas de uma janela. Mas o problema é que a troca entre moedas é tão rápida que não há tempo para abrir um pedido. Dentro de 3 minutos, 4 ordens + 4 ordens pendentes foram abertas. E houve muita troca entre as moedas.

http://vinin.ucoz.ru/forum/11
 

há 2 modificações de usuário Mod_1 e Mod_2

ambos têm condição de modificação:

double TS;
int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);

if (TS < Min_Dist)
TS=Min_Dist;

Como mudá-lo para que a modificação não passe com uma condição de stop loss, pois o stop loss da compra é menor que o trailing stop,

e para vender, parar a perda é maior do que parar a fuga

 

Olá.

Por favor, ajude-me a encontrar um bug.

O código abaixo não funciona no testador, enquanto não há tal problema na demonstração. Não há erro no diário de bordo.

Obrigado de antemão.

  //====================== Отлавливаем прибыль по рынку ===========================================
  if (RinProfit) {
    if(SchBuyLots>0 || SchBuyLots777>0)
     {
      if((SchSellStop_b(MAGIC)>0 && (maM_fast<maM_slow || maH_fast<maH_slow || maOtk_fast<maOtk_slow)) ||
         (SchSellStop_b(MAGIC)>0 && (speedup_H1_ff<(10000+H1_MA_factor_ff) || speedup_H1_ss<(10000+H1_MA_factor_ss) ||
                                     speedup_M15_ff<(10000+M15_MA_factor_ff) || speedup_M15_ss<(10000+M15_MA_factor_ss))) ||
         (SchSellStop_b(MAGIC)>0 && ((maHXX<=H1_point_min  && speedup_H1_ss<(10000+H1_MA_factor_ss)) || maHXX>=H1_point_max)) ||
         (SchSellStop_b(MAGIC)>0 && Fractal_fibo_buy>Fibo_prohibit) ||
         (SchSellStop_b(MAGIC)>0 && TF1S>0 && TF2S>0 && timf1s!=0 && timf2s!=0 && TF1S<TF2S) ||
         (SchSellStop_b(MAGIC)>0 && TF1S>0 && TF2S>0 && timf1s!=0 && timf2s!=0 && TF1S>=TF2S && Bid<price_S))
       {
        while (SchBuyLots+SchBuyLots777>0 && SchSellLots+SchSellLots777>0)
         {
          CloseVstrechnye(MAGIC);
          return (0);
         }
        CloseAll_bMAGIC(Proskalz, MAGIC);
        CloseAll777_b(Proskalz);
        DeleteOtlozhMAGIC(MAGIC);
        DeleteOtlozh777();
        Alert("Позиции Buy закрыты согласно рыночной ситуации.");
        RefreshRates();
        if (Timeout_Trade>0 && ProfHist<=0)
         {
          Comment (SMB,": ТАЙМАУТ ТОРГОВЛИ "); 
          Sleep (Timeout_Trade*60000);
         } 
        RefreshRates();
       }
    }
    if(SchSellLots>0 || SchSellLots777>0)
     {
      if((SchBuyStop_b(MAGIC)>0 && (maM_fast>maM_slow || maH_fast>maH_slow || maOtk_fast>maOtk_slow)) ||
         (SchBuyStop_b(MAGIC)>0 && (speedup_H1_ff>(10000-H1_MA_factor_ff) || speedup_H1_ss>(10000-H1_MA_factor_ss) ||
                                    speedup_M15_ff>(10000-M15_MA_factor_ff) || speedup_M15_ss>(10000-M15_MA_factor_ss))) ||
         (SchBuyStop_b(MAGIC)>0 && ((maHXX<=H1_point_min  && speedup_H1_ss>(10000-H1_MA_factor_ss)) || maHXX>=H1_point_max)) ||
         (SchBuyStop_b(MAGIC)>0 && Fractal_fibo_sell>Fibo_prohibit) ||
         (SchBuyStop_b(MAGIC)>0 && TF1B>0 && TF2B>0 && timf1b!=0 && timf2b!=0 && TF1B>TF2B) ||
         (SchBuyStop_b(MAGIC)>0 && TF1B>0 && TF2B>0 && timf1b!=0 && timf2b!=0 && TF1B<=TF2B && Bid>price_B))
       {
        while (SchBuyLots+SchBuyLots777>0 && SchSellLots+SchSellLots777>0)
         {
          CloseVstrechnye(MAGIC);
          return (0);
         }
        CloseAll_bMAGIC(Proskalz, MAGIC);
        CloseAll777_b(Proskalz);
        DeleteOtlozhMAGIC(MAGIC);
        DeleteOtlozh777();
        Alert("Позиции Sell закрыты согласно рыночной ситуации.");
        RefreshRates();
        if (Timeout_Trade>0 && ProfHist<=0)
         {
          Comment (SMB,": ТАЙМАУТ ТОРГОВЛИ "); 
          Sleep (Timeout_Trade*60000);
         } 
        RefreshRates();
       }
     } 
   }
  //===============================================================================================  
 

Qual é a diferença entre chamar funções da dll no MT4 e MT5? Eu compenso dll, funciona bem em MT5, mas em MT4 me dá erro:

2011.10.06 23:00:34 Solaris executor EURUSDm,M1: não pode chamar a função 'InfoOfTrading' da dll 'Solaris.dll'(erro 127)

Que diabos é isto? - Eu tenho estado a pensar. :(

 
fazer um projeto Win32 dll
 
sergeev:
fazer um projeto Win32 dll
Mas funciona bem no MT5!
 

Vou continuar com minha pergunta acima.

Eu também usei o código acima em outro EA. A situação com aquela EA foi semelhante à descrita acima, com a diferença de que as condições do código foram cumpridas exatamente o contrário (na demonstração, novamente, tudo estava funcionando sem erros). Mas um dia o testador funcionou corretamente e o código estava funcionando corretamente de acordo com as condições dadas a ele.

É um verdadeiro misticismo.

Além disso, às vezes não consigo otimizar meu código por alguma razão. Às vezes, ele recalcula algo, mas zera todos os resultados por alguma razão. Isso acontece em terminais de diferentes corretores. Entretanto, quando todas as estrelas e constelações no céu provavelmente convergem, tudo começa a funcionar como deveria.

Razão: