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

 
E_mc2 >> :

Se você está preocupado com o excesso de sono, então mude esta linha

\ se ( WarningMode>0 ) PlaySound(soundfile); {\i1}

indicador para este

Se ( WarningMode>0 && shift==0) GlobalVariableSet("Alarme",1); \\i1

e criar um indicador como este

int start()
{if(GlobalVariableGet("Будильник"))PlaySound("news.wav");
return(0);
}

E quando você adormece, você não apenas ajusta o indicador principal, mas também o despertador.

O despertador pode ser desligado manualmente, alterando o valor 0 na variável do despertador através da tecla F3.

 
Urain >> :

Para que você precisa dele? Conte-me mais sobre isso, talvez haja uma solução, e você não sabe como fazer as perguntas certas para que as pessoas entendam.

Eu tenho duas soluções para o que você escreveu, levaria muito tempo para escrever duas de uma só vez :)

..

A propósito, é melhor anexar códigos tão longos como um arquivo.

E para o código há um botão especial SRC

Sim, eu preciso dele para não perder o sinal). Somente quando o alarme dispara, é fácil perdê-lo especialmente à noite((( E o que significa - alarme???? O que vai acontecer?

Mudei a linha... Criei um novo indicador Alarme..... mas não entendo... funciona o tempo todo, independentemente de o indicador emitir um sinal ou não... Mesmo que não haja sinal do indicador, o despertador bipa continuamente)))) Não há sinal, mas o despertador funciona...

 
E_mc2 >> :

Eu preciso dele para não perder o sinal)) Só soa um alerta uma vez, fácil de perder especialmente à noite((( E o que significa - alarme???? O que vai acontecer?

Mude a linha em seu indicador como descrito acima.

Compilar e executar o indicador anexo.

Tocará a cada tique, até desativar o indicador ou reiniciar a variável global "Alarme".

Arquivos anexados:
wxinptvxq.mq4  1 kb
 

Consultor Especialista em Média Móvel .

Eu inseri as funções KimIV para abrir uma ordem (GetSizeLot() OpenPosition CorrectTF(int TimeFrame=0) GetNameOP(int op) ModifyOrder() ExistPositions() Message())). Ainda não havia chegado ao fechamento. Eu criei sua própria função de dados indicadores vazios Indicat_Var(), para ter dados indicadores em um lugar e para usá-los em qualquer lugar do programa.

Quando você acessa com a função CheckForOpen() para Indicat_Var() tudo está bem, mas quando você acessa com a função CheckForClose() para Indicat_Var() as ordens não são fechadas Não entendo porque

Também acho que as funções CalculateCurrentOrders(string symbol) e ExistPositions() se duplicam.

Por favor, ajude-me a entender

Arquivos anexados:
magkimiv.mq4  15 kb
 

A função de cálculo do lote foi originalmente fornecida na EA. Se você adicionou outro(GetSizeLot()), então (pelo menos) remova o original - LotsOptimized()

//------------------------------------------------

De fato. Funções que determinam a presença de posições em aberto se duplicam.

Um deles pode ser removido. (Saiba como eles diferem, e qual você precisa mais!)

//--------------------------------------------

Ver https://www.mql5.com/ru/articles/1385

Ali, exatamente ali, há uma modificação deste EA com comentários russos no código.

Modificação, - Exatamente, por fechamento.

 

Marcamos os PONTOS ABERTOS e FECHADOS na tabela?

Pergunta para os profissionais - existe tal indicador ou roteiro,

que desenha os pontos de abertura e fechamento no gráfico?

de uma ordem? Ela os conecta com uma linha,

O vermelho é uma perda. Útil para analisar erros sobre a história!

 

Acho que esta pergunta já foi feita a você.

Você pode arrastar uma negociação diretamente do histórico da conta para o gráfico relevante com seu mouse.

E você terá o que está procurando.

Eu vi o roteiro em algum lugar. Acho que I.Kim tinha um roteiro assim.

http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=fileinfo&id=32

 

Pedir ajuda aos conhecedores do Cursor com um preço,

Obrigado!

 

Por favor, ajude-me a entender porque minhas ordens abertas não fecham quando a tendência muda (condições abertas). E como posso corrigir este erro!

O código é assim para mim:

extern int TP=40;            //уровень Take Profit
extern int SL=0;              //уровень Stop Loss
extern double Lots1=0.2;      //лот основной сделки
extern double Lots2=0.1;      //лот вспомогательных сделок 
extern int slippage=2;        //проскальзование
int MagicNumber1=5345; //магическое число сделки BUY
int MagicNumber2=1612; //магическое число сделки SELL
// переменная для пятизнаков
int BrokerDecimal = 1;
// и просто нужные переменные (типа флажки)
double ticketbuy;
double ticketsell;



int init()
  {
  // Если брокер дает котировки по валюте с точностью в пять или три знака - пипс будет меньше стандартного в 10 раз - вводим множитель   
  if(Digits==3 || Digits==5) BrokerDecimal=10; 
  // Перемножить все уровни в пипсах на множитель
  SL           = SL * BrokerDecimal; 
  TP           = TP * BrokerDecimal;
  return(0);
  }

int start()
  {
  // Рассчеты и анализ индикаторов
  double jaw=iAlligator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN, MODE_GATORJAW,1); //синяя линия (челюсть)
  double teen=iAlligator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN, MODE_GATORTEETH,1);//красная линия (зубы)
  double lips=iAlligator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN, MODE_GATORLIPS,1);//зеленая линия (губы)
  
  double lastClose=iClose(NULL,0,1);
  
  
  // Собственно тело программы  
  if((OrderSelect( ticketbuy, SELECT_BY_TICKET, MODE_TRADES) == false || OrderCloseTime() > 0 )
    && lips> jaw && lastClose> lips) // условие выставления ордеров БАЙ
    SEND_BUY(); // вынесем "модуль" выставления ордера бай - добавить внизу
  
  if((OrderSelect( ticketsell, SELECT_BY_TICKET, MODE_TRADES) == false || OrderCloseTime() > 0 )
    && jaw> lips && lastClose< jaw) // условие выставления ордеров СЕЛЛ
    SEND_SELL(); // вынесем "модуль" выставления ордера сэлл - добавить внизу
  
  if (OrdersTotal()>=1)
      {
        if(OrderSelect(0, SELECT_BY_POS, MODE_TRADES))
          {
            if(OrderType()==OP_BUY)
              {
                if(( lips== jaw || lips== teen) && lastClose== lips) // условия закрытия сделки БАЙ
                  while(OrdersTotal()>0)
                    {
                      CloseDirect(0,"Принудительное закрытие сделки при обратном движении рынка, ticket=");
                    }
              }
            if(OrderType()==OP_SELL)
              {
                if(( jaw== lips || jaw== teen) && lastClose== jaw) // условия закрытия сделки СЕЛЛ
                  while(OrdersTotal()>0)
                    {
                      CloseDirect(0,"Принудительное закрытие сделки при обратном движении рынка, ticket=");
                    }
              }
          }
        else
          {
            Print("ОШИБКА в Start()(блок закрытия при обратном движении) :OrderSelect() - ",GetLastError());
            return(-1);
          }
      }
         
  return(0);
  }

// "модуль" выставления ордера бай
void SEND_BUY()
  {
  double sl_buy;
  if(! SL)
  { 
  sl_buy=0;
  }
    else
    {
    sl_buy=Ask- SL*Point;
    }
    ticketbuy=OrderSend(Symbol(),OP_BUY, Lots1,Ask, slippage, sl_buy,Ask+ TP*Point,"take_trend", MagicNumber1,0,Blue);
          if( ticketbuy == -1)
          {
          Alert(Symbol(),"ошибка:бай", GetLastError());
          return(-1);
          }
            if( ticketbuy > 1)
            Alert (Symbol(),"бай - ок !");
  }

// "модуль" выставления ордера сэлл
void SEND_SELL()
  {
  double sl_sell;
  if(! SL)
  { 
  sl_sell=0;
  }
   else
   {
   sl_sell=Bid+ SL*Point;
   }
   ticketsell=OrderSend(Symbol(),OP_SELL, Lots1,Bid, slippage, sl_sell,Bid- TP*Point,"take_trend", MagicNumber2,0,Red);
         if( ticketsell == -1)
         {
         Alert(Symbol(),"ошибка:сэлл", GetLastError());
         return(-1);
         }
           if( ticketsell > 1)
           Alert (Symbol(),"сэлл - ок !");
   }

// МОДУЛЬ ЗАКРЫТИЯ СДЕЛОК ПРИ СМЕНЕ ТРЕНДА 
void CloseDirect(int cntr, string comm)
  {
    double closeprice;
    if(OrderSelect( cntr, SELECT_BY_POS, MODE_TRADES))
      {
        RefreshRates();
        if (OrderType()==OP_BUY)
          closeprice=Bid;
        else
          closeprice=Ask;
        if (OrderClose(OrderTicket(),OrderLots(), closeprice,10,Green))
        {
          Print( comm, OrderTicket());
        }
        else
          {
            Print("ОШИБКА в CloseDirect():OrderClose() - ",GetLastError());
          }
      }
    else
      {
        Print("ОШИБКА в CloseDirect():OrderSelect() - ",GetLastError());
      }
  }
 

Você pode me dizer, por favor, como obter um sinal de um rsi suavizado? (MA => RSI).

Razão: