[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 318

 
gyfto:

あるいはさらに単純化する。

ここでΔは差の意味、つまりClose[i]はOpen[i]、^は程度の記号 である。const - この式の定数, つまりi_sizeOfSequentialCorrectionBar * pt, 標準的な数学表記,私は何も作って いません.2*bVar-1は±1と同様 で、ここでのbVarは任意のbool-variableである。また、2*bVar-1式は0と1ではなく、-1と+1の値をとります。≥はMQL4の>=で、これも標準的な数学表記 です。stepはステップ、つまりcnt++でstepは1になり、cnt=0でstepは-cntに なります。他に表記で不明だったことはありますか?

gyfto さん、説明ありがとう ございます。しかし、一理あります。いずれにせよ、式の出力桁を変えても問題は解決しない。ゼロインが発生する現時点では、始値と終値を「入れ替える」必要があります。つまり、私が思うに、普遍性は実現できないのです。これが、私が頭を悩ませていることです。

Vadimは 少し前に、ループの中に関数を置くとコードが一桁遅くなると書いていた。ループの繰り返しごとに関数が値を計算する場合のみ適用されるのか、それ以外の場合にも適用されるのか、疑問に思っています。例 えば、Expert Advisorを書き終えるまでは、簡略化 しようとしていた関数を次のようなスキームで書き換えて いました。

//+-------------------------------------------------------------------------------------+
//| Расчитываем количество идущих один за одним баров одного признака                   |
//+-------------------------------------------------------------------------------------+
int LastCandlesType(int directionMA)
{
   int cntUp,                                                                            // Счётчик идущих друг за другом свечей с..
       cntDn;                                                                                // .. требуемыми признаками
       
   for (int i=i_AnyBarsToHistory; i>=1; i--)
   {
      if (directionMA == CROSS_UP)
      {
         if ((Open[i] - Close[i]) >= i_sizeOfSequentialCorrectionBar * pt)              // Если бар соответствует требуемым признакам..
             cntDn++;                                                                     // .. прибавим 1 к счётчику

         if ((Close[i] - Open[i]) >= i_sizeOfTrandBar * pt)                             // Если бар, не соответствует основному признаку..
             cntDn = 0;                                                                   // .. счётчик обнуляем

         if (cntDn == i_sequentBarsСount)                                                   // Если cnt баров в подряд медвежьи..
             return (REQUIRED_SEQUENTIAL_BEARS_GOT);                                         // .. Выходим из функции
      }

      if (directionMA == CROSS_DN)
      {
         if ((Close[i] - Open[i]) >= i_sizeOfSequentialCorrectionBar * pt)              // Если бар соответствует требуемым признакам..
             cntUp++;                                                                     // .. прибавим 1 к счётчику

         if ((Open[i] - Close[i]) >= i_sizeOfTrandBar * pt)                             // Если бар, не соответствует основному признаку..
             cntUp = 0;                                                                   // .. счётчик обнуляем
     
         if (cntUp == i_sequentBarsСount)                                                   // Если cnt баров в подряд бычьи..
             return (REQUIRED_SEQUENTIAL_BULLS_GOT);                                         // .. Выходим из функции
      }
   }
}

cntUpとcntDnの カウンターを別にしているのは、計算棒が周期的に使われる場合に、一度に一つの値を持ち、その後別の値を 持つことがあるからです。また、カウンターは、ある値を加算した後、別の値を加算し続けることができます。また、変数が同じであれば、ある特性のバーの 数は、別の特性のバーのカウンターに加算されることになる。

ここはアドバイスが必要です、何か別の方法でまとめた方がいいのでは?

問題は、Expert Advisorがまだ大きくないということです。ワゴンとこの機能があるんです。ロングではなく、フクロウが売れ、その逆もあるような気がしています。どうしてそうなるのか、理解しようとしているのです。もしかして、ここがおかしいのでは?

 

こんにちは、私はmql4を学び始め、私は負けた注文をロックするスクリプトを書きました。スクリプトは損失が-10から始まるすべての注文をロックしますが、価格が-10以下である限りロックされ続けます。ロックを一度だけ発生させる方法は?つまり、損失が-10になると、スクリプトはその注文をロックし、損失が増え続けてもそのままにしておくのです。

extern double StopLoss=150;

extern double Profit=-10;

//+---------------------------------------------------------------------+

//----
void start()
{
double profit=Profit;
double Lots=0;
for(int i=0;i<OrdersTotal();i++)
{
if(!OrderSelect(i,SELECT_BY_POS))
continue;

if(OrderType()==OP_BUY && OrderProfit()<Profit*Point)
Lots+=OrderLots();
if(OrderType()==OP_SELL && OrderProfit()<Profit*Point)
Lots-=OrderLots();


} ・OrderType()==OP_SELL && OrderProfit<Profit*Point) ・OrderLots+=OrderLots()・OrderLots+=OrderLots()
if(Lots>0)
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,0,NULL,Red);
if(Lots<0)
OrderSend(Symbol(),OP_BUY,-(Lots),Ask,3,Bid-StopLoss*Point,0,NULL,Blue);
//----
return(0);
} } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } }

 

こんにちは。

コードに目を通してください。私は、取引(保留中の注文 取引)の平均時間を計算したいのですが

//+------------------------------------------------------------------+
//| Расчет среднего времени сделки            |
//+------------------------------------------------------------------+
double Sredneevremyasdelky(){
datetime Tsd=0; // общее время сделок
datetime Tsvsd=0; // среднее время сделки 
int n=0;
int orders=HistoryTotal();  // history orders total

        for(  int i=orders-1;i>=0;i--)
                  {
                 if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) 
                   { 
                        Print("Ошибка в истории!"); 
                        break;
                   }
                if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) 
                  continue;
                  n++;
                 Tsd=Tsd+(OrderCloseTime()-OrderOpenTime());
                   }
            if (n>0) Tsvsd=Tsd/n/60;


            return(Tsvsd);
         }

注文のトリガーからクロージングまで。

 
Stells:

こんにちは。

コードを見てください。私は、取引(保留中の注文取引)の平均時間を計算したいのです。

注文のトリガーからクロージングまで。


なぜ、サイクル内の平均時間を計算するのですか?サイクルの後にやったほうがいいのかもしれません。また、計算期間を設定するのもよいでしょう
 
Vinin:

なぜサイクル内の平均時間を計算するのですか? 不要な操作です。サイクルの後にやったほうがいいのかもしれません。また、計算期間の設定もできると良いですね
ループから取り出したんですね。計算期間の設定はどのように行うのですか?
 
Stells:
サイクルから取り出した。計算期間はどうすればよいのですか?

外部変数 例
 

なるほど、日付はどうにかして出す必要があるのですね。

どの機能ですか?

 
Stells:

なるほど、日付はどうにかして出す必要があるのですね。

どの機能ですか?


エクスターンがあるのに、なぜ複雑にするのか
 

hoz さん、暇になったら引っ越しますよ

最適化についてこんな質問があります。EMAアルゴリズムを扱っています。ご存知のように、実際に時間を節約できるのは再帰性です。元のコードを参照する。

...

https://www.mql5.com/ru/forum/144691 に移管。

 
gyfto:

hoz さん、暇になったら引っ越しますよ

最適化についてこんな質問があります。EMAアルゴリズムを扱っています。ご存知のように、実際に時間を節約できるのは再帰性です。元のコードを 参照する。

Matcadは、特にEMAで生成される重みを扱うために受講しました。

ところで、EMAを使う指標(指数関数ではなく、べき乗関数と呼ぶべきだと思うのですが)が、周期を14にしている理由がわかりました。 つまり、前のウェイトよりも次のウェイトが重要ならべき乗関数を巻けばいいのに、なぜ最後のウェイトをそんなに高くする必要があるのでしょうか?再帰終了後の最終的な重みは数式で導けるのに、なぜ再帰を使うのか、もう問いません(F(n,x)とy(n,x)を参照)。


自分の支店を開くべきかもしれませんね。なぜ「ビギナーズブランチ」が必要なのか?