MQL4プログラミングに関するオンラインブックのベータ版 - Sergey Kovalev (SK.)著 - ページ 8

 
Climber:
どうしたんですか?エラーで何を騒いでいるのですか?

コンパイラは1つのエラーを出します:Startfunction not found and cannot be run, つまり、start()関数が見つからず、実行できない、ということです。

これはごく自然なことです。プログラムに特別な機能がない場合、MTクライアント端末で実行することはできません。

 
以下はエラーです。 関数 "GetExtremumZZZBar" は参照されていないため、Expファイルから削除されます。追加したコードにコメントを書いたら、その後、エラーはなくなりました。

//+------------------------------------------------------------------+
//|                                                         1111.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
 
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
}    // Добавил вот эту скобку, точнее переместил с конца, в результате 1 ошибка
int GetExtremumZZBar(string sym="", int tf=0, int ne=0, int dp=12, int dv=5, int bc=3) {
  if (sym=="") sym=Symbol();
  double zz;
  int    i, k=iBars(sym, tf), ke=0;
 
  for (i=1; i<k; i++) {
    zz=iCustom(sym, tf, "ZigZag", dp, dv, bc, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(i);
    }
  }
  Print("GetExtremumZZBar(): Экстремум ЗигЗага номер ",ne," не найден");
  return(0);
}   
//----
   
//+------------------------------------------------------------------+
このメッセージを書いているうちに、自分の問題がわかったような気がした。この関数は、開始関数の本体には ないはずです。この関数の呼び出しだけが、スタートのボディにあるべきものです。そうだろ?
 
Climber:
 
この記事を書いている今、私の問題がわかったような気がします。この関数は、開始関数の本体にはないはずです。この関数の呼び出しだけが、スタートのボディにあるべきものです。そうだろ?

はい
 
Climber:
この記事を書いているときに、私の問題がわかったと思います。 この関数は、start関数のボディにあるべきでないのです。この関数の呼び出しだけが、スタートのボディにあるべきものです。そうだろ?

正解です。他の関数の本体で関数を記述することはできない。
 
Climber:
この記事を書いているときに、私の問題がわかったと思います。 この関数は、start関数のボディにあるべきでないのです。この関数の呼び出しだけが、スタートのボディにあるべきものです。そうだろ?
MQL4チュートリアル MQL4プログラム構造.
 
新たな疑問が生まれました))
多通貨EAでは、使用する全てのシンボルのチャートを開く必要があるのでしょうか?
EAを装着したチャートのシンボルにティックが来た場合、他のシンボルの同じ取引条件を 確認します。今回は、多通貨を使用して、日中に開く注文の数を増やしたい。 時間足チャートで作業するため、多くの注文を開くことはありません、我々は手動で1シンボルの2つ以上の注文を1日に受信しませんでした。

そして、私の次の恐ろしい仕事は、多通貨のExpert Advisorのための注文の会計のブロックを書くことです。しかし、私のExpert Advisorでは、保留中の注文は使用されていないので、うれしいです(少なくとも、会計ブロックは減少します)。 このテーマで、多通貨会計に関連する何かを読むことをお勧めできますか?
 
Climber:
新しい質問があります))
多通貨EAでは、使用するすべてのシンボルのチャートを開くことが義務付けられているのですか?

ただし、使用されている記号はすべてMarket WatchウィンドウのD.O.B.です。

 

EAを止める 方法を教えてください。ストップロスが発生したときに動作を停止させたい。どなたかヒントをいただける方がいらっしゃいましたら、mininp@list.ru まで書き込みをお願いします。ありがとうございました。

 
Mister_X:

EAを止める方法を教えてください。ストップロスが発生したときに動作を停止させたい。どなたかヒントをいただける方がいらっしゃいましたら、mininp@list.ru まで書き込みをお願いします。ありがとうございました。


ストップしない方が楽かもしれませんが、ストップオーダーがあるかどうかだけ確認して、あれば何もしないことです
 
複雑な注文の記帳については、SK「大規模なプログラムでの注文の記帳」で素晴らしい記事を見つけました。
現在、デモ口座で手動で作業しています。この最後のシステムは、1ヶ月ほど前から手作業で作っています。

私は1,000ドルの入金と1:100のレバレッジでスタートしました。常に最低敷地面積は100ドルです。私は3~4つの通貨ペアで仕事をしています。最初の2週間で入金額を2倍、つまり2,000ドルにすることができました。今は3000くらいです。

この間、1つの商品で最大118ポイントの利益を得ました(もちろん1回の注文で)。 平均すると、40~50ポイントの利益で注文を終了しています。このような注文の場合、ストップで決済された注文のペアが得られ、合計で10ポイント近くの損失となります。しかも、これは1ヶ月で2倍の預金量になるのだから、たまりません。そして、再投資を考慮して計算すると、10ヵ月後の預金は100万2,000米ドルになる。

すべてが良いだろう、我々は喜ぶべきであるが、合理的な質問があります:どのような証券会社はとても図々しく1000ドルで10ヶ月で人気になる与える?

Expert Advisorを書きたいんだけど、自分で取引したほうがいいのかな。

正直なところ、この出来事について、詐欺ではないのか?