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

 
законопослушный гражданин #:

decolar para o espaço

a parada primeiro fica de pé, depois voa instantaneamente para o espaço seguido do take (fechando a ordem no caminho)

Isso é porque suas regras não estão funcionando:

Fórum sobre comércio, sistemas automatizados de comércio e teste de estratégias comerciais.

Qualquer pergunta de novatos sobre MQL4 e MQL5, ajuda e discussão de algoritmos e códigos

Mihail Matkovskij, 2021.12.23 22:01

Em geral, as regras são as seguintes.

  • O SL calculado é menor que o SL do pedido (menos rentável) - não fazer nada.
  • A liquidação SL é igual à ordem - não fazer nada
  • O SL calculado excede o SL do pedido (mais rentável) - modificá-lo com o valor calculado
Estas regras de criação de redes de arrasto seriam adequadas para criar quase qualquer rede de arrasto com qualquer algoritmo de cálculo SL.

Elas já teriam sido feitas há muito tempo e teriam sido pregadas. Mas não...

Eu não pude deixar de encontrar um exemplo pronto:https://www.mql5.com/ru/code/30808

E um artigo:https://www.mql5.com/ru/articles/134

Embora seja complicado para os iniciantes, mas acho que você vai conseguir se estiver realmente interessado no assunto.

Простой трейлинг-стоп
Простой трейлинг-стоп
  • www.mql5.com
Очень простой советник для сопровождения сделок трейлинг-стопом.
 
Tretyakov Rostyslav #:

Correção

Obrigado!

Eu não sabia que você poderia colocar um duplo dentro de uma função vazia

 
Mihail Matkovskij #:

Isso é porque suas regras não funcionam:

Você já deveria ter feito isso há muito tempo e pontuado. Mas não...

Eu não suportava e encontrei um exemplo pronto:https://www.mql5.com/ru/code/30808

E um artigo:https://www.mql5.com/ru/articles/134

Pode ser complicado para os iniciantes, mas acho que você vai entender se estiver realmente interessado no assunto.

Obrigado

 

Boa tarde!!!

Você pode me dizer se a função Hora() retorna a hora atual da última hora conhecida do servidor em Greenwich ou a hora atual chamada no computador???

 
EVGENII SHELIPOV a hora atual chamada no computador???


 
Tretyakov Rostyslav #:


Qual é a resposta para a pergunta?

 
EVGENII SHELIPOV #:

Qual é a resposta para a pergunta?

Desculpe, pensei que soubesse ler.


 
EVGENII SHELIPOV hora atual chamada no computador???

E quem lhe disse que o horário do servidor deve ser GMT?

 

Função para mt4 e mt5 - iniciar, parar e .....

//+------------------------------------------------------------------+
//|                                                   time Start.mq4 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//--- input parameters
input datetime InpHoursFrom = D'1970.01.01 02:00'; // Start (Only time)
input datetime InpHoursTo   = D'1970.01.01 23:00'; // Stop (Only time)
input bool     InpClose     = true;                // Close Time
input datetime InpHoursTo1  = D'1970.01.01 23:00'; // Close (Only time)
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(TimeStartStop(InpHoursFrom,InpHoursTo))
     {
      Print("Start time :",InpHoursFrom," || ","Stop time :",InpHoursTo);
     }
   if(TimeClose(InpHoursTo1))
     {
      if(InpClose)
         Print("close_time :",InpHoursTo1);
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
bool TimeStartStop(datetime HoursFrom,datetime HoursTo)
  {
//---
   MqlDateTime currTime;
   TimeToStruct(TimeLocal(),currTime);
   long hour0=currTime.hour*60*60+currTime.min*60+currTime.sec;
   if((HoursFrom<HoursTo && hour0>=HoursFrom && hour0<HoursTo) ||
      (HoursFrom>HoursTo && (hour0<HoursTo || hour0>=HoursFrom)))
      return(true);
   return(false);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
bool TimeClose(datetime HoursTo)
  {
//---
   MqlDateTime currTime;
   TimeToStruct(TimeLocal(),currTime);
   long hour0=currTime.hour*60*60+currTime.min*60+currTime.sec;
   if(hour0<HoursTo)
      return(false);
   if(hour0>HoursTo+1*10)
      return(false);
   return(true);
  }
//+------------------------------------------------------------------+
 

Pessoal, eu preciso de ordens pendentes para atualizar seu valor a cada minuto, a modificação de algo estava torta, decidi apagar e definir cada minuto em ambas as direções, no testador funciona bem, mas na vida real, de alguma forma, não entrega. Corrigir ou ajudar em vez de apagar, modificar para fazer.


      if(TimeCurrent()>TimeCheck_sn && TimeCurrent()<TimeCheck_en && Ogranichitel > 0)
        {

         if(IsNewCandle())
           {

            if(OrderOfSymbol>0 && OrderType() ==  OP_BUYSTOP)
               ticket2 =  OrderDelete(OrderTicket(),Violet);

            if(OrderOfSymbol>0 && OrderType() ==  OP_SELLSTOP)
               ticket2 =  OrderDelete(OrderTicket(),Violet);


            if(Close[1]>Open[1] && CountOrders()==0)
               if(NewsSellAllow == true)
                  ticket2 = OrderSend(Symbol(),OP_SELLSTOP, LotSk, Bid-(Skachok*Point), Slippage, 0, Bid-((Skachok+TPsk)*Point), "открыт ордер на продажу", Magic, 0, Red);
                  Print("OpenOrderSuccess");
                  
            if(Close[1]>Open[1] && CountOrders()==0)
               if(NewsBuyAllow == true)
                  ticket2 = OrderSend(Symbol(),OP_BUYSTOP, LotSk, Ask+(Skachok*Point), Slippage, 0, Ask+((Skachok+TPsk)*Point), "открыт ордер на покупку", Magic, 0, Blue);
                  Print("OpenOrderSuccess");


            if(OrderType() ==  OP_BUYSTOP && OrderOfSymbol>0)
               ticket2 = OrderModify(OrderTicket(), (Ask+(Skachok*Point)), 0, (Ask+((Skachok+TPsk)*Point)), 0);

            if(OrderType() ==  OP_SELLSTOP && OrderOfSymbol>0)
               ticket2 = OrderModify(OrderTicket()+1, (Bid-(Skachok*Point)), 0, (Bid-((Skachok+TPsk)*Point)), 0);
           }
        }


      if(TimeCurrent() == TimeCheck_en)
        {


         if(IsNewCandle())
           {
            if(OrderOfSymbol>0 && OrderType() ==  OP_BUYSTOP)
               ticket2 =  OrderDelete(OrderTicket(),Violet);

            if(OrderOfSymbol>0 && OrderType() ==  OP_SELLSTOP)
               ticket2 =  OrderDelete(OrderTicket(),Violet);
           }


        }