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

 
IgorM:

iHighestとiLowestを参考に、ZZを構築するためのアルゴリズムを読み解く

SZY:ない最も簡単なタスクは、コードが小さくなりますが、アルゴリズムは複雑で、私はコードを見つけることができないが、私はそうでピークを検索している高:高[iHighest(NULL、0、MODE_HIGH、i)の

1.33 "とは?

2.High[iHighest(NULL,0,MODE_HIGH,i)で1点です。2枚目を手に入れるには?

iLowest !=第2点。

 
charter:

1.33 "とは?

2.High[iHighest(NULL,0,MODE_HIGH,i)で1点です。2枚目を手に入れるには?


1.ジグザグに

2. そうではなく、上のラインと なる高値を 見つける可能性があるだけで、その中から 2 つの高値を選んでラインを引く必要があります。

 
charter:

難しいのは、後に直線を引くことになる点を見つけることだ。

このポイントが見えていれば、線を引くことは難しくありません。プログラム的にどのように「見る」のか?

ありがとうございます!修正しました。

 
charter:

難しいのは、後に直線を引くことになる点を見つけることだ。

このポイントが見えていれば、線を引くことは難しくありません。プログラム的にどのように「見る」のか?

ありがとうございます!修正しました。

 

目利きの皆さん、ごきげんよう。

Expert Advisorhttps://www.mql5.com/ru/code- Ilanのコードを修正するために私を助けてください。

EAには株式ドローダウンの調整可能なパラメーターがあり、すべての注文をクローズするというものです

しかし、ロック機能が後から登場したため、当EAではトレンドに従ってすべての建玉を決済し、ロックポジションはそのままにしています。では、与えられたエクイティのドローダウンですべての注文がクローズされるように修正するにはどうすればよいのでしょうか。

ここでは、注文をクローズする部分です(トレンド注文と損切り注文はマジックナンバーが異なります)。ここではすべてがうまくいく。Expert Advisorはすべての注文をクローズしています。ドローダウンが設定値の4倍以上、デポドレインまで。

if (UseEquityStop) {

if (CurrentPairProfit < 0.0 && MathAbs(CurrentPairProfit) > TotalEquityRisk / 100.0 * AccountEquityHigh()) {

CloseThisSymbolAll(MagicNumber);

CloseThisSymbolAll(LMagN);

PrintF("Closed All due to Stop Out");

NewOrdersPlaced = FALSE;

負け注文はカバーされているのに、現在の利益と資本を計算するときに考慮されていないことが判明しましたここでは、現在の利益を計算するセグメントを紹介します。

double CalculateProfit() {

double ld_ret_0 = 0;

for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;

if (OrderSymbol() == Symbol())

if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == LMagN)

if (OrderType() == OP_BUY || OrderType() == OP_SELL) ld_ret_0 += OrderProfit();

}

return (ld_ret_0);

そして、こちらがエクイティの計算をするセグメントです。

double AccountEquityHigh() {

if ((CountTrades(MagicNumber) == 0) && (CountTrades(LMagN) == 0)) AccountEquityHighAmt = AccountEquity();

if (AccountEquityHighAmt < PrevEquity) AccountEquityHighAmt = PrevEquity;

else AccountEquityHighAmt = AccountEquity();

PrevEquity = AccountEquity();

return (AccountEquityHighAmt);

追加した箇所を黒く塗りつぶしました。何を忘れたんだろう......?なぜうまくいかないのか?

 
polsvv:

目利きの皆さん、ごきげんよう。

Expert Advisorhttps://www.mql5.com/ru/code- Ilanのコードを修正するために私を助けてください。

EAには株式ドローダウンの調整可能なパラメーターがあり、すべての注文をクローズするというものです

しかし、このロットポジションの機能は後から登場したものであり、当EAではトレンドに従ってすべての建玉を決済し、ロックポジションはそのままにしています。では、与えられたエクイティのドローダウンですべての注文がクローズされるように修正するにはどうすればよいのでしょうか。

ここでは、注文をクローズする部分です(トレンド注文と損切り注文はマジックナンバーが異なります)。ここではすべてがうまくいく。Expert Advisorはすべての注文をクローズしています。ドローダウンが設定値の4倍以上、デポドレインまで。

if (UseEquityStop) {

if (CurrentPairProfit < 0.0 && MathAbs(CurrentPairProfit) > TotalEquityRisk / 100.0 * AccountEquityHigh()) {

CloseThisSymbolAll(MagicNumber);

CloseThisSymbolAll(LMagN);

PrintF("Closed All due to Stop Out");

NewOrdersPlaced = FALSE;

負け注文はカバーされているのに、現在の利益と資本を計算するときに考慮されていないことが判明しましたここでは、現在の利益を計算するセグメントを紹介します。

double CalculateProfit() {

double ld_ret_0 = 0;

for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;

if (OrderSymbol() == Symbol())

if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == LMagN)

if (OrderType() == OP_BUY || OrderType() == OP_SELL) ld_ret_0 += OrderProfit();

}

return (ld_ret_0);

そして、こちらがエクイティの計算をするセグメントです。

double AccountEquityHigh() {

if ((CountTrades(MagicNumber) == 0) && (CountTrades(LMagN) == 0)) AccountEquityHighAmt = AccountEquity();

if (AccountEquityHighAmt < PrevEquity) AccountEquityHighAmt = PrevEquity;

else AccountEquityHighAmt = AccountEquity();

PrevEquity = AccountEquity();

return (AccountEquityHighAmt);

追加した箇所を黒く塗りつぶしました。何を忘れたんだろう......?なぜ動かないのか?

そうすべきなのかもしれませんね。:

//===================================================================================
double CalculateProfit() 
{
   double ld_ret_0 = 0;
   for (int cnt = 0;  cnt < OrdersTotal(); cnt++) {
      if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol()!=Symbol())           continue;
         if (OrderType()>1)                     continue;
         if (OrderMagicNumber()==MagicNumber || 
             OrderMagicNumber() == LMagN)       ld_ret_0 += OrderProfit();
         }
      else if (!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) {
         Print ("Func: CalculateProfit(), Select Order Error = ", GetLastError());
         break;
         }
      }
   return (ld_ret_0);
}
//===================================================================================
 
artmedia70:

もしかしたら、それが本来の姿なのかも?

このように、読み取れるようにコードを挿入 します。
 
eddy:
というように、コードを入れることで読めるようになるのです。
そうなんですか?それだけの違いがあったのでしょうか?
 
皆さんこんにちは!

ちょうどこの週末に、初めてストラテジーテスターを使って います。最適化」機能の使い道がわからない。最適化できるパラメーターを変えて選択したが、バランスは変わらない。本質的に何をどのように最適化しようとしているのか?全く使っていない人はいるのでしょうか?:)
 
AndrejFX:
みなさん、こんにちは。

ちょうどこの週末に初めてストラテジーテスターを使っています。最適化」機能の使い道がわからない。最適化できるパラメーターを変えて選択したが、バランスは変わらない。本質的に何をどのように最適化しようとしているのか?全く使っていない人はいるのでしょうか?:)

手始めにF1を使ってみてください。

ユーザーインターフェース」→「テスター」を検索します。

たぶん https://www.mql5.com/ru/articles/mt4/tester が役に立つでしょう