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 448

 
Forexman77:
Como implementá-la de forma aproximada? As outras funções com as quais estou familiarizado, mas com ordens e arrays que ainda não tenho um bom entendimento.

É algo assim, eu acho que

 // Учёт ордеров
   Symb=Symbol();                               // Название фин.инстр.
   Total=0;                                     // Количество ордеров
   int Ticket[5];
   ArrayInitialize(Ticket,0);
   for(int i=1; i<=OrdersTotal(); i++)          // Цикл перебора ордер
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:
         if (OrderSymbol()!=Symb)continue;      // Не наш фин. инструм
         if (OrderType()>1)                     // Попался отложенный
           {
            Alert("Обнаружен отложенный ордер. Эксперт не работает.");
            return;                             // Выход из start()
           }
         Total++;                               // Счётчик рыночн. орд
         if (Total>5)                           // Было не более одного орд, стало не более пяти
           {
            Alert("Несколько рыночных ордеров. Эксперт не работает.");
            return;                             // Выход из start()
           }
         Ticket[Total-1]=OrderTicket();                  // Номер выбранн. орд.
         Tip   =OrderType();                    // Тип выбранного орд.
         Price =OrderOpenPrice();               // Цена выбранн. орд.
         SL    =OrderStopLoss();                // SL выбранного орд.
         TP    =OrderTakeProfit();              // TP выбранного орд.
         Lot   =OrderLots();                    // Количество лотов
        }
     }
   // Открытие ордеров
   while(true)                                  // Цикл закрытия орд.
     {
      if (Total < 5 && Opn_B==true)     // Открытых орд. нет +. Было Total < 1, стало Total < 5
        {                                       // критерий откр. Buy
         RefreshRates();                        // Обновление данных
         SL=Bid - New_Stop(StopLoss)*Point;     // Вычисление SL откр.
         TP=Bid + New_Stop(TakeProfit)*Point;   // Вычисление TP откр.
         Alert("Попытка открыть Buy. Ожидание ответа..");
         Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP);//Открытие Buy
         if (Ticket > 0)                        // Получилось :)
           {
            Alert ("Открыт ордер Buy ",Ticket);
            return;                             // Выход из start()
           }
         if (Fun_Error(GetLastError())==1)      // Обработка ошибок
            continue;                           // Повторная попытка
         return;                                // Выход из start()
        }
   // Закрытие ордеров
      if (Tip==0 && Cls_B==true)                // Открыт ордер Buy и есть критерий закр
        {
          for(i=0;i<5;i++)                             
          {
            if (Ticket[i]==0) continue;           

            Alert("Попытка закрыть Buy ",Ticket[i],". Ожидание ответа..");
            RefreshRates();                        // Обновление данных
         
            Ans=OrderClose(Ticket[i],Lot,Bid,2);      // Закрытие Buy

            if (Ans==true)                         // Получилось :)
            {
               Alert ("Закрыт ордер Buy ",Ticket[i]);
            }

            if (Fun_Error(GetLastError())==1)      // Обработка ошибок
            {
               i--;
               continue;                           // Повторная попытка
            }

         }
 
Vitek2010:
Não, não explica. Vou explicar - seu fórum é como uma esperança para o último reduto competente de prog. e inserção de tamanho - é assim que a redação PERÍODO_W1 o vê, mas nem o uso de tamanho nem o uso de dados fixos na forma de datas obtêm qualquer efeito desejado. Eu postei uma pergunta específica sobre sexta-feira - a propósito seu código não compila porque diz 'versão' - propriedade desconhecida, então se você não sabe como colocar DayOfWeek e 5 (número de sexta-feira) no código, outras opções não ajudarão .


Então você está dizendo a coisa errada.

Arquivos anexados:
vitek2010.mq4  2 kb
 

Boa tarde a todos. Estou afixando um indicador que infelizmente fica pendurado e não desenha setas a tempo, mas somente quando se atualiza o gráfico... Mudança para diferentes TFs.

Se alguém pode fazer a própria atualização do indicador no final de cada vela..., bem, digamos 5-10 segundos antes da vela se fechar? Ou talvez haja outra maneira de resolver este problema?

Obrigado de antemão.

Arquivos anexados:
 
Vinin:


Então você está dizendo a coisa errada.


Eu coloquei no indicador - o que ele mostra - não é claro. minha variante tinha a condição de continuação ou mudança no movimento anterior . ou seja, abaixo ou acima da linha zero . e você tem tudo acima e em todas as semanas não é tão simples . você não deve se desviar da (minha) variante base e simplificar as coisas . você precisa fazer com base no meu indicador . Sinceramente.
 
alsu:

Algo assim, acho eu.


Colocando as linhas
int Ticket[5];
ArrayInitialize(Ticket,0);

em vez deint Ticket; os erros saem:

'=' - parêntese quadrada esquerda esperada para array('=' - parêntese quadrada esquerda, esperada para array)

>' - parêntese quadrada esquerda esperada para matriz ('=' - parêntese quadrada esquerda esperada para matriz)

>' - ficha inesperada ('>' - ficha inesperada)

')' - cessão esperada('' - cessão esperada )

"continuar" - "quebrar" ou "continuar" usado somente dentro de alguns laços )

e muito mais.

 

Por que o conselheiro abre um número infinito de pedidos, me ajuda a consertá-los

obrigado

duplo tp externo = 100;
duplo l externo = 0,1;




int start()
{
// 1.3600
if(OrderMagicNumber() ==1 >0){retorno;}
senão
{
OrderSend ("EURUSD",OP_BUYLIMIT,l,1.36000,5,0,1.36000+tp*Point,"my order",1);
OrderSend ("EURUSD",OP_BUYSTOP,l,1.36000,5,0,1.36000+tp*Point,"my order",1);
}
if(OrderMagicNumber() ==2 >0){retorno;}
senão
{
OrderSend ("EURUSD",OP_SELLLIMIT,l,1.36000,5,0,1.36000-tp*Point,"my order",2);
OrderSend ("EURUSD",OP_SELLSTOP,l,1.36000,5,0,1.36000-tp*Point,"my order",2);
}
retornar;
}

 
addict:

Por que o conselheiro abre um número infinito de pedidos, me ajuda a consertá-los

obrigado

duplo tp externo = 100;
duplo l externo = 0,1;




int start()

adicionar if(OrdensTotal()==0)




// 1.3600
if(OrderMagicNumber() ==1 >0){retorno;}
senão
{
OrderSend ("EURUSD",OP_BUYLIMIT,l,1.36000,5,0,1.36000+tp*Point,"my order",1);
OrderSend ("EURUSD",OP_BUYSTOP,l,1.36000,5,0,1.36000+tp*Point,"my order",1);
}
if(OrderMagicNumber() ==2 >0){retorno;}
senão
{
OrderSend ("EURUSD",OP_SELLLIMIT,l,1.36000,5,0,1.36000-tp*Point,"my order",2);
OrderSend ("EURUSD",OP_SELLSTOP,l,1.36000,5,0,1.36000-tp*Point,"my order",2);
}
retornar;
}

 
denis77515:

adicionar if(OrdensTotal()==0)

a ordem de compra é aberta por um, e para venda - mais uma vez, um número infinito de ordens
 

Boa tarde.

Eu não entendo como isto funciona

03:00:24 '9473965': ordem de venda 0,01 GBPUSD abertura a 0,00000 sl: 1,65314 tp: 0,00000 falha [Inválido S/L ou T/P]

com este código

RefreshRates();
tick=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),30,ssll,0,CMM,MAGIC,0,Blue);
     
porque o preço de abertura é zero
 

Boa tarde.

Você pode ajudar a criar uma função desse tipo?

Quantas barras do gráfico atual desde o último tempo conhecido do servidor (TimeCurrent()) até um determinado dia até a primeira barradesse dia(TimeDay(Time[80])?

Agradecemos antecipadamente!

Razão: