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

 
指定されたバー期間のローソクの最大値の最小値を求めるにはどうしたらいいですか?
 
savage_pinguin:
指定されたバー期間のローソクの最大値の最小値を求めるにはどうしたらいいですか?


お試しください

bar=iLowest(NULL,0,MODE_HIGH,10,10);

 
alsu:

ご注意ください。

1) "line1[1]>line2[1]" という条件は、"two lines crossing" 信号としては十分ではありません。Надо "линия1[1]>линия2[1]&&линия1[2]<линия2[2]"

2) パラボリックはOpenと比較するのではなく、HighとLowと比較する。 ゼロバーで計算し、最初のバーからOpen[1]を取ることに注意してください。

私の質問に丁寧に答えていただき、ありがとうございました。アドバイスいただいたとおりにしました。しかし、現在ではEAが完全に取引を停止しています。もしかしたら、私の理解が間違っていて、何か間違ったことをしたのかもしれませんし、コードに他の間違いがあるのかもしれません。

現時点では、以下のようなコードになっています。

//+-------------------------------------------------------------------------------------+
//| Расчет значений технических индикаторов с формированием сигналов для позиций        |
//+-------------------------------------------------------------------------------------+
void GetSignal()
{
 Signal = 0;
// - 1 - == Получение значений индикаторов ==============================================
 double SAR = iSAR(Symbol(), 0, SARStep, SARMaximum, 0);
 double EnvUp = iEnvelopes(Symbol(), 0, EnvPeriod, EnvMethod, EnvShift, EnvPrice,
 EnvDeviation, MODE_UPPER, 1);
 double EnvDn = iEnvelopes(Symbol(), 0, EnvPeriod, EnvMethod, EnvShift, EnvPrice,
 EnvDeviation, MODE_LOWER, 1);
 double StochM = iStochastic(Symbol(), 0, StochK, StochD, StochSlowing, StochMethod,
 StochPrice, MODE_MAIN, 1);
 double StochS = iStochastic(Symbol(), 0, StochK, StochD, StochSlowing, StochMethod,
 StochPrice, MODE_SIGNAL, 1);
// - 1 - == Окончание блока =============================================================

// - 2 - == Генерация сигнала ===========================================================
 if (SAR < Low[1])
   {
    Signal = 3;                                                          // Закрытие SELL
    if (StochM > StochS && StochM < StochS && StochM >= 80 &&
    StochS >= 80 && High[1] >= EnvUp && SAR < High[1])
      Signal = 1;                                                         // Открытие BUY
   }   
 
 if (SAR > High[1])
   {
    Signal = 4;                                                           // Закрытие BUY
    if (StochM < StochS && StochM > StochS &&  StochM <= 20 &&
    StochS <= 20 && Low[1] <= EnvDn && SAR > Low[1])
      Signal = 2;                                                        // Открытие SELL
   }   
// - 2 - == Окончание блока =============================================================
}

このEAをどうしても取引したいので、どうかご教授ください。

編集部: 大きな要望ですが、もし可能であれば、回答をコード形式にすることをお願いします。
私はまだプログラミングの完全な「お人好し」であることをお忘れなく...。もう二度と聞きたくない。
 

誰かアイラン1.4のコードを解説してください。というか、自分用に少し変えたいのですが、他の人のコードは全く理解できません。どなたか、少なくともブロック単位で説明していただけませんか?

実現するための脳みそが足りない。 MQL4を知り始めてまだ1週間ほど。

どなたかお分かりになる方がいらっしゃいましたら、delit-0202@rambler.ru まで書き込んでいただければ幸いです。

それから、EAでトレンドを判断 するにはどうしたらいいのでしょうか?せめて一般的なもので、ラグもあるかもしれない。どうすればいいのだろう?

 
daytrader19:

私の質問に丁寧に答えていただき、ありがとうございました。アドバイスいただいたとおりにしました。しかし、現在ではEAが完全に取引を停止しています。もしかしたら、私が誤解して何か間違ったことをしたのか、それとも他にコードに間違いがあるのか?

現時点では、以下のようなコードになっています。

このEAをどうしても取引したいので、どうかご教授ください。

編集部: 大きな要望ですが、もし可能であれば、回答をコード形式にすることをお願いします。
私はまだプログラミングの完全な「お人好し」であることをお忘れなく...。もう二度と聞きたくない。

これでは、どうやって取引すればいいのか

 StochM < StochS && StochM > StochS

明らかに不可能な条件なのでしょうか?1本目と2本目のバーでストキャスティクス値を計算する必要があります。

 double StochM1 = iStochastic(Symbol(), 0, StochK, StochD, StochSlowing, StochMethod,
 StochPrice, MODE_MAIN, 1);
 double StochS1 = iStochastic(Symbol(), 0, StochK, StochD, StochSlowing, StochMethod,
 StochPrice, MODE_SIGNAL, 1);
 double StochM2 = iStochastic(Symbol(), 0, StochK, StochD, StochSlowing, StochMethod,
 StochPrice, MODE_MAIN, 2);
 double StochS2 = iStochastic(Symbol(), 0, StochK, StochD, StochSlowing, StochMethod,
 StochPrice, MODE_SIGNAL, 2);

if( StochM1 < StochS1 && StochM2 > StochS2 ...
 

もし差し支えなければ、もうひとつだけはっきりさせておきたいことがあります。ストキャスティックの間違いは理解できましたが、他の指標はどうなんでしょうか?EnvelopeとParabolicの使い分けに間違いはないか?持っていた方が良いですね))。オープニングとクロージングの両方をご覧ください。

そして 最新の MT5 ビルドを ありがとうございます、すでにダウンロード しました。

 

先ほどこちらの方から、本文の内容を変更する方法について質問がありました。回答している間に投稿が消えました。誰かが必要とする場合に備えてね。

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start(){

   ObjectCreate("1",OBJ_TEXT,0,Time[0],Open[0]);
   ObjectSet("1",OBJPROP_FONTSIZE,16);
   ObjectSet("1",OBJPROP_COLOR,Red);
   if(!ObjectSetText("1","Пример создания нового текста",16,"Verdana",Red)){
    Alert("Ошибка № ",GetLastError()," при изменении описания текста");
   }

  return(0);
}
//+------------------------------------------------------------------+ 
 

メールが届かない...。

ObjectSetText(name,buf1[i]/buf2[i]*100,6,"Arial",C'0,33,0');
ошибка 4062
 
eddy:

メールが届かない...。


buf1[i]/buf2[i]*100 - この関数の第2パラメータは、文字列でなければなりません。ここでパラメータを読み込む-bool ObjectSetText(string name,string text,int font_size,string font_name=NULL,color text_color=CLR_NONE)
 
intを文字列にするには、string text=int_peremennayaと記述する以外に方法がありません。