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

 

Amigos, vocês podem me dizer o que eu preciso fazer para obter um preço de 5 dígitos? Por exemplo, estou escrevendo um caso como este:

int Quant_Bars=15;

int Ind_max =ArrayMaximum(High,Quant_Bars,1);

double Maximum=High[Ind_max];

Alert("Максимум = ",Maximum);

E imprime o preço com quatro casas decimais.

Agradecemos antecipadamente))

 
rid >> :

E você coloca esta função em que lugar do código?

Estou na fase inicial de escrever meu código... Então não há lugar para colocá-lo em....

Você pode me explicar de forma infantil como calcular o número de pedidos com número mágico?))


 
Alex5757000 писал(а) >>

Amigos, vocês podem me dizer o que eu preciso fazer para obter um preço de 5 dígitos? Por exemplo, estou escrevendo um caso como este:

int Quant_Bars=15;

int Ind_max =ArrayMaximum(High,Quant_Bars,1);

double Maximum=High[Ind_max];

Alert("Максимум = ",Maximum);

E imprime o preço com quatro casas decimais.

Agradecemos antecipadamente))

Você já tentou DoubleToStr()?

 
ArtY0m писал(а) >>

Estou na fase inicial de escrever meu código... Então não há lugar para colocá-lo em....

Você pode me explicar de forma infantil como calcular o número de pedidos com número mágico?))


A maneira mais fácil é olhar aqui https://book.mql4.com/ru/

 

Por favor, me ajude. Eu não entendo nada.

Se durante o teste visual do EA 1.mq4 (anexo) eu colocar um indicador 3-cci (anexo) no gráfico, então, como parece, com exatamente os mesmos parâmetros dos sinais cci calculados do indicador e os cci reais (texto objeto no canto superior direito) não são os mesmos.

POR QUÊ?

E, por alguma razão, os alertas neste indicador não funcionam.

Arquivos anexados:
pack_1.rar  2 kb
 
Não consigo encontrar uma referência a um indicador que desenha uma vela de tempo alto em um gráfico de tempo baixo (ou seja, as duas velas ao mesmo tempo). Quem pode me dizer?
 
ArtY0m >> :

Estou na fase inicial de escrever meu código... Então não há lugar para colocá-lo em....

Você pode me explicar de forma infantil como calcular o número de pedidos com número mágico?)


Um Expert Advisor (em sua forma mais simples) é composto de várias partes.

Primeiro, os parâmetros externos e as variáveis globais são definidos.

Depois disso, as funções de inicialização e deinicialização geralmente vêm.

Depois disso, é executada a função START, na qual é definido o principal algoritmo de trabalho do Expert Advisor.

Em segundo lugar, as funções auxiliares, definidas pelo usuário, vêm em seguida.

Estas funções definidas pelo usuário são utilizadas (chamadas) na função START, conforme necessário.

Aqui está algo assim:

//+------------------------------------------------------------------+
//|                                                    ZZ expert.mq4 |
//|                                        Copyright © 2008, Rid     |
//|                                            Rid                   |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, Rid ."
#property link      "Rid "

extern string     _  = "---- ОБЩИЕ ПАРАМЕТРЫ -----"; 
extern int       MAGIC = 777;
extern double    lots=0.1;

extern string     __  = "---- ПАРАМЕТРЫ BUY -----"; 
extern int       StopLossBuy=110;
extern int       TakeProfitBuy=55;

extern string     ___  = "---- ПАРАМЕТРЫ SELL -----"; 
extern int       StopLossSell=110;
extern int       TakeProfitSell=55;

extern string    _____= "Параметры функции ТРЕЙЛИНГ СТОП";
extern bool   UseTrailing = true;//Выключатель трейлинг стопа
extern int    MinProfit = 25;    //порог включения трейлин стопа
extern int    TrailingStop = 25;// величина трейлинг стопа
extern int    TrailingStep = 5; // шаг трейлинг стопа


int ticket;
bool  gbDisabled  = False;             // Флаг блокировки советника
bool  gbNoInit    = False;             // Флаг неудачной инициализации
//-- Подключаемые модули --
#include <stderror.mqh>
#include <stdlib.mqh>

//+------------------------------------------------------------------+
//| initialization function                                          |
//+------------------------------------------------------------------+
int init()
  {
gbNoInit= False;  
if (!IsTradeAllowed()) {
    Message("Для нормальной работы советника необходимо\n"+
            "Разрешить советнику торговать");
    gbNoInit= True; return;
  }
  if (!IsLibrariesAllowed()) {
    Message("Для нормальной работы советника необходимо\n"+
            "Разрешить импорт из внешних экспертов");
    gbNoInit= True; return;
  }
  }

//жжжжжжжжжжжжж ФУНКЦИЯ СТАРТ жжжжжжжжжжжжжжжжжж+

int start()
  {
//Отображаем на графике число открытых позиций
// с задааным магиком "MAGIC"
Comment("Число бай позиций = ", NumberOfPositions(NULL,OP_BUY, MAGIC), "\n",
"Число селл позиций = ", NumberOfPositions(NULL,OP_SELL, MAGIC),"\n",
"Хи-Хи, тра-ля-ля");

if ( UseTrailing) TrailPositions(); // выключатель трейлинг стопа 
  
//-------- открываем позиции 
if ( NumberOfPositions(NULL, OP_BUY, MAGIC)< 1){//если нет открытыз бай-поз
//открываем позицию бай:
ticket=OrderSend(Symbol(),OP_BUY, lots,Ask,3,Ask-Point* StopLossBuy,
Ask+Point* TakeProfitBuy,"Хи-Хи, тра-ля-ля", MAGIC,0,Blue);
                                             } 
//--------------------------------------------------------------
    return(0);//конец функции int start()
  }
//жжжжжжжжжжж КОНЕЦ ФУНКЦИИ СТАРТ жжжжжжжжжжжжжжжж+


//жжжжжжж ПОЛЬЗОВАТЕЛЬСКИЕ ФУНКЦИИ жжжжжжжжжжжжжжж+
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает количество позиций.                                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int NumberOfPositions(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), kp=0;

  if ( sy=="0") sy=Symbol();
  for ( i=0; i< k; i++)                                    {
    if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES))      {
      if (OrderSymbol()== sy || sy=="")                   {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if ( op<0 || OrderType()== op)                   {
            if ( mn<0 || OrderMagicNumber()== mn) kp++;
          }}}}}  return( kp);}

//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж+
void TrailPositions() // функция трейлинг стоп
{
  int Orders = OrdersTotal();
  for (int i=0; i< Orders; i++) {
    if (!(OrderSelect( i, SELECT_BY_POS, MODE_TRADES))) continue;
    if (OrderSymbol() != Symbol()) continue;    
     if (OrderType() == OP_BUY && OrderMagicNumber()== MAGIC)  {
      if (Bid-OrderOpenPrice() > MinProfit*Point) {
        if (OrderStopLoss() < Bid-( TrailingStop+ TrailingStep-1)*Point) {
          OrderModify(OrderTicket(), OrderOpenPrice(), Bid- TrailingStop*Point,
                                                     OrderTakeProfit(), 0, Blue);
        } } }
    if (OrderType() == OP_SELL && OrderMagicNumber()== MAGIC)  {
      if (OrderOpenPrice()-Ask > MinProfit*Point) {
        if (OrderStopLoss() > Ask+( TrailingStop+ TrailingStep-1)*Point 
                                                       || OrderStopLoss() == 0) {
          OrderModify(OrderTicket(), OrderOpenPrice(), Ask+ TrailingStop*Point,
                                                      OrderTakeProfit(), 0, Blue);
        } } }      } }

//+----------------------------------------------------------------------------+
//|  Вывод сообщения в коммент и в журнал                                      |
//+----------------------------------------------------------------------------+
void Message(string m) {
  Comment( m);
  if (StringLen( m)>0) Print( m);
}        

Espero que você não tenha nenhuma pergunta como esta agora!

 

Mais uma pergunta: é possível colocar um pedido pendente a partir de uma posição aberta, não a partir do preço atual?

Obrigado antecipadamente)

 

Você pode fazer isso, é claro. Só precisamos ter certeza de que esta ordem pendente seja colocada a tal distância do preço atual de modo a atender aos níveis de parada estabelecidos pelas corretoras.

Por exemplo, se um pedido pendente for colocado a 100 pips de distância do preço de abertura do último pedido, mas se aproximar demais do preço atual, o registro retornará um erro 130 para abrir o pedido.

 
rid >> :

Você pode fazer isso, é claro. Só precisamos ter certeza de que esta ordem pendente seja colocada a tal distância do preço atual de modo a atender aos níveis de parada estabelecidos pelas corretoras.

Por exemplo, se a ordem for definida à distância de 100 pontos do preço de abertura da última posição, mas se aproximar demais do preço atual, o registro retornará um erro 130 para abrir a ordem.

Como, se não é um segredo?