[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 43

 
r772ra:
Alternativamente, você pode definir a qualquer momento após a chegada do sinal
Minha variante implica um limite (após a chegada do sinal) para realizar algumas ações (neste caso, para abrir uma ordem) de 1 minuto. E depois: se você está atrasado, você está atrasado. Suponha que a conexão com o servidor foi interrompida logo após a recepção do sinal e retomada em uma hora. Por que você abriria um pedido uma hora depois? ;)
 
TarasBY:

Em uma variável global, escreva o valor de tempo no momento do sinal:

e depois faça uma contagem regressiva de seu minuto (você pode fazer isso):

Esta é uma das soluções para acompanhar o tempo após a ocorrência de um evento.


Infelizmente não funciona, após um minuto a linha de apoio e a linha de resistência devem ser desenhadas como uma ação, mas por alguma razão elas não estão na tabela. Por favor, dê uma olhada no código, onde está o erro?


bool  Fact_1 = false;                    // Глобальная перемен для бай.    
bool  Fact_2 = false;                    // Глобальная перемен для бай
bool  Fact_3 = false;                    // Глобальная перемен для бай

double support;
double resist;

 int timeFrame = 5;
 int numBars = 15;
 datetime gdt_TimeSignal;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----

  ObjectsDeleteAll();  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----


   //---------------------------------------------------------------------------
if (Fact_3==true)                            //Если событие уже..
          
                                              //..было, то выходим
     return(0);
 
//----

  //---- БЛОК ОТКРЫТИЯ  BUY--------------------------------------------------------------
 
 if (iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,2)<iMA(NULL,PERIOD_M5,200,0,MODE_EMA,PRICE_CLOSE,0)&&
iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,1)>=iMA(NULL,PERIOD_M5,200,0,MODE_EMA,PRICE_CLOSE,0))//если МА50 пересекает МА200 снизу вверх по M5
Fact_1 = true;       // Произошло событие 1  
//-
if (Fact_1 == true &&  Low[0]<= iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,0))//если цена опустилась до МА50
 Fact_2 = true; // Произошло событие 2  


//if (Signal) gdt_TimeSignal = TimeCurrent();
if (Fact_2) gdt_TimeSignal = TimeCurrent();


  if (gdt_TimeSignal != 0) if (iBarShift (NULL, 1, gdt_TimeSignal) == 1)
    {
        //---- Открываете ордер
       // OrderSend ();
  //---------------------------------------------------------------------------------    
{
// Определяем линии поддержки\сопротивления
  support = 10000;
  resist = 0;
 
  for(int u = 1;u<=numBars;u++)
  {
   if(support>iLow(Symbol(),timeFrame,u))
     support = iLow(Symbol(),timeFrame,u);
   if(resist<iHigh(Symbol(),timeFrame,u))
     resist = iHigh(Symbol(),timeFrame,u);
  }   
   ObjectSet("lineSupport",OBJPROP_PRICE1,support);
  ObjectSet("lineResist",OBJPROP_PRICE1,resist);
 
 }


 //----
  {
    ObjectCreate("lineSupport",OBJ_HLINE,0,0,0);
    ObjectSet("lineSupport",OBJPROP_COLOR,Blue);
    
    ObjectCreate("lineResist",OBJ_HLINE,0,0,0);
    ObjectSet("lineResist",OBJPROP_COLOR,Red);
    }
//-------------------------------------------------------------
 
        gdt_TimeSignal = 0;
    }



//что сюда добавить что бы линии появившись, оставались на месте?




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

 
TarasBY:

Há aqui um absurdo escrito:

Leia sobre o iCustom().


Obrigado. Eu li. Talvez eu deva procurar um exemplo. Não entendo merda nenhuma.
 
Andrey-F:

Por favor, me ajude, me diga como implementar o código EA em duas ou três linhas:

Quando chega um sinal (por exemplo, cruzamento de dois MAs)

1. Expert Advisor determina a hora do sinal (em horas, minutos), armazena-o;

2. Contagem regressiva de um minuto.

Então o Consultor Especialista está pronto para executar uma ação (por exemplo, abrir uma ordem).

Tudo, OBRIGADO, tudo está funcionando como deveria, eu simplesmente não inseri o sinal da maneira correta.
 

Não consigo entender a publicação do indicador na Kodabase. Como se um status estivesse pronto para publicação, ou seja, logicamente, ter que esperar até que o moderador coloque no acesso geral este peru, mas já se passaram alguns dias e nenhum resultado. Qual pode ser o problema?

ps. esta é minha primeira publicação do código aqui

 
madzx:

Sim, eu acho que sim! Eu realmente tenho o jeito, eu posso fazer facilmente sem escrever em disco!
Estou apenas amarrando as rédeas de um terminal padrão a outro
Estou apenas amarrando as rédeas de um terminal padrão para outro).

Perdoe-me, mas vamos ter que fazer de qualquer forma.
porque, como disse o senhor Freddie Mercury.
O espetáculo deve continuar!

Portanto, vamos esclarecer as especificações.
Pelo que entendi:

1. Por um lado, tenho um monte de janelas abertas (10 peças) com qualquer conjunto de gráficos de pares de moedas

2. Em cada gráfico está um cavalo de trabalho - um Expert Advisor, que faz algo.

3. a conta deve satisfazer as seguintes condições:

3.1 O número total de ordens de mercado aberto na conta não deve exceder 5.
Ordens do tipo cavalo (pendentes) não devem ser contadas como tal (acho que sim, mas você não as especificou)
3.2 Com base em um conjunto de gráficos sobre a conta, uma certa lista de símbolos é formada,

O tipo de instrumentos financeiros negociados e cada um dos instrumentos não pode ter mais do que uma ordem aberta de cada vez.

a qualquer momento não pode ter mais do que uma ordem em aberto.

---------------------------------------------------------

Algo parecido com isto! Veja se tudo está correto!
Então, por favor nos diga em que idioma deve ser feito (como mq4 ou mq5)
e lista de instâncias para as quais você negocia - é fixa ou diferente a cada vez

Acho que deve ser uma pasta curta no texto de cada EA

(que você pode então arquivar como um procedimento, se desejar) permitirá

decidir sobre as permissões atualmente existentes para quaisquer ações ...

Eu gostaria de tirar minha licença agora que são 5 da manhã :))

madzx




Obrigado por sua participação. Mas acho que não há nenhuma necessidade.

O problema foi resolvido da seguinte forma, como sugerido pelo r772ra:

Ou talvez assim :

if(NumberOfPositions("EURUSD")==0 && NumberOfPositions()<5)
E aqui está uma função
 
Roman.:

Não vagueie pelo meio do nada. Você pode fazer transações de exp para símbolos mágicos únicos (atribua sua ordem mágica a SUA exp sobre os símbolos selecionados). Em seguida, usando o operador condicional se - caso contrário, você conectar o filtro por símbolos e símbolos mágicos, usando esta função da Kim I.V. com diferentes valores de entrada:

Função NumberOfOrders().

. É isso aí.




Obrigado, encontrei uma solução mais simples.
 
Kobalerro:

Obrigado, uma solução mais simples foi encontrada.

OK! Obrigado por ter lançado a solução.
 
Kobalerro:

Obrigado por sua participação. Mas acho que não há mais nada a fazer.

O problema foi resolvido da seguinte forma, como sugerido pelo r772ra:

Ou talvez assim :

E aqui está a função

OK! Vá com a tendência e tenha uma boa caçada!!!

madzx
 
Kobalerro:

Obrigado por sua participação. Mas acho que não há mais nada a fazer.

O problema foi resolvido da seguinte forma, como sugerido pelo r772ra:

Ou talvez assim :

E aqui a função

Se você gosta desta solução, você pode simplificar ainda mais o código:

if(NumberOfPositions("EURUSD")==0 && OrdersTotal()<5)

Mas provavelmente é mais correto escrevê-lo desta forma:

if(NumberOfPositions(Symbol())==0 && OrdersTotal()<5)

Se não for "infantil", então Magik deve ser usado (mais cedo ou mais tarde, você vai querer abrir um pedido manual ou colocar outro EA perto dele, também):

if(NumberOfPositions(Symbol(), Magic)==0 && NumberOfPositions("", Magic)<5)

Neste caso, todos os EAs devem ter o mesmo Magik e não se esqueça de usar filtros no Magik e o símbolo do gráfico durante outras operações com a lista de pedidos:

    for (int li_pos = OrderTotal() - 1; li_pos >= 0; li_pos--)
    {
        if (!OrderSelect (li_pos, SELECT_BY_POS, MODE_TRADES)) continue;
        if (OrderMagicNumber() != Magic) continue;
        if (Symbol() != OrderSymbol()) continue;
        //---- дальнейшие опреации (модификация, удаление и т.д.)
    }

Espero que você tenha declarado o magik em variáveis externas, ou como uma constante:

#define Magic  555