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

 
Igor Makanu:

エキスパートアドバイザーは、インジケーターバッファを 持たず、ターミナルに描画されない

Expert Advisorとスクリプト、インジケータの違いについてはヘルプをご覧ください。

ご返信ありがとうございました。

この機能を実装する方法を教えてください。

 

こんにちは!関数に配列を渡すのを手伝ってください

構造を持つ

struct pattern
  {
   double            x;
   datetime          y;
 };  

私はこのような構造でいくつかの静的 配列を宣言しています。

pattern last_pattern_up[NUMBER_OF_SYMBOLS][NUMBER_OF_PERIODS], last_pattern_dn[NUMBER_OF_SYMBOLS][NUMBER_OF_PERIODS];

さて、静的配列を関数に渡したいのですが、エラーになります- '[' - 配列が必要です

void MyFunction(pattern &array)
{
   Print(array[1][1].x," ",array[1][1].y);
   }

関数に配列を正しく渡すにはどうしたらよいですか?

 
Tango_X:

こんにちは!関数に配列を渡すのを手伝ってください

構造を持つ

私はこのような構造でいくつかの静的 配列を宣言しています。

さて、静的配列を関数に渡したいのですが、エラーになります- '[' - 配列が必要です

関数に配列を正しく渡すにはどうしたらよいですか?

void MyFunction(pattern &array[][NUMBER_OF_PERIODS])
 
Artyom Trishkin:

ありがとうございます!超

 
Alexander Layzerevich:

ご返信ありがとうございました。

この機能を実装する方法を教えてください。

iCustom()経由でインジケータを呼び出すExpert Advisorと、チャート用のインジケータを個別に呼び出すExpert Advisorのみ。

つまり、Expert Advisorをチャート上で実行し、その設定(iCustom()に渡したもの)を変更した場合、インジケータはチャート上で反応しません。

エキスパートアドバイザーから呼び出されたインジケータは、テスト終了時にストラテジーテスターに表示されます。 ビジュアルモードでのテスト中に、インジケータを ストラテジーテスターのチャートに 投影することができます....

インジケーターを別の方法で使用したい場合は、別の方法で行うことが可能です.もしかしたら、誰かがやっているかもしれない

 
Alexander Layzerevich:

ご返信ありがとうございました。

この機能を実装する方法を教えてください。

線を引く(OBJ_TREND)

 
Alexander Layzerevich:

ご返信ありがとうございました。

この機能を実装する方法を教えてください。

もし、インジケータを全く使用せずに、インジケータからExpert Advisorに転送された計算のみで、インジケータの線を 描く場合は、グラフィックオブジェクトであるトレンドラインのみを使用します。高いですけどね。しかし、チャート上のバーの表示領域を制限することは可能です。

 

ヒントをありがとうございました。

実は、Indicatorも同じようなことをしています。

例えば、計算した値を線で結ぶ必要がある。(OBJ_TREND)

 
Igor Makanu:

注文の変更時に少なくとも一つのパラメータを変更する必要がある場合、エラー#1 - サーバーにリクエストを送信した後に何も変更する必要がない場合。

サーバーに送信した内容をunprintすると、一度に見ることができます。

ストップやプロフィットがあるかどうかをチェックする条件を追加しても、エラーは残ったままです

if(OrderMagicNumber() == id_number && (OrderStopLoss() == 0 || OrderTakeProfit() == 0))


トレーリングにも対応

if(OrderMagicNumber() == id_number && OrderStopLoss() != 0)
           {
            if(OrderType() == OP_BUY)
              {
               if(OrderComment() == "1" && Bid - OrderOpenPrice() >= a1 && OrderStopLoss() != OrderOpenPrice() + l1) {bol = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+l1,OrderTakeProfit(),0,clrNONE);};
               if(OrderComment() == "2" && Bid - OrderOpenPrice() >= a2 && OrderStopLoss() != OrderOpenPrice() + l2) {bol = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+l2,OrderTakeProfit(),0,clrNONE);};
              }
            else
              {
               if(OrderComment() == "1" && OrderOpenPrice() - Ask >= a1 && OrderStopLoss() != OrderOpenPrice() - l1) {bol = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-l1,OrderTakeProfit(),0,clrNONE);};
               if(OrderComment() == "2" && OrderOpenPrice() - Ask >= a2 && OrderStopLoss() != OrderOpenPrice() - l2) {bol = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-l2,OrderTakeProfit(),0,clrNONE);};
              };
           };
 
Alexandr Sokolov:

ストップやプロフィットの有無を確認する条件を追加しましたが、エラーは残ったままです。

トレーリングにも対応

OrderStopLoss() != NormalizeDouble(OrderOpenPrice() - l1,_Digits)