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

 
vitor:
すみませんが、以前はRumuseで仕事をしていて、今はMT4を勉強中です。私はここではまだ "Dummie "なんです。11 .09 .引用を開始できない。何が問題なのか、教えてください。喜んでお手伝いさせていただきます。
新しいデモ口座を開設し、それでもダメなら端末を再インストールしてください。
 
こんにちは、同じEAによって開かれた注文がトレーダーによって閉じられた場合、またはSLやTPによってEAを無効にする方法を教えてください。
 
eropov:
こんにちは、同じEAによって開かれた注文がトレーダーによって、またはSLやTPによって閉じられた場合、EAを無効にする方法を教えてください。
ほら、アドバイザーってそういうものでしょ、アドバイスしなくても...注文が開いてたらコーリャおじさんが来て全部閉めてくれるから安心してね。
 

ビアゴッド

Понимаете, советники на то и советники, что не нужно им советовать... а если ордер открыт, то не переживайте, дядя Коля прийдет и всё закроет.

では、EAの動作を停止させることはできないのですか?

 
eropov:

ビアゴッド

では、EAを停止させることはできないのですか?

端末のボタンを押してEAを無効化し、もちろん注文をロールバックすることはできませんので、手動で閉じてください。


 

ビアゴッド

端末のボタンを押してEAを無効化し、注文をロールバックすることはできません。もちろん、手動で閉じて ください。

SLとTPで注文を出すフクロウを書いています。

注文がTPによって閉じられたり、トレーダーによって閉じられた場合、私はEAを停止しなければならないという条件が必要です。プログラム的にどのように実装するのか?

 

ループが2つしかない場合、なぜiは最初に0に等しく、すぐに4に等しくなるのでしょうか?

for(i=0,g=0,c=0;i<OrdersTotal();i++)
    {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false) break;
    if(OrderMagicNumber() == MasterMagicNumber)
      {
      starttime = OrderOpenTime();
      ArrayResize(prices,ArraySize(prices)+TradesCount);
      if(OrderSelect(i+1,SELECT_BY_POS,MODE_TRADES))
      if(OrderMagicNumber() == MasterMagicNumber) endtime = OrderOpenTime();
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      times[i] = starttime;
      times[i+1] = endtime;
      tickets[i] = OrderTicket();
      symbol = OrderSymbol();
      Alert(i);
      while(g < TradesCount*(i+1))
        {
        if(OrderType() == OP_BUY)
          {
          if(g == TradesCount*i)
            {
            prices[g] = OrderOpenPrice()-LowOpen*Point;
            }else
            {
            prices[g] = prices[g-1]-step*Point;
            }
          }
        if(OrderType() == OP_SELL)
          {
          if(g == TradesCount*i)
            {
            prices[g] = OrderOpenPrice()+HighOpen*Point;
            }else
            {
            prices[g] = prices[g-1]+step*Point;
            }
          }
        g++;
        }
      }
    }

このスクリプトから、アラートは0, 4を出力します。

 
Помогите решить задачу, почему если в цикле всего 2 прохода i сначала равна 0, а затем сразу равна 4?

私が理解する限り、このコード

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false) break;

ブレークする。つまり、ループの先頭に行き、ループの条件に従ってiを増加さ せる。

おそらくこんな感じ

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false) {i--; break; }

 
こんにちは、2つの平均をベースにしたシンプルなEAがあれば教えていただけませんか?フィルターもトレーリングストップも何もなしで。つまり、短いものが長いものと下から上へクロスすれば、買い注文が出され、売り注文が閉じられ、逆に短いものが長いものと上から下へクロスすれば、売り注文が 出され、買い注文が閉じられるということです。
 
first_may:
こんにちは、2つの平均をベースにしたシンプルなEAがあれば教えていただけませんか?フィルターもトレーリングストップも何もなしで。つまり、短いものが長いものと下から上へクロスすれば、買い注文が出され、売り注文が閉じられ、逆に短いものが長いものと上から下へクロスすれば、売り注文が出され、買い注文が閉じられるということです。
EAsの 項のCodebaseを参照。