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

 

こんにちは!バーだけが分かっている場合、バッファに格納されている値(ジグザグのピークにある値のことです)を調べる方法を教えていただけませんか?

感謝

 
バーが既知でバッファが時系列配列の場合,その値は Buffer[i] となる.
 
ユーザー関数が2つの値を返すことはできないのですか?
 
eddy:
ユーザー定義関数は2つの値を返すことができないのですか?

いいえ、できません。Pascalでは、これはプロシージャではありません。:-)))
 
eddy:
ユーザー関数が2つの値を返すようにできないか?


一方のユーザー関数からもう一方のユーザー関数を呼び出させることができる...。

例えば、再読...教科書から...

"

取引戦略は、取引基準機能の内容や技術に要件を課すものである。どの関数も返せる値は1つだけです。したがって、Expert Advisorが互いに排他的な取引条件のみを含む戦略を持つ場合、関数が返す値をいずれかの条件に設定することができます。しかし、複数の条件を同時に操作できるストラテジーの場合、それらの値をグローバル変数で他の関数に渡して処理する必要がある。

エキスパートアドバイザーに実装されているトレード戦略には、相互に排他的な基準のみが含まれています。そのため、ここで紹介するCriterion()関数では、この関数が返す値を使って、計算した条件を他の関数に渡している

 
eddy:
ユーザー関数が2つの値を返すようにできないか?

グローバルに変数を割り当て、関数内でその値を取得することができます。

この関数は1つしか返しませんが、何個でも取得できます。

  int OpendBuy(){
   int OpendPos=0;
   for(int cnt=OrdersTotal()-1; cnt>=0; cnt--){
     if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)){ 
       if(OrderMagicNumber()==Magic){
         if(OrderSymbol()==Symbol()){
           if(OrderType()==OP_BUY)OpendPos++;
           Ticket =OrderTicket();                    // Номер выбранн. орд.
           Type   =OrderType();                      // Тип выбранного орд.
           Price  =OrderOpenPrice();                 // Цена выбранн. орд.
           SL     =OrderStopLoss();                  // SL выбранного орд.
           TP     =OrderTakeProfit();                // TP выбранного орд.
    } } } }     
 return(OpendPos);} 
 
正確には、グローバル変数を 使用して値を渡すことができます。
 
どなたか、頂点の高低をジグザグにつなぐソフトをお持ちの方、教えてください。ありがとうございました。
 
pyatka__ASD:
どなたか、頂点の高低をジグザグにつなぐソフトをお持ちの方、教えてください。感謝

CodeBaseを見る。そこに...
 
eddy:
カスタム関数は2つの値を返すようにできないのですか?

できます。パラメータに戻る。例えば、こんな感じです。

void TestFunction (double &return_value1, double &return_value2)
{
// вычисления...

   return_value1 = выражение; //возвращаем значения
   return_value2 = выражение;
}