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

 
abolk:

global_trailing_SP 変数をどのように読み込んでいるのか見せてください。


現在、メインポジションの場合、トレーリング値はこのようにATRで計算されています。

void Trailing_Stop_by_ATR_SP(int Timeframe,int Period_ATR_SP,double Multiply_SP,int digits_symbol,int Magic)
{  
   double High_1     = NormalizeDouble(iHigh(Symbol(),Timeframe,1),Digits);
   double Low_1      = NormalizeDouble(iLow(Symbol(),Timeframe,1),Digits);
   double atr        = iATR(Symbol(),Timeframe,Period_ATR_SP,1);
   double new_trail  = Low_1 + NormalizeDouble(((Multiply_SP*atr)*digits_symbol)*Point,Digits);
    
   for(int count = OrdersTotal()-1; count >= 0; count--)
      {  OrderSelect(count,SELECT_BY_POS,MODE_TRADES);
      
         if (OrderType() == OP_SELL && OrderMagicNumber() == Magic)
            {  double Op_Price = NormalizeDouble(OrderOpenPrice(),Digits);
               double Stp_Loss = NormalizeDouble(OrderStopLoss(),Digits);
               
               if (new_trail < Stp_Loss && new_trail > High_1)
                  {  
                     OrderModify(OrderTicket(),Op_Price,new_trail,0,0,White);
                  }
            }
      }
}
しかし、メインポジションはエラーなくトレールしているので問題はない。問題は、他のポジションに同じ値を割り当てることである。
 
FOReignEXchange:

だから、わからないんです。主注文の変更時に保留注文が存在するか?

存在する場合、主注文の変更と保留注文の変更は同じブロックになります。そして、もしメインの注文が変更されたら、保留中の注文も同じように変更されるはずです。

もうひとつは、私たちの発想が通用しないことです。つまり、コンディションにミスがあるということです。上に示した、主順序の変更の条件と同じように、すべてを行うようにしてください。ロジックに間違いがあるように思います。驚きを隠せません。ここでは、すべてが非常に複雑なのです。もっとシンプルでいいんです。


もっとシンプルにしたほうがいいということも十分ありえます。これは経験不足です)。

現時点ではこのように、別機能でメインポジションの末尾につく分です。そして、保留中の注文や 他のメジャーのポジションがある場合、それらの値をメインポジションのストップと照合します。そして、両者が異なる場合は、メインの値をとる。

 
FOReignEXchange:

当然といえば当然なのですが。あなたにはちょっと複雑な話ですね。シンプルにしたほうがいい。

シンプルにしたんです。今のところ問題は解消しているようです。全ポジションにトレーリングを組み合わせています。保留中の注文の 修正は、別の機能で行う予定です。ありがとうございました)))
 
tol64:
よりシンプルにしました。今のところ問題は解消しているようです。ありがとうございました。))


え、ポーズって修正可能なんだっけ?:)

筆跡を変えなければならない。字がきれいであればあるほど、間違いは少なくなります。すべてを一つの山に詰め込まないように、変数やその他の不必要なものはできるだけ少なくする。ブロックがはっきり見えるように、中括弧は必ず改行で 始める。

 
FOReignEXchange:

え、トレーリングストップが修正されたとか?


はい、上記の関数、ATR trailingでは、Magic checkを除外して、pauseを追加しています。

if (OrderType() == OP_SELL || OrderType() == OP_SELLSTOP) 
 
FOReignEXchange:


手書きは変えなければならない。字がきれいであればあるほど、間違いは少なくなります。できるだけ変数や不要なものを排除して、すべてを一つの山に詰め込まないようにしましょう。ブロックがはっきり見えるように、中括弧は必ず改行で書きます。

ヒントをありがとうございました。私のニューロンに最高のものを刻み込みます))
 
tol64:


はい、上記の関数、ATR trailingでは、Magic checkを除外して、pauseを追加しました。


そうそう、今マジックって言おうと思ってたんだ。ほらね。不要な変数が不要になる。では、また。
 
FOReignEXchange:

そうそう、マジクって言おうと思ってた。ほらね。不要な変数が不要になる。では、また。


それは賢明な考えだ。"不必要な変数は必要ない"。
マジックの必要はない--なぜマジックの順番を確認するのか?
他のEAからの注文を修正すればOKです。
マジシャンをクラス全般として排除すべきです。その開発者は時間を無駄にしましたし、私たちはあらゆる種類のマジシャンに洗脳されてきました。

p.s. ダンサーにも、邪魔なものは切り詰めた方がいいんです。

 
abolk:


wise idea - "no need for extra variables" and "no need for the magician" - Why check the order for a magician? modify order from another advisor - no big deal. exclude magician as a class at all.



))))いや、マジシャンを辞めた方がいいと思うんだ。保留の ままにしておけばいいんだよ。

正確に言うと、必要なマジシャンは残しておくべきだということです。複数のExpert Advisorを異なるチャートで使用する場合、シンボルも含めてチェックする必要があります。でも、まだここまで来ていない。))

 

私はマジックを一切使いません。一度に数点しかない場合もありますが。チケットを使っています。OrderSelectから確認する方がはるかに簡単です。そして、OrderSendという関数が明確になる。まあ、誰だって自分の字は自分で書くものですからね。個人的には、マジックを使わなくても困ったことはない。

チケットはどこにも行きません。それがあると便利なんです。