[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 618

 
xant:

リゴニッチ

偶数個のブラケットを残すためにブラケットを外しました。つまり、どちらの関数も中括弧を付けずに挿入される。

その結果、以下のようになりました。

そして、すべてのEAコードの後に、次のコードを挿入しました。

最後の中括弧の後、実はEAとは別にそう受け止めています。これでいいのでしょうか?

合っているならば、コンパイル後はこうなります。


これらの警告は、あなたのEAの関数と変数がすでに以前に定義されていることを意味します。
 
lottamer:


その通りです。まず、最後に閉じたポジションのチケットを取得する必要があります GetTicketLastPos 、そしてこのチケットから必要なものを取り出すために標準関数を使用します。

ありがとうございます。


しまった... GetTicketLastPosという 関数がない。

最後のオープンポジションのためのGetTicketLastPos チケットがあります。

 
xant:

リゴニッチ

偶数個のブラケットを残すためにブラケットを外しました。つまり、どちらの関数も中括弧を付けずに挿入される。

その結果、以下のようになりました。

そして、すべてのEAコードの後に、次のコードを挿入しました。

最後の中括弧の後、実はEAとは別にそう受け止めています。これでいいのでしょうか?

合っているならば、コンパイル後はこうなります。

もしコードが短ければ、ここに投稿して、私の問題はすぐに解決したでしょう。しかし、このEAは1700行あり、さらに3つの外部インジケータがあり、その中でほとんどの計算が行われています...。だからメールのみですが、もう明らかにタダではやっていない。

この方が筋が通っていると思います。

//+------------------------------------------------------------------+
//|                                                       Priner.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"


double Var1, Var2, Var3, Var4;// 4-ре переменных для сохранения (у Вас они свои !!!)
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   fGet_MineGV();
//----
//Здесь ваш код
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   //Здесь ваш код
//----
   fSave_MineGV();
   return(0);
  }
//+------------------------------------------------------------------+
void fSave_MineGV (string fs_PrefName = "")     // префикс имени переменной
  {
    static datetime ldt_NewBar;
    datetime ldaTBeginBar = iTime (Symbol(), 1, 0);
//----
    //---- Сохраняемся в начале каждой минуты
    if (ldt_NewBar == ldaTBeginBar) return;
    ldt_NewBar = ldaTBeginBar;
    //---- Сохраняем поочереди значения каждой переменной
    string ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_1");
    GlobalVariableSet (ls_Name, Var1);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_2");
    GlobalVariableSet (ls_Name, Var2);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_3");
    GlobalVariableSet (ls_Name, Var3);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_4");
    GlobalVariableSet (ls_Name, Var4);
//----
  }
void fGet_MineGV (string fs_PrefName = "")     // префикс имени переменной
  {
    string ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_1");
//----
    //---- Восстанавливаем значения переменных
    if (GlobalVariableCheck (ls_Name)) Var1 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_2");
    if (GlobalVariableCheck (ls_Name)) Var2 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_3");
    if (GlobalVariableCheck (ls_Name)) Var3 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_4");
    if (GlobalVariableCheck (ls_Name)) Var4 = GlobalVariableGet (ls_Name);
  }  
//----
 
lottamer:


crap...最後に閉じたポジションのチケットの ような機能はありません。

最後のオープンポジションのGetTicketLastPos チケットがあります ...


最後に閉じたポジションのチケットが履歴に残ります。
 
не забыли ли вы удалить код, который вставляли раньше? если нет -- пришлите мне код сова и я вам вставлю в него функции.

もしかしたら、本当にどこかに残っているかもしれない。

私の実験がない別のきれいなEAに挿入したら、他のエラーが出てしまいました。

'if' - too complex expression     K:\test2\experts\02___AUDUSD.mq4 (1664, 2)
'=' - assignment expected         K:\test2\experts\02___AUDUSD.mq4 (1662, 24)
'if' - semicolon expected         K:\test2\experts\02___AUDUSD.mq4 (1664, 2)
3 error(s), 0 warning(s)        

とりあえず、メールで 問い合わせたところ

 

よく見てますね~、書いてあるとおりにしました。

しかし、私のEAにはreturnもdeinitもありません。大丈夫なんですか?まだエラーが出ます。

 
xant:

よく見てますね~、書いてある通りに全部やりましたよ。

しかし、私のExpert Advisorでは、returnもdeinitもありません。大丈夫なんですか?まだエラーが出ます。

TarasBYさんの回答ですが、彼のコードには小さな誤りがあり、そのためコンパイラが文句を言うのです。

私の投稿では、罵倒はありません。
 
rigonich:

最後に閉じたチケットは履歴に残ります。


履歴のアクセス方法を教えてください。

最後のチケットはどうすればいいんだ?

 

R772RA

やった!コンパイラは何のエラーもなく通過した。

リスペクト!

 
lottamer:


歴史の参照方法を教えてください。

は、これで最後の切符を手に入れることができるのか?


非ヒストリーの場合と同様に、OrderSelect(int index, int select, int pool=MODE_TRADES)関数においてのみMODE_TRADESの 代わりにMODE_HISTORYを 置き、OrdersHistoryTotal()の代わりにOrdersTotal()を使用します。