MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 234

 
Vitaly Muzichenko:

良い「調子」のプログラムとは、エラーや警告のないプログラムのことで、それ以外は素人くさい。


味気なさを捨てよう。このような警告がなされるのには、理由があるのでしょう。問題は、その理由です。

 
Artyom Trishkin:
Expert Advisor で稼いだお金をジャーナルから引き出すことはできません。そのため、プログラムがエラーを処理して対応する必要があります。

そこで、ソフトウエアはとにかく、あればそれを処理し、それに関するメッセージを表示する。何を見落としているのだろう?

 
Andrey Sokolov:

そこで、ソフトウエアはとにかく、あればそれを処理し、それに関するメッセージを表示する。何を見落としているのだろう?

プログラムではなく、端末。
プログラムがそれらを処理するためには、まずフェッチする必要があります。そのため、貿易関数は エラー時にfalseを返します。さらに、関数の結果が false の場合は、エラーコード GetLastError() を取得し、プログラム内で処理する必要があります。
 

ターミナルが認証されていない!どこに行けばいいのか?

 
kalmyk87 端末が認証されない!どこに行けばいい?
認可=ブローカーのサーバーへの接続、インターネットをオンにする必要があります。デモ - パスワードを忘れた場合は、新しいアカウントを作成してください。本物の場合 - ブローカーに連絡してください。
 
STARIJ:
認可=ブローカーのサーバーと通信するため、インターネットをオンにする必要があります。デモの場合 - パスワードを忘れた場合は、新しいアカウントを作成してください。本物の場合 - ブローカーに連絡する。

アカウントを認証したのに...mql5プロファイルがなぜか認証されない...。

 

こんにちは。この質問について、どうかご協力を...。

インジケーターは、CSVから現在の日の白レベルを描画します。この水準に達しない場合、その水準は翌日も点線で表示される。将来、この白い点線に価格が到達すると、停止します。しかし、翌日未到達のレベルを確認した後、インジケータはそのレベルを完了したとみなし、描画を停止します。

この点線はチャートに残してほしい。 ありがとうございます。

//------------- читаю и разбираю строку из файла --

txt_data = FileReadString(file);   дата_уровней = StrToTime(txt_data+" 00:00");
if(FileIsEnding(file)==true)     break; // если конец  Выход из цикла
ArrayInitialize(d_input, 0);
for (int i=0; i<12; i++)  //== считываю уровни в массив
 {
 txt_data = FileReadString(file); 
 d_input[i] = replace_dot(txt_data);
 if ( FileIsLineEnding(file) ) break;
 }

if(уровни == Daily)
  {
   double white = d_input[4];
   t0 = дата_уровней + 1*PeriodSeconds(PERIOD_H1);
   t1 = дата_уровней + 23*PeriodSeconds(PERIOD_H1);
     Draw_Level("white", white, c_day_3, STYLE_SOLID, толщина); 
      if(показ_неотработок)
    if( !check_white_level(дата_уровней, white) )
     draw_line(t0, white, c_day_3) ;
  }
//   отображение  уровней 
void Draw_Level(string name, double _level, color _colr, int _style, int _width)
{
string o_name = i_name +"_"+ name +"_"+ TimeToStr(t0,TIME_DATE);
if (_level>0)
 {
  if (ObjectFind(o_name) != 0)
   ObjectCreate(o_name, OBJ_TREND, 0, t0, _level, t1, _level);
  ObjectSet(o_name, OBJPROP_TIME1, t0);
  ObjectSet(o_name, OBJPROP_PRICE1, _level);
  ObjectSet(o_name, OBJPROP_TIME2, t1);
  ObjectSet(o_name, OBJPROP_PRICE2, _level);
  ObjectSet(o_name, OBJPROP_COLOR, _colr);
  ObjectSet(o_name, OBJPROP_STYLE, _style);
  if(_style == STYLE_DOT)   ObjectSet(o_name, OBJPROP_WIDTH, 1);
    else     ObjectSet(o_name, OBJPROP_WIDTH, _width);
  ObjectSet(o_name, OBJPROP_RAY, false);  // луч
  ObjectSetText(o_name, DoubleToStr(_level, 4) );
  ObjectSetInteger(0, o_name, OBJPROP_SELECTABLE, False); 
   ObjectSetInteger(0, o_name, OBJPROP_HIDDEN, True);  
   ObjectSetString(0, o_name, OBJPROP_TOOLTIP, "\n"); // убираю всплывающую надпись
 }
}
// проверка_отработки уровня
bool check_white_level(datetime t_open, double _level)
{
if (_level <= 0) return(False);
int bar0 = iBarShift(NULL, 0, t_open);
double max = High[iHighest(NULL, 0, MODE_HIGH, bar0, 0)];
double min = Low[iLowest(NULL, 0, MODE_LOW, bar0, 0)];
if( _level <= max && _level >= min )
  return(TRUE);
return(False);
}
void draw_line(datetime begin, double _level, color _clr)
{
if (_level <= 0) return;
string o_name = i_name +"_wh1_"+ TimeToStr(begin,TIME_DATE);
datetime t_0 = begin ;
datetime t_1 = TimeCurrent() ;
  if (ObjectFind(o_name) != 0)
   ObjectCreate(o_name, OBJ_TREND, 0, t_0, _level, t_1, _level);
  ObjectSet(o_name, OBJPROP_TIME1, t_0);
  ObjectSet(o_name, OBJPROP_PRICE1, _level);
  ObjectSet(o_name, OBJPROP_TIME2, t_1);
  ObjectSet(o_name, OBJPROP_PRICE2, _level);
  ObjectSet(o_name, OBJPROP_COLOR, _clr);
  ObjectSet(o_name, OBJPROP_STYLE, STYLE_DOT);
   ObjectSet(o_name, OBJPROP_WIDTH, 1);
    ObjectSet(o_name, OBJPROP_RAY, false);  // луч
    ObjectSetInteger(0, o_name, OBJPROP_SELECTABLE, False); 
  ObjectSetInteger(0, o_name, OBJPROP_HIDDEN, True);  
  ObjectSetString(0, o_name, OBJPROP_TOOLTIP, "\n"); // убираю всплывающую надпись
}
 
ボンドとは何か、教えてください。
1) 保釈金はどのように計算するのですか?EAでこの値を取得するにはどうすればよいですか?
2) ロック時のマージンはどのように計算するのですか?EAでこの値を取得するにはどうすればよいですか?
3) 未決済注文のチケットから証拠金の値を取得するにはどうすればよいですか?注文のマージンはターミナルで確認できるのですが、OrderMargin()のような関数が見つかりませんでした(嘘?)。
4) 保証金は注文開始時に一度だけ固定されるパラメータですか、それとも注文が存在する新しい瞬間に現在のレートで再計算(フローティング)されるのですか?

デポジットの手動計算式は正しいか?
(base_lot * trade_lot * current_rate%%%USD) / レバレッジ = USDマージン
 
smart_man:
デポジットとは何なのか、教えてください。
1) 保証金はどのように計算するのですか?EAでこの値を取得するにはどうすればよいですか?
2) ロック時のマージンはどのように計算するのですか?EAでこの値を取得するにはどうすればよいですか?
3) 未決済注文のチケットから証拠金の値を取得するにはどうすればよいですか?注文のマージンはターミナルで確認できるのですが、OrderMargin()のような関数が見つかりませんでした(嘘?)。
4) 保証金は注文開始時に一度だけ固定されるパラメータですか、それとも注文開始時に現在のレートで再計算(フローティング)されるのですか?

デポジットの手動計算式は正しいか?
(base_lot * trade_lot * current_rate%%%USD) / レバレッジ = USDマージン

1)

 margin =AccountInfoDouble(ACCOUNT_MARGIN);                        //-Размер зарезервированных залоговых средств на счете  в валюте депозита

2)使用しないでください。

3)計算式はあなたのものと同じですが、"current_%%%%USD "の代わりに、ポジションのオープンプライスが 使われています。

4) パラメータが固定されている


コレクト

 
Alekseu Fedotov:

1)

2)使用しないでください。

3)計算式はあなたのものと同じですが、"current_%%%%USD "の代わりに、ポジションのオープンプライスが 使われています。

4) パラメータが固定されている


コレクト

ありがとうございました。

2) 計算式は同じで、最後に2で割るだけという情報を得たが、実際にそうなのかどうかわからない。

3) ポジションの始値、これはOrderOpenPrice()で?

5) もう一つの質問ですが、もし何らかのオープニングが計画されているなら、その前に注文の将来のコストをすべて計算しなければなりません(証拠金の額、利益と損失の額、しかしここではポイント値の計算、自由資金の有無の確認、リスクに対する自由資金の割合での制限も必要です、他に何か見逃しましたか?それとも何か他の方法があるのでしょうか?ドローダウンはあるのか、それも計算すべきなのか。

5.1) ポイントの計算方法は?

5.2) 利用可能な資金があるかどうかを確認するにはどうすればよいですか?

会計のように具体的な内容が多く、自分だけでは理解しにくいので、このような質問をしています。