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

 

シンプルにしてくれませんかね)))

これはどこで手に入るのですか?

インジケーターにクローズドコードがありますが、この列挙の名前を知るにはどうしたらいいですか?

また、どのような変数が必要なのでしょうか?

iCustomでインジケーターをマージする方法だけは知っているのですが、それ以上踏み込めません(汗)。

難しすぎなければ、もっとシンプルにしてもらえないでしょうか)))

ENUM_BASE_CORNERを試したが、まだ表示されない。
 
Сергей:

シンプルにしてくれませんかね)))

これはどこで手に入るのですか?

インジケーターにクローズドコードがありますが、この列挙の名前を知るにはどうしたらいいですか?

また、どのような変数が必要なのでしょうか?

iCustomでインジケーターをマージする方法だけは知っているのですが、それ以上踏み込めません(汗)。

難しすぎなければ、もっとシンプルにしてもらえないでしょうか)))

ENUM_BASE_CORNERを試したが、まだ表示 されない。

以下はその一例です。

最初の選択肢は、標準の列挙型ENUM_BASE_CORNERを使用することである。

2つ目のバリエーションは、カスタムのenumを使用するものです。

次に iCustom で、どの variant を選ぶかによって base または my_base 変数を配置します。

ファイル:
100.mq4  5 kb
 
Сергей:

こんにちは。

ヒントをください、お手上げです。

私はiCustomを通してインジケータを処方し、問題に直面して - インジケータは、選択肢とテキストメニューを持って、それが開き、いくつかの項目が処方されている、まあ、私はそれが明確だと思います)。

メニューに追加するにはどうしたらよいですか?

extern int HIT = 0; は動作せず、パラメータが表示されないまま表示が停止します。

おそらくENUMを通じて、そこに選択するもの、または多分何か他のもの?

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

iCustom(,,,,) のパラメータはすべて正しい順序で入力されていますか?

 

皆さん、こんにちは。注文開始時のデータを収集しようとしています。 注文開始時にローソク足1、2、3のadhインジケータの値をファイルに書き出したいのですが、どうすればいいですか?

私は次のようなことをしています。dataディレクトリを開き、testerフォルダを開き、filesフォルダを開き、そこに「ZNA4_ADX.csv」というファイルを作成しました。で、拡張子が.NETのライブラリファイルになります。mqh ファイルは、拡張子が.以下は、コメントアウトされたファンクションコードです。

void writing_adx_screen1_to_file(int i_param) // ФУНКЦИЯ ЗАПИСИ ДАННЫХ В ФАЙЛ
   { //---НАЧАЛО ФУНКЦИИ ЗАПИСИ В ФАЙЛ ЗНАЧЕНИЯ АДХ ПО ПЕРВОМУ ЭКРАНУЭКРАНУ-----------------------------------------------------------------------+
   
   //-НАЧАЛО ПОЛУЧЕНИЯ ХЕНДЕЛА ОТКРЫВАЕМОГО ФАЙЛА------------------------------------------------------------------------------+
   int hendel= FileOpen("ZNA4_ADX.csv",FILE_WRITE,';');
   
   //-КОНЕЦ ПОЛУЧЕНИЯ ХЕНДЕЛА ОТКРЫВАЕМОГО ФАЙЛА------------------------------------------------------------------------------+
   
   
//---НАЧАЛО ПОЛУЧЕНИЯ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ------------------------------------------------------------------------+

  double adx1= iADX(Symbol(),//СИМВОЛ НА КОТОРОМ УСТАНОВЛЕН СОВЕТНИК
  PeriodForWork_screen1,// ТАЙМ ФРЕЙМ ПЕРВОГО ЭКРАНА
  period_adx_zapici_v_fail, //ПЕРИОД АДХ ДЛЯ ЗАПИСИ В ФАЙЛ 
  Price_adx_dl9_zapici,     // ЦЕНА РАСЧЁТА ЛИНИЙ АДХ ДЛЯ ЗАПИСИ В ФАЙЛ
  MODE_MAIN // ПОЛУЧЕНИЕ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ 
,1);

//---АДХ_СВЕЧА 2 НАЧАЛО------------------------------------------------------------------------------------------+

double adx2= iADX(Symbol(),//СИМВОЛ НА КОТОРОМ УСТАНОВЛЕН СОВЕТНИК
  PeriodForWork_screen1,// ТАЙМ ФРЕЙМ ПЕРВОГО ЭКРАНА
  period_adx_zapici_v_fail, //ПЕРИОД АДХ ДЛЯ ЗАПИСИ В ФАЙЛ 
  Price_adx_dl9_zapici,     // ЦЕНА РАСЧЁТА ЛИНИЙ АДХ ДЛЯ ЗАПИСИ В ФАЙЛ
  MODE_MAIN // ПОЛУЧЕНИЕ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ 
,2);
//---АДХ_СВЕЧА 2 КОНЕЦ---------------------------------------------------------------------------------------------+

//---АДХ_СВЕЧА 3 НАЧАЛО------------------------------------------------------------------------------------------+

double adx3= iADX(Symbol(),//СИМВОЛ НА КОТОРОМ УСТАНОВЛЕН СОВЕТНИК
  PeriodForWork_screen1,// ТАЙМ ФРЕЙМ ПЕРВОГО ЭКРАНА
  period_adx_zapici_v_fail, //ПЕРИОД АДХ ДЛЯ ЗАПИСИ В ФАЙЛ 
  Price_adx_dl9_zapici,     // ЦЕНА РАСЧЁТА ЛИНИЙ АДХ ДЛЯ ЗАПИСИ В ФАЙЛ
  MODE_MAIN // ПОЛУЧЕНИЕ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ 
,3);
//---АДХ_СВЕЧА 3 КОНЕЦ----------------------------------------------------------------------------------------+

//--КОНЕЦ ПОЛУЧЕНИЯ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ//------------------------------------------------------------------------------+
if(hendel>0)
FileWrite(hendel,"ордер "+(string)i_param+" "+(string)adx1,(string)adx2,(string)adx3); // ЗАПИСЫВАЮ ДАННЫЕ В ФАЙЛ:)

FileClose(hendel);

   
   }//---КОНЕЦ ФУНКЦИИ ЗАПИСИ В ФАЙЛ ЗНАЧЕНИЯ АДХ ПО ПЕРВОМУ ЭКРАНУ----------------------------------------------------------------+

下のスクリーンショットのように、データを書き込みたい。

データの記録方法例


つまり、赤い文字は、私が手書きで書くヘッダーです。2行目は、この関数で設定したい内容です。それがテストでは1オーダーナンバーです。そして、3つのadx 値を持っています。そして、テストで2つ目の注文が開いたら、次の行で注文番号が2になり、この注文が開く前のローソク足3本分のadx 、テストの注文の数だけ書き込む必要があります......。

以下のコードスニペットのように、EAコード内で関数そのものを呼び出しています。


  //---КОНЕЦ БАЙ ТРЕНДА СИГНАЛ АО------------------------------------------------------------------------------------------+
  if(f_end_trend_buy_ao_market_order() && count_orders_market_buy == 0 && count_orders_market_sell == 0)
  {// НАЧАЛО ЕСЛИ ЕСТЬ СИГНАЛ ОКОНЧАНИЯ БАЙ ТРЕНДА ДИВЕРЕГЕНЦИЯ АО
      if(OrderSend(Symbol(),OP_SELL,lot,Bid,slippages,Bid+sl , Bid-tp ,Coment, Magik_number)) Print("ОТКРЫВАЕМ ОРДЕР СЕЛЛ ПО СИГНАЛУ ОКОНЧАНИЯ ТРНЕДА- ДИВЕРЕГЕНЦИЯ АО"); // ОТКРКЫВВАЕМ СЕЛ ОРДЕР
      writing_adx_screen1_to_file(i_nomer_ordera);// ВЫЗОВ ФУНКЦИ ЗАПИСИ ДАННЫХ В ФАЙЛ
      if (GetLastError()==141){Alert("ОШИБКА № "+string(GetLastError())+"УДАЛЯЕМ ЭКСПЕРТА С ГРАФИКА"); ExpertRemove();}// ПРОВЕРКА ОТ ДОЛБАНИЯ СЕРВЕРА И БАНА СЧЁТА   


  } // КОНЕЦ ЕСЛИ ЕСТЬ СИГНАЛ ОКОНЧАНИЯ БАЙ ТРЕНДА ДИВЕРЕГЕНЦИЯ АО//-------------------------------------------------------------------------------------------------+
  



テストはエラーもなく実行されているのですが、ファイル(下の 画面)にこのような結果が表示されました。

ファイルに書き込むとこんな感じ


最初の注文と3つの値で1行になったが、テストでは189のオープンオーダーがあった。注文 数をカウントするための変数をどこで何を増やし忘れたのか、2,3-189行目に最初の注文に続くデータをどのように記録させればいいのか。コードベースなど、私が文章を読むのが困難な場所や、他の人のコードはほぼ不可能なので、送らないでください。では、何を追加すればいいのか、どこで必要なデータを入手できるのか、わかりやすく教えてください。P/Sは、あなたが追加でポイントを強調することを気にしない場合...

 
DanilaMactep:

皆さん、こんにちは。注文を出すときにデータを収集しようとしています。 注文を出すときにローソク足1、2、3のadhインジケータの値をファイルに記録したいのですが、どうすればよいですか?

私は次のようなことをしています。dataディレクトリを開き、testerフォルダを開き、filesフォルダを開き、そこに「ZNA4_ADX.csv」というファイルを作成しました。で、拡張子が.NETのライブラリファイルになります。mqh ファイルは、拡張子が.以下は、コメントアウトされたファンクションコードです。

下のスクリーンショットのように、データを書き込みたい。


つまり、赤い文字は、私が手書きで書くヘッダーです。2行目は、この関数で設定したい内容です。つまり、1がテストでのオーダー番号です。そして、3つのadx 値を持っています。そして、テストで2つ目の注文が開いたら、次の行で注文番号が2になり、この注文が開く前のローソク足3本分のadx 、テストの注文の数だけ書き込む必要があります......。

以下のコードスニペットのように、EAコード内で関数そのものを呼び出しています。




テストは何のエラーもなく実行されていますが、ファイル(下の 画面)にこのような結果が出ました。


最初の注文と3つの値で1行になったが、テストでは189のオープンオーダーがあった。注文 数をカウントするための変数をどこで何を増やし忘れたのか、2,3-189行目に最初の注文に続くデータをどのように記録させればいいのか。コードベースなど、私が文章を読むのが困難な場所や、他の人のコードはほぼ不可能なので、送らないでください。では、何を追加すればいいのか、どこで必要なデータを入手できるのか、わかりやすく教えてください。P/Sは、あなたが追加でポイントを強調することを気にしない場合...

FILE_WRITEフラグのみでファイルを開くと、ファイル内のすべてのデータが削除されます。既存のデータをファイルに保存するには、ファイルを開いて読み書きをする必要があります。

そして、ポインターをファイルの最後に移動することを忘れないでください。

 
Alexey Viktorov:

FILE_WRITEフラグを1つだけ付けてファイルを開くと、ファイル内の全てのものが削除されます。既存のデータをファイルに保存するには、ファイルを開いて読み書きをする必要があります。

そして、ポインターをファイルの最後に移動することを忘れないでください。

アレクセイ、エラーを「掘る」場所を指摘してくれてどうもありがとう。今のところ、行ごとに記録を作ることができたので、あとは全体を解析に使える形にまとめるだけです))))
 

配列の値は、互いに後続するRAMセルに格納されます。非占有セルの最大長に依存する場合がある。

 
なぜファンクションアドレスではうまくいかないのでしょうか?
template<typename T>
typedef T (*Fun)(const int, const int, const double &[], const double &[], const double &[], const double &[], const int &[]);
Fun    calculation,
       function;

//------------------------------------------------------------------------------------------------------------------------------

int OnInit()
  {
   calculation  = test;
   function     = Dis_HL_Value;
  //-----------------------------------------------------------------
   return(INIT_SUCCEEDED);
  }
 
こんにちは、これは2次元配列の宣言なのかどうか、教えてください。
      ArrayInitialize(ZigZagBuffer,0.0);
ありがとうございました。
 
Дмитрий:
こんにちは、これは2次元の配列の宣言なのかどうか教えてください。ありがとうございました。

いいえ、すでに宣言されているものを初期化したものです。