Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1809

 
Alexander Avksentyev #:

Tudo o que existe. Obrigado por sua ajuda.

#property strict
//--- input parameters
input int      Magic            =12345;
input int      iTakeProfit      =10;
input int      iTrailStart      =10;
input int      iTrailDist       =10;
input int      iTrailStep       =10;
input int      iTrailTakeProfit =10;
input int      iStep            =10;
input int      iSlippage        =5;
input double   Lot              =0.01;

int      Login = 4950287;
datetime time  = D'2022.01.01 00:00:00';
string   name  = "AutoP_v.3.0";
datetime time1 = 0;
double   price, TP, lastlot, minlot;
int      Forder;
int      TakeProfit,TrailStart,TrailDist,TrailStep,TrailTakeProfit,Step,Slippage;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
     if(AccountNumber() != Login)
       {
        int close = MessageBox("Неверный номер счёта","Ошибка",MB_OK|MB_ICONSTOP);
        return(INIT_FAILED);
       }else (AccountNumber() == Login);
             {
              int close = MessageBox("Проверка прошла успешно.Экcперт может приступить к работе.","Инициализация",MB_OK|MB_ICONEXCLAMATION);
             }
 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx//  
     if (TimeCurrent() > time)
        {
         int close = MessageBox("Время работы закончилось!!!","Время работы",MB_OK|MB_ICONSTOP);
         return(INIT_FAILED);
        }else(TimeCurrent() < time);
             {
              int close = MessageBox("Проверка времени работы прошла успешно.Эксперт может приступить к работе!","Время работы",MB_OK|MB_ICONEXCLAMATION);
             }
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx//
      TakeProfit     =iTakeProfit;
      TrailStart     =iTrailStart;
      TrailDist      =iTrailDist;
      TrailStep      =iTrailStep;
      TrailTakeProfit=iTrailTakeProfit;
      Step           =iStep;
      Slippage       =iSlippage;
     if(Digits == 3 || Digits == 5)
       {
        TakeProfit      *=10;
        TrailStart      *=10;
        TrailDist       *=10;
        TrailStep       *=10;
        TrailTakeProfit *=10;
        Step            *=10;
        Slippage        *=10;
       }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if (CountTrades() == 0)
      {
      double body = Close[1] - Open[1];
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx//
//Открытие позиции Buy
      if (body > 0)
         {
         Forder = (OrderSend(_Symbol,OP_BUY,Lot,Ask,Slippage,0,0,"Коммент",Magic,0,Blue));
         if(Forder > 0)
           {
            Print("Открыта Позиция BUY");
            if(OrderSelect(Forder, SELECT_BY_TICKET))
               {
               TP = NormalizeDouble((Ask+TakeProfit*_Point),_Digits);
               if (OrderModify(OrderTicket(),OrderOpenPrice(),0,TP,0))
                  Print("Ордер Модифицирован BUY "); 
               else 
                  Print("Ошибка Модификации Ордера BUY = ",GetLastError());
               }
           }
         else
            Print("Ошибка Открытия Позиции BUY");
       }
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx//
//Открытие позиции Sell      
      if (body < 0)
         {
         Forder = (OrderSend(_Symbol,OP_SELL,Lot,Bid,Slippage,0,0,"Коммент Sell",Magic,0,Red));
         if (Forder > 0)
            {
            Print("Открыта Позиция SELL");
            if(OrderSelect(Forder, SELECT_BY_TICKET))
               {
               TP = NormalizeDouble((Bid-TakeProfit*_Point),_Digits);
               if (OrderModify(OrderTicket(),OrderOpenPrice(),0,TP,0))
                  Print("Ордер Модифицирован SELL "); 
               else 
                  Print("Ошибка Модификации Ордера SELL = ",GetLastError());
               }
            }
         else
            Print("Ошибка Открытия Позиции BUY");
        }
      }
//---
  }
//+------------------------------------------------------------------+
//| Подсчет открытых ордеров                                         |
//+------------------------------------------------------------------+
int CountTrades() 
  {
   int count =0;
   int i=OrdersTotal()-1;
   for(int pos=i;pos>=0;pos--)
     {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES))
        {
         if(OrderSymbol()==_Symbol)
           {
            if(OrderMagicNumber()==Magic) count ++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
 
MakarFX #:

Obrigado

 
MakarFX #:

Somente ele começou a abrir tanto a comprar como a vender de uma só vez. Eu assumi que

int CountTrades() 
  {
   int count =0;
   int i=OrdersTotal()-1;
   for(int pos=i;pos>=0;pos--)
     {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES))
        {
         if(OrderSymbol()==_Symbol)
           {
            if(OrderMagicNumber()==Magic) count ++;
           }
        }
     }
   return(count);
  }

Esta parte verificaria se há uma posição aberta sobre magia e

if (CountTrades() == 0)
      {

Esta parte não permitirá a abertura dos dois lados.

 
Alexander Avksentyev #:

Somente ele começou a abrir tanto a comprar como a vender de uma só vez. Eu assumi que

Esta parte verificaria se há uma posição aberta sobre magia e

Esta parte não permitirá a abertura dos dois lados.

Improvável, mostre-me o diário de bordo ou escreva quando, em que par e em que período de tempo, para que eu possa verificar.


E é.

Esta parte não permitirá a abertura se já houver pedidos em aberto.

 
MakarFX #:

Improvável, mostrar o registro ou escrever quando, em que par e a que horas, para que eu possa verificar.


E é.

Esta parte não permite que você abra se já houver pedidos em aberto.

Sinto muito.

Eu já fiz estas regras, e descobri que elas se abrem em todas as velas, na direção do fechamento da anterior.

Meu erro.

 
MakarFX #:

Improvável, mostrar o registro ou escrever quando, em que par e a que horas, para que eu possa verificar.


E é.

Esta parte não permite a abertura se já houver pedidos em aberto.

Tenho 10 editores diferentes, mudo algo em todos os lugares, estou confuso.

 
MakarFX #:

Improvável, mostrar o registro ou escrever quando, em que par e a que horas, para que eu possa verificar.


E é.

Esta parte não permite a abertura se já houver pedidos em aberto.

Outra pergunta.

Com que seriedade devemos prestar atenção às advertências?

 
Alexander Avksentyev #:

Outra pergunta.

Com que seriedade você deve prestar atenção às advertências?

Sempre. Muitas advertências são devidas à falta de atenção.
 
MakarFX #:

Verifique o tamanho de seu terminal


P.S. não é um fato que sua "biblioteca de 32 bits" possa trabalhar com 64 vin.

Há um cenário para isso no Visual Studio

Sim, há uma configuração lá, quando você cria um aplicativo de console você seleciona a versão 32 do programa e ele será executado. Neste caso, o ponteiro é de 4 bytes.

 
MakarFX #:

sem compilador.

Você provavelmente baixa o MetaEditor da direita separadamente, ou como você constrói um EA para as funções deste terminal API? Você tem que se registrar lá ou não?