初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 585

 
barudkinarseniy:
同志の皆さん、こんにちは。コンパイラがデータ損失の可能性に関する警告を出すのですが、どのようなエラーか教えてください(
明示的な型変換が 必要である。
int ts = (int)SymbolInfoInteger(Symbol(),SYMBOL_TRADE_STOPS_LEVEL);
 
Vasiliy Sokolov:
明示的な型変換が 必要である。
ありがとうございました。こんな変換のニュアンスまで覚えられない))
 
barudkinarseniy:
ありがとうございました。こんな変換のニュアンスまで覚えられない))
多くの場合、誤解を招くのはこの「SymbolInfoInteger」です。だからこそ、今一度、ヘルプを見た方がいいのです。
 
何が問題なのか、教えてください。コンパイラは何もエラーを出しません。テスターでは、ほとんどの取引ですべてうまくいっていますが、時々プリンターのエラーハンドラが正しいストップを書き込まず、オープンプライスが 小数点以下6桁で書き込まれます: Invalid price (stop) OrderSendX(symbol=AUDCAD,cmd=SELL,volume=0.29,price=0.995120,slipage=50,stoploss=0.996470,takeprofit=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:
何が問題なのか、教えてください。コンパイラは何もエラーを出しません。テスターでは、ほとんどのトレードはOKですが、時々プリンターのエラーハンドラが間違ったストップとオープンプライスを 小数点以下6桁で書き込みます: Invalid price (stop) OrderSendX(symbol=AUDCAD,cmd=SELL,volume=0.29,price=0.995120,slippage=50,stoploss=0.996470,takeprofit=0.991070)

最初に目についたのはこのコード片で、この2つの関数は同じものです。
 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ウィンドウは1つのプロファイルで開かないと永久に機能しないのでしょうか?

ツール => 設定



とか、好きなようにやってください...。

 
こんにちは、あなたは、外部時間枠の選択を設定パラメータに規定する方法を教えていただけますか?まさに選択式で、手動で印刷することはないでしょう。
 
barudkinarseniy:
こんにちは、あなたは、時間枠を選択するために、セットパラメータexternに記述する方法を教えてください。それはまさに選択であり、手動で印刷することではないだろう。

ENUM_TIMEFRAMES 列挙型変数を使用します。

理由: