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

 
VladimirR:

そのオプションも機能しません



何を求めているのでしょうね。最大面積を求める方法は他にもあります。例えば、分析的な
 
Vinin:

ループの中でカウンターの値を2回変更する必要があるのはなぜだろう。そして、なぜかS2の(予備)割り当てがない。開始時のこの値は0であり、2回目の反復で(正確には3回目で)初めて実数比較が行われる(0から数えるか1から数えるかによって決まる)。
割り当てがなく、列挙は領域の最小値から始まるので、それは厳密に正であり、0でよいです。2回目のカウンターの値はどこで変化するのでしょうか?
 
Vinin:

あなたも何を求めているのでしょうね。最大面積を求める方法は他にもあります。分析的なものとか。
全然問題ないです。ブレークオペレーターの 動作の例として使われる簡単な作業です。後で正しいプログラムを書くために、ループの前にi,j変数をコミットしないと、なぜfor(int i=1, j=499; i<500; i++,j--) と書けないのか知りたい!
 
VladimirR:
それはまったく問題ありません。これは、ブレークオペレーターの動作の例として使われる簡単なタスクです。後で正しいプログラムを書くために、ループの前にi,j変数をコミットしないと、なぜfor(int i=1, j=499; i<500; i++,j--) が書けないのか知りたいのです!

コンパイラのバグでしょう。

そのようにコンパイルされないのです。

for( int i=1, j=499; i<500; i++,j--) //последовательный перебор значений площади

そして、このようにコンパイルされるのです。

int i, j;
for( i=1, j=499; i<500; i++,j--) //последовательный перебор значений площади

そして、このようにコンパイルされるのです。

int i=1, j=499;
for( ; i<500; i++,j--) //последовательный перебор значений площади
 

みなさん、こんにちは!!!

インジケータからRiskRewardの数値を出すのを手伝ってください。Expert Advisorに取り込めない。

ファイル:
 
demlin:

みなさん、こんにちは!!!

インジケータからRiskRewardの数値を出すのを手伝ってください。Expert Advisorに取り込めない。


ソースコードはどこにあるのですか?
 

みんな、どうしてそんなに答えにくいんだ、それとも答えたくないだけか?そんなくだらないことをここで仕分けしているくせに、コードの一部を書くのを手伝うのは怠慢だ。もう一回だけお願いします、もし助けてくれないなら、コースに行きます、ここでお願いするのはもう嫌です。


もう一度言いますが、EAが最初のティックでチャートに貼り付けられた後、Ask 価格を固定します。 そして取引中、価格が例えば10%上昇するとすぐに(ありえないことは明らかです、比喩です)、EAは「価格が10%上昇しました」というメッセージでトレーダーに通知する必要があります。

 
demlin:

みなさん、こんにちは!!!

インジケータからRiskRewardの数値を出すのを手伝ってください。Expert Advisorに取り込めない。

チャート上のすべてのオブジェクトを調べて、lblというオブジェクトを見つけ、そこからFXRanger: Risk:Reward=x.xxx という文字列を取り出し、それを解析して x.xxx を2倍に変換してください。
 

オーダーがSLで始まり、反対側のオーダーが2つある場合、2つ目のオーダーではSLが削除されるように修正するのを助けてください。

感謝

void Trailing()
{
//-----
  double Up = iCustom(NULL,0,"NLO",TrailPeriod,0,1);
  double Dn = iCustom(NULL,0,"NLO",TrailPeriod,1,1);
//-----
  int Orders = OrdersTotal();
  for (int i=0; i<Orders; i++)
  {
    if(!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
    if(OrderSymbol() != Symbol()) continue;
    {
      if(OrderType() == OP_BUY && OrderMagicNumber()==Magic && Up > OrderOpenPrice()
      && OrderStopLoss() != Up && (OrderStopLoss() == 0 || Up > OrderStopLoss()))
      {
        OrderModify(OrderTicket(),OrderOpenPrice(),Up,OrderTakeProfit(),0,CLR_NONE);
      }
      if(OrderType() == OP_SELL && OrderMagicNumber()==Magic && Dn < OrderOpenPrice()
      && OrderStopLoss() != Dn && (OrderStopLoss() == 0 || Dn < OrderStopLoss()))
      {
        OrderModify(OrderTicket(),OrderOpenPrice(),Dn,OrderTakeProfit(),0,CLR_NONE);
      }
    }
  }
}
 

こんにちは。チュートリアルの例題がまたもや解けません。

タスク17最初の牧場には1,000頭の羊がいる。毎日、最初の牧場の羊の数が1%ずつ増えていく。第一農場の羊が5万頭になった日に、10%の羊を第二農場に移します。第2農場の羊の数が35,000頭になるまでには、どれくらいの時間がかかるのでしょうか?(1ヶ月の営業日が30日あると仮定)。

//--------------------------------------------------------------------
// othersheep.mq4
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------------
int start()                               // Специальная ф-ия start()
  {
//--------------------------------------------------------------------
   int
   day,                                   // Текущий день месяца
   Mons;                                  // Искомое количест. месяцев
   double
   One_Farm    =1000.0,                   // Количество на 1 ферме
   Perc_day    =1,                        // Ежедневный подъём, %
   One_Farm_max=50000.0,                  // Пороговое значение
   Perc_exit   =10,                       // Разовый вывод, %
   Purpose     =35000.0,                  // Необх. колич. на 2 ферме
   Two_Farm;                              // Количество на 2 ферме
//--------------------------------------------------------------------
   while(Two_Farm < Purpose)              // До достижения цели
     {                                    // Начало тела внешн. цикла
      //--------------------------------------------------------------
      for(day=1; day<=30 && Two_Farm < Purpose; day++)// Цикл по дням 
        {
         One_Farm=One_Farm*(1+Perc_day/100);//Накопл. на 1 ферме
         if (One_Farm < One_Farm_max)     // Если меньше допустимого,.
            continue;                     // .. то овец не переводим
         Two_Farm=Two_Farm+One_Farm*Perc_exit/100;//Накопл. на 2 ферме
         One_Farm=One_Farm*(1-Perc_exit/100);     //Остаток на 1 ферме
        }
      //--------------------------------------------------------------
      if (Two_Farm>=Purpose)              // Если цель достигнута,..
         continue;                        // .. то месяцы не считаем
      Mons++;                             // Считаем месяцы
     }                                    // Конец тела внешнего цикла
//--------------------------------------------------------------------
   Alert("Цель будет достигнута через ",Mons," мес. и ",day," дн.");
   return;                                // Выход из функции start()
  }
//-------------------------------------------------------------------

この例では、ループからの出口

 for(day=1; day<=30 && Two_Farm < Purpose; day++)// Цикл по дням 

余分な日」は常に追加される、つまり計算が行われない日が追加されるが、サイクルがネストされると「余分な日」が残る。

制御が戻るたびに日数が再集計されるので、必須ではありません。 しかし、ループを抜けると

while(Two_Farm < Purpose)              // До достижения цели

余分な日 "が残っている。その結果、間違った答えが印刷されることになります。

私の推理が正しいのか、それとも何か間違っていたのか、教えてください。