初学者的问题 MQL5 MT5 MetaTrader 5 - 页 585

 
barudkinarseniy:
同志们好!请告诉我是什么错误,编译器给出的警告是可能的数据丢失(
需要一个明确的类型转换
int ts = (int)SymbolInfoInteger(Symbol(),SYMBOL_TRADE_STOPS_LEVEL);
 
Vasiliy Sokolov:
需要一个明确的类型转换
谢谢你!我无法记住所有这些转换的细微差别))。
 
barudkinarseniy:
谢谢你!我无法记住所有这些转换的细微差别))。
往往是这个:SymbolInfoInteger 会产生误导。这就是为什么最好再看一次帮助。
 
请告诉我问题出在哪里。编译器没有给出任何错误。在测试器中,大多数交易是好的,但有时打印机中的错误处理程序会写出错误的止损和开盘价 写出小数点后6位:无效价格(止损) OrderSendX(symbol=AUDCAD,cmd=SELL,volume=0.29,price=0.995120,slipppage=50,stoploss=0.996470,takeeprofit=0.991070)

//+------------------------------------------------------------------+
//Открытие ордеров
void OrderOpen(int otype, double OpenPriceW1)
{
 int msl = (int) MarketInfo(Symbol(),MODE_STOPLEVEL);
 int stsl = (int) SymbolInfoInteger(Symbol(),SYMBOL_TRADE_STOPS_LEVEL);
 
 if(otype == OP_BUY)
 {
  StepSTBAY = (int)(Ask/Point - OpenPriceW1/Point);
  
  if(StepSTBAY < msl) StepSTBAY = msl;
  if(StepSTBAY < stsl) StepSTBAY = StepSTBAY + stsl;
  
  lots = LotsByRisk(OP_BUY,StepSTBAY);
  ST_BAY = NormalizeDouble(Ask - StepSTBAY*Point,Digits);
  TP_BAY = NormalizeDouble(Ask + StepSTBAY*RR*Point,Digits);
      
  OrderSendX(Symbol(),OP_BUY,lots,Ask,slipage,ST_BAY,TP_BAY,"",Magic,0,clrGreen);
 }
 if(otype == OP_SELL)
 {
  StepSTSELL = (int)(OpenPriceW1/Point - Bid/Point);
  
  if(StepSTSELL < msl) StepSTSELL = msl;
  if(StepSTSELL < stsl) StepSTSELL = StepSTSELL + stsl;
  
  lots = LotsByRisk(OP_SELL,StepSTSELL);
  ST_SELL = NormalizeDouble(Bid + StepSTSELL*Point,Digits);
  TP_SELL = NormalizeDouble(Bid - StepSTSELL*RR*Point,Digits);
     
  OrderSendX(Symbol(),OP_SELL,lots,Bid,slipage,ST_SELL,TP_SELL,"",Magic,0,clrRed);
 }
}
//+------------------------------------------------------------------+
 
barudkinarseniy:
请告诉我问题出在哪里。编译器没有给出任何错误。在测试器中,大多数交易是好的,但有时打印机中的错误处理程序会写出错误的止损,开盘价 会写出小数点后6位:Invalid price (stop) OrderSendX(symbol=AUDCAD,cmd=SELL,volume=0.29,price=0.995120,slipage=50,stoploss=0.996470,takeeprofit=0.991070)

首先引起我注意的是这个代码片段,这两个函数是一样的
 int msl = (int) MarketInfo(Symbol(),MODE_STOPLEVEL);
 int stsl = (int) SymbolInfoInteger(Symbol(),SYMBOL_TRADE_STOPS_LEVEL);
前者为旧,后者为新
 
请您告知,如果我在MT4中改变了配置文件,EA是否会继续工作?还是所有的EA窗口都必须在同一个配置文件中打开才能永久工作?
 

亲爱的程序员们,你们好!

是否可以在MQL4中编写一个程序,根据不同时间段的计算值,以蜡烛图的形式绘制图表?也许有现成的代码来解决此类问题?

 
Ivan Molchanov:
请您告诉我,当我在MT4中改变配置文件时,该EA是否会继续工作?还是所有的EA窗口都必须在一个配置文件中打开才能永久工作?

工具 => 设置



和做你想做的事...

 
你好,请你告诉我如何在设定的参数中规定外部的时间框架选择?这正是一种选择,而不是手动打印。
 
barudkinarseniy:
你好,请你告诉我,如何在设置参数的extern中写上选择时间框架?这正是一个选择,而不是手动打印。

使用ENUM_TIMEFRAMES枚举类型变量。