どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 235

 

そしてもちろん、次の買いを建てるときには、 すべてのポジションで すぐにロールオーバー StopLossは平均価格+50pipsに等しい)して います。

これは、時々、最後のポジションを取らない悪党です。 3つのポジションがあったのですが、そのうち4つが開きました。4番目にStopLossを つけるのを忘れていました。

DedZoneは開催されるべきです。

StopLevel = (MarketInfo(Symbol(), MODE_STOPLEVEL)*Point);       // текущий уровень стопов
FreezeLevel = (MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point);        // уровень заморозки
DedZone = MathMax(StopLevel,FreezeLevel);              // Зона запрета розмещения ордеров

DedZoneの計算はExpert Advisorの初期設定にあります。

 
Limita:

そしてもちろん、次の買いを建てるときには、 すべてのポジションで すぐにロールオーバー StopLossは平均価格+50pipsに等しい)して います。

これは、時々、最後のポジションを取らない悪党です。 3つのポジションがあったのですが、そのうち4つが開きました。4番目にStopLossを つけるのを忘れていました。

DedZoneは開催されるべきです。

DedZoneはExpert Advisorの初期化中です。

StopLevel = (MarketInfo(Symbol(), MODE_STOPLEVEL)*Point);       // текущий уровень стопов
FreezeLevel = (MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point);        // уровень заморозки
DedZone = MathMax(StopLevel,FreezeLevel);              // Зона запрета розмещения ордеров

両方がゼロになったら、どうする?アルパリはこのような場合、スプレッド*2を使用します。

そして、そのセリフのロジックについての私の質問には答えていない。

 
ALXIMIKS:

このようにするのが良いのです(あなたのやり方では、オーダーの修正・削除の際に問題があると書いている人がいました)。

そして、なぜオイルやバターなのか?(何かを放っておく)。


ありがとうございました。

専門家の意見と一致しているようです :))

 
artmedia70:

そして、そのセリフのロジックについて、私の質問に答えていない。


artmedia70 です。

EAの動作のロジック全体は、論理ブロックに分けることができ、条件によって、実行されたりされなかったりします。

自分の目的に合わせて、このブロックは中括弧で囲まれたいくつかの文字列にすることができることがわかる。

If (条件) {条件が真であれば、これらの波括弧で囲まれたブロックが実行される}。

それ以外の場合{ 上記の条件が 真でない場合、これらの波括弧で囲まれたブロックが実行される}。

条件の後に中括弧がない場合、条件が真のときに実行されるブロックは、条件の直後の一行となる。

If (条件) この行が実行される

それ以外の 場合は、この行が実行されます。

私の例では、Ifは if、otherwiseは elseです。

ここに撮影

 
artmedia70:

そして、両方がゼロになったら?アルパリはその場合、スプレッド*2を使用します。

そして、その文字列のロジックについての私の質問には答えていません。



アルパリに関する情報をありがとうございました。

LINEロジックについては、ALXIMIKSさんが回答しています。

すべての条件が成立する場合にのみ、修正を行うべきであることを、私自身のために付け加えておきます。少なくとも1つが失敗すれば、次に進みます。

 
Limita:


アルパリに関する情報をありがとうございました。

ストリング・ロジックについて、ALXIMIKSはこう答えている。

その場合、すべての条件が成立した場合にのみ、修正が行われることを付け加えておきます。少なくとも1つでも失敗すれば、次に進む。

かつて誰かに向けて書いた自分の言葉を、なぜか見せてくれたのだ。

ロジックについての質問に答えてもらいたかったのです。このコードブロックでは、すべてのif()が次々に実行されます。1番目の条件が真であれば2番目も真になり、2番目が真であれば3番目も真になる、という意味だが...。1つ目の条件が真でなければ、2つ目は実行されず、3つ目が再度チェックされます。

やはり、そういうものなのかもしれませんね。

bool ProfitManagement() {
   double StopLossBuy = BuyAP+Profit*Point;                             //Вычисляем StopLoss
   double TakeProfitBuy = BuyAP + Profit*Point;                  //Вычисляем цену TakeProfit
   double StopLossSell = SellAP-Profit*Point;
   double TakeProfitSell = SellAP - Profit*Point;
   RefreshRates();
   for(int good = 0; good < OrdersTotal(); good ++) {
      if(OrderSelect (good, SELECT_BY_POS)) {            
         if (OrderMagicNumber()!=MagicNumber)   continue;
         if (OrderSymbol()!=Symbol())           continue;
//-------------------------Order Buy-----------------------------------------------------  
         if (OrderType()==OP_BUY) {                             
            if (BuyAP < Bid) { 
               if (MathAbs(OrderStopLoss() - StopLossBuy) >= Tick) { // Профит не равен нужному
                  if (Bid-StopLossBuy>DedZone) {                     // Уровень достаточно удален от цены
                     if (WaitForTradeContext()) {                    // Свободен ли торговый поток?
                        if (!OrderModify(OrderTicket(), 0, NP(StopLossBuy), 0, 0, Lime)) {
                           Alert (Symbol()," Хрень со стопами! ",   GetLastError());
                           return(false);
                           }
                        }
                     }
                  }
               }
            }
//-------------------------Order Buy-----------------------------------------------------  
         if (OrderType()==OP_SELL) {                             
            // вся та же хрень...
            }
//-------------------------Order Buy-----------------------------------------------------  
         }
      }
   return(true);
}

これはあくまで私の推測ですが、あなたが考えているロジックが全く分からないし、変数や関数の一部が何を行い、何を含み、何を返すのか分からないからです。

 
artmedia70:

1)かつて誰かに向けて書いた自分の言葉をなぜか見せてくれた。

2)そういう理屈を言ってほしかったのです。そのブロックの中の全てのif()が次々に進行していますね。つまり、第一条件が真なら第二条件も真になる、第二条件が真なら第三条件も真になる、などということだが......。1つ目の条件が真でなければ、2つ目は実行されず、3つ目が再度チェックされます。

1) それは、あなただけでなく、すべての人に向けたものでしたね。

2)数日前、あなたはすでにこのような発言をしたことがあります。

さて、簡単なスクリプトを作ってみました。

int start(){
 if (3>3)
 if (5>3)
 if (5>3){Alert ("AAAAAAAAAAAAAAAAAAAAAAA");}
} 

そして、それはあなたが間違っていたことが判明しました:NO ALERT !!!

 
ALXIMIKS:

1) それは、あなただけでなく、すべての人に向けたものでしたね。

2)数日前にも一度そのような発言をされていますが、その時は情報を再確認するのを忘れてしまいました。

さて、簡単なスクリプトを作ってみました。

そして、それはあなたが間違っていたことが判明しました:NO ALERT !!!

int start(){
 if (3>3)
 if (5>3)
 if (5>3){Alert ("AAAAAAAAAAAAAAAAAAAAAAA");}
} 

まあ、そうなんですけどね。この場合、先ほど、中括弧なしで何をどのようにネストした条件を強制するのかを書いたのは、少し性急でした。この状況下で、あなたは正しい。なぜかわかりますか?

コードの中でelseが実行されるようにしてみてください。

 
artmedia70:

まあ、そうなんですけどね。この場合、先ほど、中括弧なしで何をどのようにネストした条件を強制するのかを書いたのは、少し性急だったようです。この状況下で、あなたは正しい。なぜかわかりますか?

コードの中でelseが実行されるようにしてみてください。


int start(){
 int a=0;
 if (3>3)
 if (5>3)
 if (5>3){Alert ("AAAAAAAAAAAAAAAAAAAAAAA"); a=5;}
 else Alert ("a=", a);
}

このスクリプトからAlertは出ない。Elseは、「if (5>3){Alert ("AAAAAAAAAAAAAAA"); a=5;}」という 条件です。"

謝辞:

int start(){
 int a=0;
 if (5>3)
 if (5>3)
 if (3>3){Alert ("AAAAAAAAAAAAAAAAAAAAAAA"); a=5;}
 else Alert ("a=", a);
}

は、anAlert: "a=0 "を持つ。

結果 - 条件の失敗処理は、ある一連の条件を列挙する際に中括弧"{"を使用しない場合、最後の条件に対してのみ可能である。

 
ALXIMIKS:

このスクリプトからAlertは出ない。Elseは、「if (5>3){Alert ("AAAAAAAAAAAAAAA"); a=5;}」という 条件です。"

謝辞:

は、anAlert: "a=0 "を持つ。

その結果、ある一連の条件の列挙中に中括弧"{"を使用しない場合、最後の条件に対してのみ非条件処理が可能になる。


つまり、論理的な分岐を整理するために括弧が必要なのです。それがなければ、第一条件は素通りです。真でない場合、他の条件は実行されない。

工夫してみてください。

 if (a>b)
    if (b>c) 
        Alert(" условие if (a>b && b>c) выполнено ");
if (d>e) 
    if (e>f) 
         Alert(" условие if (d>e && e>f) выполнено");

そしてその後に、他に何を指しているのかを考えてみてください。

if (a>b)
    if (b>c) 
        Alert(" условие if (a>b && b>c) выполнено ");
else if (d>e) 
    if (e>f) 
         Alert(" условие if (d>e && e>f) выполнено");