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

 
Igor Makanu:

Eu escrevi acima, sobre o nível das perguntas ;)

e você começou a procurar a otimização da inicialização no OnTick/OnInit - tudo é mais simples lá, você precisa de proteção para encontrar código para compartilhá-lo com os mesmos amigos ))))

Entendo, então um brinde: para encontrar "amigos"!

 
Igor Makanu:

Necessidade de proteção para código encontrado para compartilhar com amigos semelhantes ))))

Muito bem colocado. Provavelmente parecemos nerds, mas estamos nos divertindo!

 
Vitaly Muzichenko:

Bem, esse é o limite de tudo :(


Vitaly, o que há com a negatividade? O homem está apenas pedindo para o derrotar, é necessário respeitar)

Igor Makanu:

Eu escrevi acima, sobre o nível das perguntas ;)

e você começou a procurar a otimização da inicialização no OnTick/OnInit - tudo é mais simples lá, você precisa de proteção para o código encontrado, para compartilhar com os mesmos amigos ))))

))))

 
Aleksey Mavrin:

Vitaly, o que há com a negatividade? O homem só está pedindo para ser pisoteado, você deve respeitá-lo)

))))

Um pouco de positividade.

 
Bom dia, por favor, poderia aconselhar. O manual afirma que o Init é processado pela função OnInit(). Este evento também é gerado após uma mudança de instrumento financeiroe/ou de período gráfico.

Aqui eu tenho um código simples. Quando mudo o cronograma, a função funciona, mas não quando mudo o instrumento. Ou talvez eu tenha entendido mal o termo "mudança de instrumento financeiro"?

int OnInit()
  {
    Print("HALLO");
    return(INIT_SUCCEEDED);
  }
Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
 
WinProject:
Bom tempo, por favor, avise. O manual diz que o Init () é tratado pela função OnInit(). Este evento também é gerado após uma mudança de instrumento financeiroe/ou de período gráfico.

Aqui eu tenho um código simples. Quando mudo o cronograma, a função funciona, mas não quando mudo o instrumento. Ou talvez eu tenha entendido mal o termo "mudança de instrumento financeiro"?

int OnInit()
  {
    Print("HALLO Period()= ",Period(),"Symbol()=",Symbol());
    return(INIT_SUCCEEDED);
  }

Para que a percepção seja correta, é melhor assim. Se você colocar um novo símbolo no gráfico, o OnDynit deve funcionar e começar com o OnInit

 
Valeriy Yastremskiy:

Em nome da fidelidade, é melhor assim. Se você colocar um novo símbolo no gráfico, o OnDeinit deve funcionar e começar com o OnInit

Obrigado, tantos anos com o terminal e não sabia que você poderia lançar para um gráfico a partir de uma visão geral do mercado, pensei que mudar um instrumento financeiro era uma mudança para uma janela de gráfico com um instrumento diferente.

 

Olá, você poderia me dizer se isto é um bug ou estou enganado?

Eu estava fazendo alguns cálculos, que você também pode obter através de funções prontas e notou uma diferença.

Eu estava calculando a margem, e no cálculo da margem de teste e AccountInfoDouble(ACCOUNT_MARGIN) dão resultados diferentes, e não há diferença na demonstração.

#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
 

input double lot=0.1;
input int plecho=100;
input double lot_increment=1; //увеличение лота
input int level_size=50;
input int Magic = 0;
input int deviation = 10; //допустимое проскальзывание

double margin, margin_free, uroven, sredstva_pri_s_o, margin_call, stop_out;
int N;



int OnInit(){

Print("Bid ", Bid);

int ticket=OrderSend(NULL, OP_BUY, lot, Ask, 0, 0, 0, "", Magic, 0);
    //ticket=OrderSend(NULL, OP_SELL, lot, Bid, 0, 0, 0);


Print("  ACCOUNT_MARGIN ", AccountInfoDouble(ACCOUNT_MARGIN)
, "  ACCOUNT_MARGIN_LEVEL ", AccountInfoDouble(ACCOUNT_MARGIN_LEVEL));

margin=(OrderLot()*100000*OrderPrice())/plecho;
Print("OrderLot() ", OrderLot(), "  OrderPrice() ", OrderPrice());
margin_free=AccountInfoDouble(ACCOUNT_EQUITY)-margin;
uroven=(AccountInfoDouble(ACCOUNT_EQUITY)/margin)*100;
sredstva_pri_s_o=(margin*AccountInfoDouble(ACCOUNT_MARGIN_SO_SO))/100;
N=(int)NormalizeDouble((AccountInfoDouble(ACCOUNT_BALANCE)-sredstva_pri_s_o)
/MarketInfo(Symbol(), MODE_TICKVALUE), 0);
stop_out=OrderPrice()-(N*Point());

Print("stop_out ", stop_out, "  margin ", margin, "  uroven ", uroven
, "  ACCOUNT_MARGIN_SO_SO ", AccountInfoDouble(ACCOUNT_MARGIN_SO_SO)
, "  ACCOUNT_MARGIN_LEVEL ", AccountInfoDouble(ACCOUNT_MARGIN_LEVEL)
, "  ACCOUNT_MARGIN ", AccountInfoDouble(ACCOUNT_MARGIN));
return(INIT_SUCCEEDED);
}//+------------------------------------------------------------------+
void OnDeinit(const int reason){
}//+------------------------------------------------------------------+
void OnTick(){


Print("  ACCOUNT_MARGIN ", AccountInfoDouble(ACCOUNT_MARGIN)
, "  ACCOUNT_MARGIN_LEVEL ", AccountInfoDouble(ACCOUNT_MARGIN_LEVEL));

Comment("AccountInfoDouble(ACCOUNT_MARGIN_SO_CALL) ", AccountInfoDouble(ACCOUNT_MARGIN_SO_CALL)
, "  AccountInfoDouble(ACCOUNT_MARGIN_SO_SO) ", AccountInfoDouble(ACCOUNT_MARGIN_SO_SO)
, "  AccountInfoDouble(ACCOUNT_MARGIN_LEVEL) ", AccountInfoDouble(ACCOUNT_MARGIN_LEVEL)
, "  AccountInfoDouble(ACCOUNT_MARGIN) ", AccountInfoDouble(ACCOUNT_MARGIN)
, "  MarketInfo(Symbol(), MODE_MARGINREQUIRED) ", MarketInfo(Symbol(), MODE_MARGINREQUIRED) , "\n"
, "margin ", margin
, "  margin_free ", margin_free 
, "  uroven ", uroven );
}//+------------------------------------------------------------------+

double OrderPrice(){
   double count=0;
   for (int i=OrdersTotal()-1; i>=0; i--){
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
         if (OrderSymbol() == Symbol()  && OrderMagicNumber()==Magic )
            count=OrderOpenPrice();
      }   
   } 
   return(count);   
}
double OrderLot(){
   double count=0;
   for (int i=OrdersTotal()-1; i>=0; i--){
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
         if (OrderSymbol() == Symbol()  && OrderMagicNumber()==Magic )
            count=OrderLots();
      }   
   } 
   return(count);   
}


 
Por favor, ajude.

Já tentei de tudo e ainda recebo o erro 130.
Arquivos anexados:
Wai_v_5.0.mq4  59 kb
 
Boa tarde a todos. Estou tentando escrever um conselheiro graal próprio ;-). Mas por alguma razão, não quer trabalhar. Eu gravei um vídeo, o link para o vídeo está em minha mensagem. Isto será tanto mais claro quanto mais rápido. A pergunta em si está no vídeo. Agradecemos antecipadamente. https://youtu.be/tqZrXjMONrE
ВОПРОС ПО НАПИСАНИЮ СОВЕТНИКА
ВОПРОС ПО НАПИСАНИЮ СОВЕТНИКА
  • 2020.12.09
  • www.youtube.com
ПИШУ СОВЕТНИК НА MQL4, А ГДЕ-ТО ДОПУСТИЛ ОШИБКУ- ПОМОИГИТЕ ПОЖАЛУЙСТА ПОНЯТЬ ГДЕ И В ЧЁМ ЭТА ОШИБКА ПОЛУЧИЛАСЬ?