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

 
ifitstrue:

に関する質問

過去のH1にトレンドラインを引くとしたら、最初のM1バーの指数はどうなるのでしょうか?

そして、ラインの開始時間と終了時間によって、それをどのように見つけるかは明確ではありません。

説明不足でしたら、申し訳ありません。

私にとっては難しいことです。

インデックス以外にも、時間...

 
//---
   for(int j=0;j<OrdersTotal();j++)
     {
      if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderMagicNumber()!=MAGICZZ || OrderSymbol()!=Symbol()) continue;
   //--- check order type 
      if(OrderType()==OP_BUY)
        {
         //if(OrderProfit()>0.0)
           //{//Print("OrderProfitB()=",OrderProfit());
         if(iClose(NULL,PERIOD_CURRENT,1)-iOpen(NULL,PERIOD_CURRENT,1)>0.0)
           {if(iOpen(NULL,PERIOD_CURRENT,0)-iClose(NULL,PERIOD_CURRENT,0)>0.0)
              {Print("iCloseB()=",iClose(NULL,PERIOD_CURRENT,0));
               if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,White))
                  Print("OrderClose error ",GetLastError());
              }  
           }
        }
      if(OrderType()==OP_SELL)
        {
         //if(OrderProfit()>0.0)
           //{//Print("OrderProfitS()=",OrderProfit());
         if(iOpen(NULL,PERIOD_CURRENT,1)-iClose(NULL,PERIOD_CURRENT,1)>0.0)
           {if(iClose(NULL,PERIOD_CURRENT,0)-iOpen(NULL,PERIOD_CURRENT,0)>0.0)
              {Print("iCloseS()=",iClose(NULL,PERIOD_CURRENT,0));
               if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,White))
                  Print("OrderClose error ",GetLastError());
              }
           }
こんにちは!2021.03.01_19:49GMT+3です。トレーディングシステムの成績を向上させたい。しかし、iOpen()とiClose()はうまくいかなかったようです。ストラテジーテスターで、Expert Advisorを確認したところ、175トレードのうち、上記コードの条件により決済されたのは81トレードのみだったようです。このコードは動作しません。そのためにどうすればいいのか。MetaQuotesのプログラマーに聞いてみるのはどうでしょうか?では、ストラテジーテスターのログを見て、これらの機能がどの程度稀に動作するかを投稿してみます。見つけた。20210228.log . 時間 13:53:02.192, open #155, iCloseB()=1.3434.ログファイルを添付します。さて、これらのiClose()とiOpen()関数を動作させるにはどうしたらいいのか、誰か教えてくれないかな。取引システムの効率が悪いから。以上、今回はこの辺で。2021.03.01_20:12 GMT+3.
ファイル:
20210228.log  277 kb
 
mt5では、ある時間枠で、そろそろ新しいバーが 表示される(相場が来るようだ)というのに、まだ来ないということが起こります。何ですか?価格設定の具体的な内容は?
 
ifitstrue:

に関する質問

過去のH1にトレンドラインを引くとしたら、最初のM1バーの指数はどうなるのでしょうか?

そして、ラインの開始時間と終了時間によって、それをどのように見つけるかは明確ではありません。

説明不足でしたら、申し訳ありません。

私にとっては難しいことです。

H1にはバーが開いている時間が あり、それはiTime()です。

M1上のこの時間のバーのインデックスを理解するために、iBarShift()があります。

あとはiHighest()とiLowest()を使ってM1の最小と最大のバーを知るだけです。

 
またまたこんにちは。2021.03.01_20:24 GMT+3.このフォーラムの1304ページのスレッドで、私のバージョン4のテスターが 遅いと書きました。そして、ヴィタリー・ムジチェンコは私を誤解していた。コメントを書き終えた時刻を書き込んでいます。そして、私は誰も急がせてはいないのです。答えがない中で、偶然にも答えを見つけることができました。私は今、ストラテジーテスターで何をしているのでしょうか?Expert Advisor をテストする前に、「最適化」にチェックを入れています。最適化するんです。とはいえ、今のところ最適化は必要ないのですが。約1秒で最適化します。そして、チェックボックスの「最適化」をクリアします。Expert Advisorの動作確認をしています。すると、ストラテジーテスターの動作が速くなる。40分でも1時間でもない。書かずにはいられなくなったのです。もしかしたら、誰かの役に立つかもしれない。私のブローカーはターミナルのバージョン4にルーブル口座を持ち、バージョン5にはないため、私はターミナルの第4バージョンでExpert Advisorを記述しています。米ドルには手を出したくない。巨額の国家債務の上限があるし、私のブローカーは私のドルを非市場でルーブルに変換している。20:39 GMT+3。
 
Николай Никитюк:
こんにちは!2021.03.01_19:49 GMT+3です。トレーディングシステムの成績を向上させたい。しかし、iOpen()とiClose()関数が動作しないようです。ストラテジーテスターで、Expert Advisorを確認したところ、175トレードのうち、上記コードの条件で決済されたのは81トレードだけだったようです。このコードは動作しません。そのためにどうすればいいのか。MetaQuotesのプログラマーに聞いてみるのはどうでしょうか?では、ストラテジーテスターのログを見て、これらの機能がどの程度稀に動作するかを投稿してみます。見つけた。20210228.log . 時間 13:53:02.192, open #155, iCloseB()=1.3434.ログファイルを添付します。さて、これらのiClose()とiOpen()関数を動作させるにはどうしたらいいのか、誰か教えてくれないかな。取引システムの効率が悪いから。以上、今回はこの辺で。2021.03.01_20:12 GMT+3.

コードは問題ないようですが、スリッページに戸惑います...非常に小さいので、もっと スリッページを入れて 確認してください

 
Alexey Viktorov:
やれやれ何か欲しいものがあったのだろうか?何か頼んだっけ?私を誰だと思ってるの?
人違いです、申し訳ありません。)
 
Николай Никитюк:
こんにちは!2021.03.01_19:49GMT+3です。トレーディングシステムの成績を向上させたい。しかし、iOpen()とiClose()関数が動作しないようです。ストラテジーテスターで、Expert Advisorをテストしたところ、175トレードのうち、81トレードだけが上記コードの条件でクローズされたようです。このコードは動作しません。そのためにどうすればいいのか。MetaQuotesのプログラマーに聞いてみるのはどうでしょうか?では、ストラテジーテスターのログを見て、これらの機能がどの程度稀に動作するかを投稿してみます。見つけた。20210228.log . 時間 13:53:02.192, open #155, iCloseB()=1.3434.ログファイルを添付します。さて、これらのiClose()とiOpen()関数を動作させるにはどうしたらいいのか、誰か教えてくれないかな。取引システムの効率が悪いから。以上、今回はこの辺で。2021.03.01_20:12 GMT+3.

同じことだから、そう書き換えてみてください。

         if(Close[1]-Open[1]>0.0)
           {
            if(Close[0]-Open[0]>0.0)

というか、そういう書き方をしています。

         if(Close[1]>Open[1])
           {
            if(Close[0]>Open[0])
              {
 
klub2003:

皆さんこんにちは!

ここで問題です!
価格がMAを下か上にクロスしています。
後でクロスしたポイントの数を計算するために、それを記憶しておく必要があります。

私はこのように理解しています。

double FixPrice; // 変数

bool Fix=false; // マーカ

if ( Fix==false ) {。

if ( Close[0] > MA_lo ) FixPrice = Close[0];
}// 価格がMAを越えるまで計測する

if ( Close[0] < MA_lo ) Fix=true;

if ( Fix==true) FixPrice_L = FixPrice ;

そして、ここが次の難関です - 価格は記憶されていません!

ぜひとも よろしくお願いします。
//+------------------------------------------------------------------+
//|                                                         Test.mq4 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//---

double     FixPrice;        // переменная ТАК БУДЕТ ЗАПОМИНАТЬСЯ. ГЛОБАЛЬНАЯ ПЕРЕМЕННАЯ
bool       Fix = false;      // маркер
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(Fix == false)
     {
      if(Close[0] > MA_lo)
         FixPrice = Close[0];
     }                                                                              // делаем замер пока цена не пересечет МА
   if(Close[0] < MA_lo)
      Fix = true;
   if(Fix == true)
      FixPrice_L = FixPrice ;
//+------------------------------------------------------------------+
  }
//+------------------------------------------------------------------+

このように暗記させるのです。

しかし、キャンドルの開口部では、留意してください。

Close[0]=Open[0] 
и Close[0]=High [0] и Close[0]=Low[0]



したがって、瞬時のリアルタイムのデータが必要な場合は

double Bidd=NormalizeDouble(Bid,Digits); если цена сверху или
double Askk=NormalizeDouble(Askk,Digits); если цена снизу МА

double MA_lo=NormalizeDouble(MA_lo,Digits);

その際、比較される価格はすべて標準化した方がよいので、驚かれることはありません :)

 
MakarFX:

Чтобы перевернуть ФИБО поменяй местами  р1 и р2

С алертом я не помогу(

MakarFX
:

FIBO を反転させるには、p1 と p2 を入れ替える。

アラートはどうしようもないですね(

どうも、ありがとうございます。2つの異なる解決策を得ましたが、あなたのものが一番簡単 です。