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

 
Michail_David:

私自身は、アレクセイがどこでこの通貨ペアを掘り起こしたのか、わかりませんでした )))

よくあることです・・・あることを考え、別のことを書く・・・自分も同じです・・・))))

 
Alexey Viktorov:

スキーが悪いのか・・・Michail_Davidの 投稿にこのペアの記載がない・・・どこもUSDJPYと書いてある。

トラック違い )))私 ;)間違えました。

しかし、実際には - ペアは文字列であり、そこに逆カンマを入れるべきではありません。

ミハイル・デービッド

for(int i = SymbolsTotal(in_market_watch) - 1; i >= 0; i--)
   {
      if(StringFind(SymbolName(i,in_market_watch),vlt) >= 0)

vlt - お探しのペア(または少し)))

 
Сергей Таболин:

トラック違い )))私 ;)間違えました。

しかし、本質的には - ペアは文字列であり、そこに逆カンマを入れるべきではありません。

ミハイル・デービッド

vlt - 探したペア(またはその一部))。

セルゲイ ありがとうございます。その考え方は理解できる。

 

こんにちは。アドバイスをお願いします。

1.EAは、一連の注文(買い-売り-買い-売り-...)を取引します。このシリーズは、利益で決済された注文で終了します。どのように実装するのか?

2.次の問題です。第1シリーズはまだ完成しておらず(利益の注文がない)、第2シリーズはすでに始まっています。Expert Advisor用に「分割」する方法は?

ありがとうございます。

 
Forallf:

こんにちは。アドバイスをお願いします。

1.EAは、一連の注文(買い-売り-買い-売り-...)を取引します。このシリーズは、利益で決済された注文で終了します。どのように実装するのか?

2.次の問題です。第1シリーズはまだ完成しておらず(利益の注文がない)、第2シリーズはすでに始まっています。Expert Advisor用に「分割」する方法は?

ありがとうございます。

1 条件が曖昧で参考にならない...。

2 "マジコン "を使い分ける

 

皆さん、こんにちは。続けて、Grail MachineJを見た 大量のコードをスクロールするのはうんざりなので、関数を使うことに偏ったコードを作り直さなければならないのです。関数を別のインクルードファイルに移したい。試しにEAのファイルにaoインジケータでシグナルを取得する関数を作ってみましたが、問題なく動作しています。

しかし、プラグインファイルSIGNALS_INDIKATORを作成すると、ロボットはトレードを開始することさえできます。Expert Advisorでこのように接続します。

//+------------------------------------------------------------------+
//|                                           TREND+_V_1.0 |
//|                                                    ДАНЯ ГАГАРКИН |
//|                                     https://vk.com/danila_mastep |
//+------------------------------------------------------------------+
#property copyright "ДАНЯ ГАГАРКИН"
#property link      "https://vk.com/danila_mastep"
#property version   "1.00"
#property strict
//НАЧАЛО ВХОДНЫХ ПЕРЕМЕННЫХ И ГЛОБАЛЬНЫХ ПЕРЕМЕННЫХ------------------------------------------------------------------------------------------+
int intBars;// ПЕРЕМЕННАЯ ДЛЯ ОПЕРДЕЛЕНИЯ КОЛИЧЕСТВА БАРОВ, ЧТОБЫ ОПРЕДЕЛИТЬ ПОЯВЛЕНИЕ НОВОГО



#include <TREND+\SIGNALS_INDIKATOR.mqh> 
// А НИЖЕ ПОШЛИ ЕНУМЫ И ЭКСТЕРН ПЕРЕМЕННЫЕ




また、このようなアタッチメントでシグナルを取得する関数も書いていますが、この関数ではEA本体に簡単に渡している外部変数が表示されないのです。EAでインジケータの 値を取得する機能は、以下のようなものです。

//НАЧАЛО ПОЛУЧЕНИЯ ДАННЫХ ПО АО СЕЛЛ------------------------------------------------------------------------------------------+
double f_ao_sell()
{ double ao_sell = iCustom(Symbol(),PeriodForWork, //Таймфрейм на котором искать дивергенции

"1)SEARCH_DIVERGENCE",
Params, // Параметры транслирования сигналов
ModeSignalsCTS, // транслировать сигналы в cts?
LifetimeOfSignal, //Время жизни сигнала в баарх рабочего тф
CTS_Name, // имя для cts 
Div_Params, // параметры поиска дивергенции
PeriodForWork, // Таймфрейм на котором искать дивергенции

SearchAccuracy, // Режим поиска совпадений
NumBarAccuracy, // количество баров не точности поиска пиков
KoeffDistanceBetween,// коэффициент разницы между экстремумами
WidthChartLine, // толщина линий на графике цены

WidthIndicatorstLine,// толщина линий в окне индикаторов
ShiftArrow, // смещение значков
AO_Params,  // Параметры АО
UseAO,  // Искать дивергенции на АО
ColorUpperAO,  // цвет верхних линий дивергенций АО
ColorLowerAO, // цвет нижних линий дивергенций АО
Stoch_Params, // параметры стохастик
UseStoch, // искать дивергенции на стохастик
ModeLineSTO, // ИСКАТЬ ДИВЕРГЕНЦИИ ПО ЛИНИИ STOCHASTIC:
Period_K, // период %К стохастик
Period_D, // период %Д стохастик
Slowing, // замедление стохастик
AppledPriceSTO, // цены расчёта стохастик
MethodMAStoch, // метод МА стохастик
UpperLevelSTO, // верхний уровень стохастик
LowerLewelSTO, // нижний уровень стохастик
ColorUpperSTO, // цвет верхних линий дивергенций стохастик
ColorLowerSTO, // ЦВЕТ НИЖНИХ ЛИНИЙ ДИВЕРГЕНЦИЙ STOCHASTIC

RSI_Params, // ПАРАМЕТРЫ RSI
UseRSI, // ИСКАТЬ ДИВЕРГЕНЦИИ НА  RSI?
PeriodRSI, // ПЕРИОД RSI
AppledPriceRSI, // ПРИМЕНИТЬ К
UpperLevelRSI, // ВЕРХНИЙ УРОВЕНЬ RSI
LowerLewelRSI, // НИЖНИЙ УРОВЕНЬ RSI
ColorUpperRSI, // ЦВЕТ ВЕРХНИХ ЛИНИЙ ДИВЕРГЕНЦИЙ RSI
ColorLowerRSI, // ЦВЕТ НИЖНИХ ЛИНИЙ ДИВЕРГЕНЦИЙ RSI
MACD_Params, // ПАРАМЕТРЫ MACD
UseMACD, //  ИСКАТЬ ДИВЕРГЕНЦИИ НА  MACD
ModeLineMACD, //  ИСКАТЬ ДИВЕРГЕНЦИИ ПО ЛИНИИ MACD:
FastEMA_MACD, // БЫСТРОЕ EMA MACD
SlowEMA_MACD, // МЕДЛЕННОЕ EMA MACD
PeriodSignalMACD, // ПЕРИОД СИГНАЛЬНОЙ SMA MACD
AppledPriceMACD, // ПРИМЕНИТЬ К:
ColorUpperMACD, // ЦВЕТ ВЕРХНИХ  ЛИНИЙ ДИВЕРГЕНЦИЙ MACD
ColorLowerMACD, // ЦВЕТ НИЖНИХ ЛИНИЙ ДИВЕРГЕНЦИЙ MACD
Notifications_Params, // ПАРАМЕТРЫ ОПОВЕЩЕНИЙ 
UseAlerts, // ОПОВЕЩАТЬ В ТЕРМИНАЛЕ О СИГНАЛЕ 
UseMail, // ОПОВЕЩАТЬ НА E-MAIL О СИГНАЛЕ 
UsePush, // ОПОВЕЩАТЬ О СИГНАЛЕ НА МОБИЛЬНЫЙ 
2, //ВТОРОЙ БУФЕР- АО СЕЛЛ
0 // СИГНАЛ НА НУЛЕВОЙ СВЕЧЕ ИЗ-ЗА ОСОБЕННОСТЕЙ ИНДИКАТОРА
);

return(ao_sell);



}//КОНЕЦ ПОЛУЧЕНИЯ ДАННЫХ ПО АО СЕЛЛ------------------------------------------------------------------------------------------+

この関数がティックとタイマーの下のEAファイルにある場合、エクスターンとして宣言されている変数がこの関数にはっきりと表示されます。しかし、この関数を完全にコピーしてインクルードファイルに貼り付けると、外部変数が関数の中で見えなくなってしまうのです。

問題は、インクルードファイル内の関数で外部変数が見えるようにし、タイマーの下に書くEA関数でもこれらの変数が見えるようにするには、どうしたらよいかということです。

 
DanilaMactep:

皆さん、こんにちは。続けて、Grail MachineJを見た 大量のコードをスクロールするのはうんざりなので、関数を使うことに偏ったコードを作り直さなければならないのです。関数を別のインクルードファイルに移したい。試しにEAのファイルにaoインジケータでシグナルを取得する関数を作ってみましたが、問題なく動作しています。

しかし、プラグインファイルSIGNALS_INDIKATORを作成すると、ロボットはトレードを開始することさえできます。Expert Advisorでこのように接続します。


また、このようなアタッチメントでシグナルを取得する関数も書いていますが、この関数ではEA本体に簡単に渡している外部変数が表示されないのです。私のEAでインジケータの 値を取得する機能は以下のようなものです。

この関数がティックとタイマーの下のEAファイルにある場合、エクスターンとして宣言されている変数がこの関数にはっきりと表示されます。しかし、この関数を完全にコピーしてインクルードファイルに貼り付けると、外部変数が関数の中で見えなくなってしまうのです。

問題は、外部変数をインクルードファイル内の関数で見えるようにし、タイマーの下に書くEA関数でもこれらの変数が見えるようにするには、どうしたらよいかということです。

extern変数とは何ですか?
 
MakarFX:
外部変数とは何か?

一緒にコードの一部を挿入する-。


//+------------------------------------------------------------------+
//|                                           TREND+DIVERGENCE_V_1.0 |
//|                                                    ДАНЯ ГАГАРКИН |
//|                                     https://vk.com/danila_mastep |
//+------------------------------------------------------------------+
#property copyright "ДАНЯ ГАГАРКИН"
#property link      "https://vk.com/danila_mastep"
#property version   "1.00"
#property strict
//НАЧАЛО ВХОДНЫХ ПЕРЕМЕННЫХ И ГЛОБАЛЬНЫХ ПЕРЕМЕННЫХ------------------------------------------------------------------------------------------+
int intBars;// ПЕРЕМЕННАЯ ДЛЯ ОПЕРДЕЛЕНИЯ КОЛИЧЕСТВА БАРОВ, ЧТОБЫ ОПРЕДЕЛИТЬ ПОЯВЛЕНИЕ НОВОГО



#include <TREND+DIVERGENCE\SIGNALS_INDIKATOR.mqh> 



enum enumCoincidence
  {
   enCoinAccurate=1,    // Точный
   enCoinApproximate=0, // Приближенный
  };
  enum enumYN
  {
   enYes=1, // Да
   enNo=0,  // Нет
  };
  
  enum enumSL //ПЕРЕЧИСЛЕНИЕ ДЛЯ СТОП ЛОССА
  {
   en_fiks=1, // ФИКСИРОВАННЫЙ В ПУНКТАХ
   en_po_atr=0,  // ПО АТР
  };
  // ПЕРЕЧИСЛЕНИЕ ДЛЯ ВКЛЮЧЕНИЯ ПЕРВОГО ЭКРАНА
  
   enum enum_screen1 //ПЕРЕЧИСЛЕНИЕ ДЛЯ ПЕРВОГО ЭКРАНА
  {
   en_on_screen1=1, //  1 ЭКРАН ON
   en_off_screen1=0,  //  1 ЭКРАН OFF
  };
  //ЕНУМ 2-ГО ЭКРАНА
  
   enum enum_screen2 //ПЕРЕЧИСЛЕНИЕ ДЛЯ ВТОРОГО ЭКРАНА
  {
   en_on_screen2=1,    //  2 ЭКРАН ON
   en_off_screen2=0,  // 2 ЭКРАН OFF
  };
  
    enum enum_use_filter //ПЕРЕЧИСЛЕНИЕ ДЛЯ ОТКРЫТИЯ ОТОЛЖАК С ФИЛЬТРОМ ИЛИ БЕЗ
  {
   en_bez_filtra=1,    // БЕЗ ЦЕНОВОГО ФИЛЬТРА
   en_c_filbtpom=0,  // С ЦЕНОВЫМ ФИЛЬТРОМ
  };
  
  //-- ПЕРЕЧИСЛЕНИЕ ДЛЯ ТИПА ОРДЕРОВ
  
  enum enum_tip_orderov
  {
   en_otlojki=1,    // ОТЛОЖЕННЫЕ
   en_rbIno4nbIe=0, // РЫНОЧНЫЕ
  };
  
  //--- ПЕЕРЧИСЛЕНИЕ ДЛЯ ВКЛЮЧЕНИЯ ТРАЛА
      enum enum_use_tral 
  {
   en_on_tral=1,    // С ТРАЛОМ
   en_off_tral=0,  // БЕЗ ТРАЛА
  };
  
  
  enum enumModeLINE
  {
   enMdMain=MODE_MAIN,  // Main
   enMdSign=MODE_SIGNAL,// Signal
  };
  enum enumSignalsMode
  {
   enBuy=0,             // Только Buy
   enSell=1,            // Только Sell
   enBoth=2,            // Buy и Sell
   
  };
  
  extern string  Params = "-- ПАРАМЕТРЫ ОТКРЫТИЯ СДЕЛКИ --";//======================================
  
  extern int slippages= 5; // ПРОСКАЛЬЗЫВАНИЕ
  extern int MaxRisk=1;//  % УБЫТКА ПРИ SL
  extern int razmer_fikc_sl= 500;// ФИКСИРОВАННЫЙ SL П/П?
  extern enum_screen1 flag_screen1= en_on_screen1; // ВКЛ-ВЫКЛ 1 ЭКРАН
  extern enum_screen2 flag_screen2= en_on_screen2; // ВКЛ-ВЫКЛ 2 ЭКРАН
  extern enum_tip_orderov kakie_ordera= en_rbIno4nbIe;// ОРДЕРА ОТКРЫТИЯ?

外部変数を黄色で強調しました。これらの変数は、EAがチャートにアタッチされたときに、入力パラメータタブに表示されます。

 
DanilaMactep:

一緒にコードの一部を挿入する-。


外部変数を黄色で強調しました。これらの変数は、EAがチャートにアタッチされたときに、入力パラメータタブに表示されます。

今は「extern」ではなく「input」を使っている。

また、「extern変数」をSIGNALS_INDIKATOR.mqhライブラリに移動する必要があります。

 
DanilaMactep:

一緒にコードの一部を挿入する-。

EA本体内のグローバル 変数は、EAのみで、プラグインからは見えません。

が、プラグイン本体内のグローバル変数はどこでも見えるようになっています。