MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 383

 
konam1:
皆さん、こんにちは。各時間足のローソク足の始点にあるパラボリックの値を追跡する。
ヒストリーに流すと、パラボリックの位置が上から下に変わるときとその逆を除いて、ゼロバーのiSARはチャート上のポイントと一致する。
if (newbarall!=(iTime(Symbol(),60,0)))。
{
newbarall=iTime(Symbol(),60,0)とした。
Print (iTime(Symbol(),60,0))します。
Print ("SAR = ",NormalizeDouble(iSAR(Symbol(),60,0.02,0.2,0),Digits),");
};
それゆえ、次のような疑問を抱いた。
なぜ、このような瞬間にゼロバーのパラボリックが正確にカウントされないのでしょうか?
そして、実際に、それを回避する方法は、バーが開くと、ポイントが表示され、ろうそくの形成中に再計算することなく静的であるため。
助けてください)。ありがとうございました。

ゼロキャンドルで放物線を描く 点を観察すると、やはり静止しているわけではなく、位置を変え、上下に位置を変えるときだけでなく、一般的に、ある位置でわずかにずれることがあります(上下に動かず)。

 

横線が 消えない理由を教えてください。

   if(SellInvertedHammer == true)
   {
      //if ((Open1 < Close1 && delta_minus < 0) || (Open1 >= Close1 && delta_plus > 0))
      {
         if(!ObjectCreate(ChartID(),"Arrow_Down_InvertedHammer"+IntegerToString(InvertedHammerCandle),OBJ_ARROW_DOWN,0,TimeCurrent(),High[1] + 70*Point))
               {
               Print("Не удалось создать метку вниз");
               }
               ObjectSetInteger(ChartID(),"Arrow_Down_InvertedHammer"+IntegerToString(InvertedHammerCandle),OBJPROP_COLOR,clrRed);//--- установка цвета
               ObjectSetInteger(ChartID(),"Arrow_Down_InvertedHammer"+IntegerToString(InvertedHammerCandle),OBJPROP_STYLE,STYLE_SOLID);//--- установка стиля линии
               ObjectSetInteger(ChartID(),"Arrow_Down_InvertedHammer"+IntegerToString(InvertedHammerCandle),OBJPROP_WIDTH,1);//--- установка толщины линии
               ObjectSetInteger(ChartID(),"Arrow_Down_InvertedHammer"+IntegerToString(InvertedHammerCandle),OBJPROP_BACK,false);//--- отображение на переднем (false) или заднем (true) плане
               InvertedHammerCandle ++;
         Print ("Перевернутый молот");
         Print ("Дельта+ = " + IntegerToString (delta_plus));
         Print ("Дельта- = " + IntegerToString (delta_minus));
         Print ("Объем = " + IntegerToString (volume));
         Print ("Кумулитивная дельта = " + IntegerToString (cum_delta));
         
         if(!ObjectCreate(ChartID(),"UpLine_InvertedHammer"+IntegerToString(lineInvertedHammerCandle),OBJ_HLINE,0,TimeCurrent(),UpLine_InvertedHammer))
         {
         Print("Не удалось создать верхнюю линию");
         }
         ObjectSetInteger(ChartID(),"UpLine_InvertedHammer"+IntegerToString(lineInvertedHammerCandle),OBJPROP_COLOR,clrBlueViolet);//--- установим цвет прямоугольника 
         ObjectSetInteger(ChartID(),"UpLine_InvertedHammer"+IntegerToString(lineInvertedHammerCandle),OBJPROP_STYLE,STYLE_SOLID);//--- установим стиль линий прямоугольника 
         ObjectSetInteger(ChartID(),"UpLine_InvertedHammer"+IntegerToString(lineInvertedHammerCandle),OBJPROP_WIDTH,1);//--- установим толщину линий прямоугольника 
         ObjectSetInteger(ChartID(),"UpLine_InvertedHammer"+IntegerToString(lineInvertedHammerCandle),OBJPROP_BACK,false);//--- отобразим на переднем (false) или заднем (true) плане 
         
         
         if(!ObjectCreate(ChartID(),"DownLine_InvertedHammer"+IntegerToString(lineInvertedHammerCandle),OBJ_HLINE,0,TimeCurrent(),DownLine_InvertedHammer))
         {
         Print("Не удалось создать нижнюю линию");
         }
         ObjectSetInteger(ChartID(),"DownLine_InvertedHammer"+IntegerToString(lineInvertedHammerCandle),OBJPROP_COLOR,clrSlateBlue);//--- установим цвет прямоугольника 
         ObjectSetInteger(ChartID(),"DownLine_InvertedHammer"+IntegerToString(lineInvertedHammerCandle),OBJPROP_STYLE,STYLE_SOLID);//--- установим стиль линий прямоугольника 
         ObjectSetInteger(ChartID(),"DownLine_InvertedHammer"+IntegerToString(lineInvertedHammerCandle),OBJPROP_WIDTH,1);//--- установим толщину линий прямоугольника 
         ObjectSetInteger(ChartID(),"DownLine_InvertedHammer"+IntegerToString(lineInvertedHammerCandle),OBJPROP_BACK,false);//--- отобразим на переднем (false) или заднем (true) плане 
         lineInvertedHammerCandle ++;
                         
      }

   }
   if(ma2 > UpLine_InvertedHammer && ma2 > DownLine_InvertedHammer && ma1 > UpLine_InvertedHammer && ma1 > DownLine_InvertedHammer)
               {
                  UpLine_InvertedHammer = 0;
                  DownLine_InvertedHammer = 0;
               }
      
   if (ma2 < UpLine_InvertedHammer && ma2 > DownLine_InvertedHammer && ma1 < UpLine_InvertedHammer && ma1 < DownLine_InvertedHammer)
         {
            
             if(!ObjectCreate(ChartID(),"Arrow_Sell_InvertedHammer"+IntegerToString(InvertedHammerCandleSell),OBJ_ARROW_SELL,0,TimeCurrent(),Low[1] + 50*Point))
                {
                Print("Не удалось создать метку вниз");
                }
                ObjectSetInteger(ChartID(),"Arrow_Sell_InvertedHammer"+IntegerToString(InvertedHammerCandleSell),OBJPROP_COLOR,clrRed);//--- установка цвета
                ObjectSetInteger(ChartID(),"Arrow_Sell_InvertedHammer"+IntegerToString(InvertedHammerCandleSell),OBJPROP_STYLE,STYLE_SOLID);//--- установка стиля линии
                ObjectSetInteger(ChartID(),"Arrow_Sell_InvertedHammer"+IntegerToString(InvertedHammerCandleSell),OBJPROP_WIDTH,1);//--- установка толщины линии
                ObjectSetInteger(ChartID(),"Arrow_Sell_InvertedHammer"+IntegerToString(InvertedHammerCandleSell),OBJPROP_BACK,false);//--- отображение на переднем (false) или заднем (true) плане
                InvertedHammerCandleSell ++;
                Print("Точка входа SELL по разворотной свече 'Перевернутый молот'");
                UpLine_InvertedHammer = 0;
                DownLine_InvertedHammer = 0;
                
                int upline;
                int downline;
                upline = ObjectFind(ChartID(),"UpLine_InvertedHammer"+IntegerToString(lineInvertedHammerCandle));
                downline = ObjectFind(ChartID(),"DownLine_InvertedHammer"+IntegerToString(lineInvertedHammerCandle));
                if(upline > -1 && downline > -1)
                  {
                   ObjectDelete("UpLine_InvertedHammer"+IntegerToString(lineInvertedHammerCandle));
                   ObjectDelete("DownLine_InvertedHammer"+IntegerToString(lineInvertedHammerCandle));
                   Print("Линии удалены");
                  }
                  Print("Не удалось удалить верхнюю и нижнюю линии");
                
          }

これはコード全体の一部です。必要であれば、コード全体を掲載します


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

 

- MT4またはMT5でEAの書き方を学びたい、実際にコードのニュアンスをすべて説明できる経験豊富なEAライターを必要としている。 既製のEAを書く助けは必要ない、私はテストのすべてをチェックし、条件での使用方法を理解するための取引とアイデアのいくつかの経験を持って、私は別の条件を書く方法を学ぶ必要があります。

 
Artyom Trishkin:

ゼロキャンドル上のパラボリックのポイントを観察すると、やはり静止しているわけではなく、位置を変えており、上下に位置を変えたときだけでなく、一般的に、ある位置で少しずれることがある(上下に移行しない)。


とはいえ、歴史は「変遷」の瞬間を除けば完全に一致する。1~2ポイントの誤差でも嬉しい。 移行」の時は20pips以上になることもある。

問題は同じで、どうすれば回避できるのか。感謝

 
konam1:

とはいえ、歴史は「変遷」の瞬間を除けば完全に一致する。1~2ポイントの誤差でも嬉しい。 移行」の時は20pips以上になることもある。

問題は同じで、どうすれば回避できるのか。ありがとうございました。

そもそもこの構造は何なのか?

if(newbarall!=(iTime(Symbol(),60,0)))
  {
   newbarall=iTime(Symbol(),60,0);  
   Print(iTime(Symbol(),60,0));
   Print("SAR = ",NormalizeDouble(iSAR(Symbol(),60,0.02,0.2,0),Digits));
  };

何を与える のか?

なぜ、このように時刻を印字 するのですか?

また、なぜこの ようにパラボリックの 値を印字するのでしょうか?

 
Artyom Trishkin:

いったいどんなデザインなんだ?

このようなデザインにするメリットは何 でしょうか?

なぜ、このように時刻を印字 するのですか?

なぜ、この ようにパラボリックの値を印字するのでしょうか?


-この構文では、新しい時間足のローソク足が現れたときに条件を満たします。時間足のローソク足の時間が変数newbarallの値と一致しない場合、変数に新しい時間を書き込んで条件を満たします。

1時間キャンドルの開閉時刻 を表示

- パラボリックの値は、チャートに表示されているものと同じになるように、小数点以下4桁で四捨五入しています。

 
konam1:

-このデザインは、新しい1時間のローソク足が発生したときに条件を与えます:1時間のローソク足の時間が変数newbarallの値と一致しない場合、変数に新しい時間を書き込んで条件を満たします。

1時間キャンドルの開閉時刻 を表示

- パラボリック値は、チャートに表示されているものと同じになるように、小数点以下4桁で四捨五入しています

1.いいえ、そうではありません。

2.このようにしましょう

3.その関数で本当に実数を印刷しているのですか?

4.なぜ閉じ括弧の後に ; が必要なのですか?

 
Artyom Trishkin:

1.いいえ、そうではありません。

2.こうでありたい

3.その関数で本当に実数を印刷しているのですか?

4.なぜ閉じ括弧の後に ; が必要なのですか?


1.それにしても、ローソクの始動時にしかアルゴリズムが働かないとは、このような構造のどこに間違いがあるのでしょうか?

3.印字されている数字は、例えば1.1820なので間違いないです。

4.コードの一部が表示されます。

 
konam1:

1.それにもかかわらず、アルゴリズムは、ろうそくのオープニングにのみ動作し、そのような設計のエラーは何ですか?

3.例えば1.1820の数字が印刷されているので、確かに。

4.コードの一部が与えられている。

1.まあ、見逃したかもしれない。今は朝の5時半だし...。

3.DoubleToString()関数

4.しかし、条件と 複合演算子 を持っていますね。

if(condition) { }

それ以外に解釈のしようがないと思います。なぜ演算子の後に「;」が必要なのですか?

 
konam1:
それゆえ、次のような疑問を抱いた。
なぜ、この瞬間にゼロバーのパラボリックが不正にカウントされるのでしょうか?
そして、実際には、それを回避する方法、バーが開いたときにポイントが表示され、ろうそくの形成中に再計算することなく静的であるので。
助けてください)。ありがとうございました。

ローソク足形成中にポイントが出現し、再計算されることなく静 止している」という記述は正しくなく、価格がパラボリックを割るとポイントが再描画されます。
ブレイクアウトはバーオープン時だけでなく、いつでも起こりうるので、パラボリックを1ティックごとに 再計算する必要があります。