[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 598

 
alsu:

インジケーターのロジックを完全に分解する。

まずは交換してください。

また

それ以外の場合、最初のブロックが最初に実行され、次に2番目のブロックが実行されます。With else - 前者か後者のどちらかです。



ooo!ロジックが他に足りない!)すぐに変えます!はい、そしてその場で:私はテキストのどこにでも4番ではなく、3番で書くと、このようになります。
iFractals(Symbol(),PERIOD_H1,MODE_UPPER,3);

3番までのバーがあれば全て動作するようですが、トレードはしていません、何が問題なのでしょうか?

また、インジケーターのロジックについては、少し混乱しています。私はインディケータがどのように動作するかを知っている、私はちょうどifractalsがゼロに等しくないことを確認するアルゴリズムが必要であり、あなたは私にこの条件を削除するように提供し、それは余分なのですか? なぜ私はそれを二回書くのですか?

 
alsu:

インジケーターのロジックを完全に分解する。

まずは交換してください。

さらに

それ以外の場合、最初のブロックが最初に実行され、次に2番目のブロックが実行されます。With else - 前者か後者のどちらかです。



全部入れ替えたけど、なぜか同じように飛んでる・・・((((;゜Д゜)))
 
Vinin:

戦うことが可能であり、EAの作業を中断することも可能である。アプローチを変えればいいのです。


どうやって?

コードの冒頭で、すべての未決済注文を調べ、チケットの値を 注文に割り当てる、または他の方法がありますか?

 
Cruc:


コードの冒頭で、すべての未決済注文を調べ、チケットの値を注文に割り当てる、または他の方法がありますか?


EAが1つまたは2つのポジションを開く場合、これを行うことができます。
 
テスターでEAが動かなくなる原因を知っている人はいますか?
 
Vinin:

顧問が1~2ポジションを開けてくれればOKです。

EAは多通貨対応なので、単純な操作では一発で解決しないこともあるようです((。そして、経験もない。
 
Cruc:

私のExpert Advisorは多通貨対応で、簡単な操作では一度で解決しないことが多いようです((.そして、経験もない。


注文会計を正しく行うだけでいいのです。いろいろな例がありますね。

そして、経験。経験がものを言う。どこにも行きません。

 
Vinin:


注文が正しく記録されるようにすればよいのです。例はいくらでもある。

そして、経験。経験がものを言う。どこにも行かない。


回答ありがとうございました!アーカイブを掘ってみます。
 
skyjet:

こんばんは、多通貨MACD Expert Advisorの件でご相談です。EAはポジションのオープン基準に正しく従いますが、「条件付き」クローズは機能しません。確かにトレーリングストップを使うようになったが、正しい終値では休みにならない。

主要部分はこんな感じです。

そして、これがエンディングブロックです。エラーを発見するために助けてください


何度もすみませんが、いくらあがいてもエラーが見つかりません

//+------------------------------------------------------------------+
string lSymbol;
int init ()
{ 
 lSymbol = Symbol();
 return (0);
}
int deinit()
{return(0);}
int start()
  {
   double MacdCurrent, MacdPrevious, SignalCurrent;
   double SignalPrevious, MaCurrent, MaPrevious;
   double bid, ask, point, digits;
   int cnt, ticket, total;
   
  total = SymbolOrdersTotal (lSymbol);
  
  if (total<1);
  {
    bid   = MarketInfo(lSymbol,MODE_BID);
    ask   = MarketInfo(lSymbol,MODE_ASK);
    point = MarketInfo(lSymbol,MODE_POINT);
    digits= MarketInfo(lSymbol,MODE_DIGITS);



Так выглядит оснавная часть, а это злопалучный блок закрытия



 for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&   // check for opened position 
         OrderSymbol()==lSymbol())  // check for symbol
        {
         if(OrderType()==OP_BUY)   // long position is opened
           {
            // should it be closed?
            if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious &&
               MacdCurrent>(MACDCloseLevel*point))
                {
                 OrderClose(OrderTicket(),OrderLots(),bid,3,Violet); // close position
                 return(0); // exit
                }
            // check for trailing stop
            if(TrailingStop>0)  
              {                 
               if(bid-OrderOpenPrice()>point*TrailingStop)
                 {
                  if(OrderStopLoss()<bid-point*TrailingStop)
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),bid-point*TrailingStop,OrderTakeProfit(),0,Green);
                     return(0);
                    }
                 }
              }
           }
         else // go to short position
           {
            // should it be closed?
            if(MacdCurrent<0 && MacdCurrent>SignalCurrent &&
               MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*point))
              {
               OrderClose(OrderTicket(),OrderLots(),ask,3,Violet); // close position
               return(0); // exit
              }
            // check for trailing stop
            if(TrailingStop>0)  
              {                 
               if((OrderOpenPrice()-ask)>(point*TrailingStop))
                 {
                  if((OrderStopLoss()>(ask+point*TrailingStop)) || (OrderStopLoss()==0))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),ask+point*TrailingStop,OrderTakeProfit(),0,Red);
                     return(0);
                    }
                }
              }
           }
        }
     }
   return(0);
  }
  
   
  int SymbolOrdersTotal(string lSymbol)
{
   int Res=0;
   int total=OrdersTotal();
   for (int i=0;i<total;i++) 
   {
      if (OrderSelect(i, SELECT_BY_POS))
      {
         if (OrderSymbol()==lSymbol)
         {
            Res++;
         }
      }
   }
   return(Res);
}
// the end.
 
Qwertee:
全部入れ替えたけど、なぜか同じように飛んでる・・・((((;゜Д゜)))
ログに何を出力したか、どんなメッセージを出力したかを書き出す