初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1433

 
lego9955 エラー 処理はより正しくなりました。ありがとう!

念のため、別々の行の配列よりも、私が示したように1行で書く方が簡単です。

 
Alexey Petrov #:

こんにちは、

https://www.mql5.com/fr/search#!keyword=money%20management&module=mql5_module_marketを 検索してみてください。

また、フリーランスにカスタマイズされたソリューションを注文することもできます -https://www.mql5.com/fr/job

こんにちは、ご返信ありがとうございます。 期待通りのスクリプトを作成することができましたが、残念ながらまだ2つのエラーがあり、理解することも修正することもできません。 少し助けてもらうために誰に連絡すればよいかわかりますか? コンパイル後にエラーとして登録される2行のコードだけです...
 
あけましておめでとうございます!MT5 10と11ではどちらのウィンドウズが良いですか?AMD 5900Xノートパソコンに座っています
 

皆さん、こんにちは!今年もよろしくお願いいたします。

具体的には:
マーケットに「自動トレンドライン」というインジケーターがあります。I want to make a robot based on it, which would open or close a position at the moment when the price crosses these lines on the indicator (well, and under specified additional conditions).

 
Rad89 #:

皆さん、こんにちは!今年もよろしくお願いします。

具体的には:
マーケットに「自動トレンドライン」というインジケーターがあります。このインジケーターを基にロボットを作りたいのですが、価格がインジケーターのラインを超えた瞬間にポジションをオープンまたはクローズするようにしたいのです。

私自身は問題ありません。市場やCodeBaseでは、市場からの他人の工芸品を使用することはできません...

 
Alexey Viktorov #:

自分のためなら問題ない。マーケットプレイスやCodeBaseから他人の工芸品を使うことはできませんが...。

自分のために。やり方がわからない。オープンソースでコードが見つからない。あるいは、自分のコードにどのようにねじ込めば、行の位置をキャッチできるのか。

 

こんにちは、@Rad89

iCustom()CopyBuffer() 関数が必要です。

マーケットからダウンロードしたインディケータをExpert Advisorに追加する例を以下に示します。

// Глобальная переменная для хендла индикатора
int tlHandle;

int OnInit() {
   // Создаем хендл индикатора
   tlHandle = iCustom(Symbol(), PERIOD_CURRENT, "Market\\Automatic Trendlines", false, 5, 15, clrRed, clrBlue, 2, "My Support", "My Resistance");
   
   // Можем добавить индикатор на график, если хотим. 
   // Для использования в расчетах это необязательно
   ChartIndicatorAdd(ChartID(), 0, tlHandle);

   // Вызовем один раз OnTick(), чтобы на выходных у нас что-то в логе отобразилось
   OnTick(); 
   
   return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason) {}

void OnTick() {
   // Объявляем массивы для буферов индикатора
   double tlBuffer0[], tlBuffer1[]; // ,tlBuffer1, ...
   
   int res;
   
   // Копируем нужное количество значений из индикаторных буферов в массивы
   res = CopyBuffer(tlHandle, 0, 0, 100, tlBuffer0);
   res = CopyBuffer(tlHandle, 1, 0, 100, tlBuffer1);
   
   // У разных индикаторов различное количество индикаторных буферов, 
   // числа из которых используются для построения линий, значков, цветовых меток на графике
   // Сколько их у данного индикатора и как используются их числа исследуйте самостоятельно
   
   // res = CopyBuffer(tlHandle, 2, 0, 100, tlBuffer2);
   
   // Пользуемся полученными значениями
   ArrayPrint(tlBuffer0);
   ArrayPrint(tlBuffer1);
}
Документация по MQL5: Технические индикаторы / iCustom
Документация по MQL5: Технические индикаторы / iCustom
  • www.mql5.com
iCustom - Технические индикаторы - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
こんにちは。Enumがあります。
enum ENUM_NAME
  {
   ENUM_1,
   ENUM_jsdf
   ....
   ENUM_FEF;   
  };
どのようにE_NAME[]配列にメモリを割り当てれば、(繰り返しのない)すべてのENUM_NAME値に対して十分なメモリを確保できますか?
ENUM_NAME     E_NAME[];

また、すべての可能な値でE_NAME[] を初期化しますか?

 

こんにちは、@pivomoe さん

列挙項目に無理に数値を代入しないのであれば(例から判断すると代入しないのでしょう)、このようにすることができます:

// Объявляем перечисление
enum ENUM_NAME {
   ENAME_1,
   ENAME_JSDF,
   ENAME_ERT,
   ENAME_QWERTY,
   ENAME_FEF
};

// Обявляем константу, хранящую количество элементов перечисления
#define  ENUM_NAME_SIZE 5

// Массив для хранения элементов перечисления
ENUM_NAME     E_NAME[ENUM_NAME_SIZE];

int OnInit() {
   // Заполняем массив значениями, преобразуя к типу ENUM_NAME
   for(int i = 0; i < ENUM_NAME_SIZE; i++) {
      E_NAME[i] = (ENUM_NAME) i;
   }

   // Пользуемся массивом
   ArrayPrint(E_NAME);
   
   for(int i = 0; i < ENUM_NAME_SIZE; i++) {
      Print(EnumToString(E_NAME[i]));
   }
   
   return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason) {}

この場合、列挙に要素を追加する際に、要素数を格納する定数も変更する必要があります。

また、ENUM_ 接頭辞は列挙自体の名前にのみ使用し、その要素には他の接頭辞を使用する方が良いでしょう。この規約は、すべての標準MQL列挙で使用されています。

 
Yuriy Bykov #:

こんにちは、@pivomoe

もし列挙項目に無理に数値を代入しないのであれば(例から判断して)、このようにできます:

この場合、列挙に項目を追加する際に、項目の数を格納する定数も変更する必要があります。

また、ENUM_ 接頭辞は列挙自体の名前にのみ使用し、その要素には他の接頭辞を使用する方が良いでしょう。この規約は、すべての標準MQL列挙で使用されています。

ご協力ありがとうございます。長年ENUMを使ってきたので、ヘルプを読むことさえ思いつきませんでした。

理由: