新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1316

 
Igor Makanu:

我在上面写了,关于问题的水平;)

而你开始在OnTick/OnInit中寻找初始化的优化--那里的一切都比较简单,你需要保护发现的代码,以便与同一个朋友分享))))。

我明白了,那就干杯吧:为找到的 "朋友 "干杯!

 
Igor Makanu:

需要保护发现的代码,与类似的朋友分享 )))

说得很好。我们可能看起来像书呆子,但我们很开心!"。

 
Vitaly Muzichenko:

嗯,这就是一切的极限 :(


维塔利,你怎么这么消极?该男子只是要求对他进行嘲弄,有必要尊重)

Igor Makanu:

我在上面写了,关于问题的水平;)

而你开始在OnTick/OnInit中寻找初始化的优化--那里的一切都更简单,你需要保护找到的代码,与相同的朋友分享)))。

))))

 
Aleksey Mavrin:

维塔利,你怎么这么消极?这个人只是自讨苦吃,你应该尊重他)

))))

好吧,来点积极的。

 
你好,请问你能给我建议吗?手册指出, Init事件 是由OnInit() 函数处理的。这个事件也是在金融工具和/或 图表周期变化后 产生的。

我这里有一个简单的代码。当我改变时间框架时,该功能可以工作,但当我改变工具时就不行了。或者,也许我对 "金融工具的变化 "一词有误解?

int OnInit()
  {
    Print("HALLO");
    return(INIT_SUCCEEDED);
  }
Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
 
WinProject:
好时间,能否请您指点一下。手册上说, Init事件 是由OnInit()处理的。这个事件也是在金融工具和/或 图表周期变化后 产生的。

我这里有一个简单的代码。当我改变时间框架时,该功能可以工作,但当我改变工具时就不行了。或者,也许我对 "金融工具的变化 "一词有误解?

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

为了认知的正确性,最好是这样。如果你在图表上放一个新的符号,OnDynit应该工作,并从OnInit开始。

 
Valeriy Yastremskiy:

为忠实起见,这样做更好。如果你在图表上放一个新的符号,OnDeinit应该工作,并从OnInit开始。

谢谢,用了这么多年的终端,不知道可以从市场概览中投向图表,还以为更换金融工具是切换到不同工具的图表窗口。

 

你好,你能告诉我这是一个错误还是我搞错了?

我在做一些计算,你也可以通过现成的函数得到这些计算,并注意到了不同。

我在计算保证金,在测试器中,保证金计算和AccountInfoDouble(ACCOUNT_MARGIN)给出了不同的结果,而在演示中没有区别。

#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);   
}


 
请帮助。

我已经尝试了所有方法,但仍然得到错误130
附加的文件:
Wai_v_5.0.mq4  59 kb
 
大家下午好。我正试图写一个属于我自己的圣杯 顾问;-)。但由于某些原因,它不愿意工作。我已经录制了一段视频,视频的链接在我的留言中。这将是更清晰和更快速的。这个问题本身就在视频中。预先感谢你。https://youtu.be/tqZrXjMONrE
ВОПРОС ПО НАПИСАНИЮ СОВЕТНИКА
ВОПРОС ПО НАПИСАНИЮ СОВЕТНИКА
  • 2020.12.09
  • www.youtube.com
ПИШУ СОВЕТНИК НА MQL4, А ГДЕ-ТО ДОПУСТИЛ ОШИБКУ- ПОМОИГИТЕ ПОЖАЛУЙСТА ПОНЯТЬ ГДЕ И В ЧЁМ ЭТА ОШИБКА ПОЛУЧИЛАСЬ?