MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1536 1...152915301531153215331534153515361537153815391540154115421543...1953 新しいコメント jarikn 2021.07.08 14:10 #15351 MakarFX:これを試してみてください、うまくいくはずです。 いいえ、警告音が鳴り続けています。以下は、コード全体と免罪符です。 たぶん、何か間違っているのでしょう。 //+------------------------------------------------------------------+ //| 777.mq4 | //| Copyright 2021, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2021, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict #property indicator_chart_window #property indicator_buffers 2 #property indicator_plots 2 //--- plot Покупаем #property indicator_label1 "Продаём" #property indicator_type1 DRAW_LINE #property indicator_color1 clrRed #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- plot Продаём #property indicator_label2 "Покупаем" #property indicator_type2 DRAW_LINE #property indicator_color2 clrBlue #property indicator_style2 STYLE_SOLID #property indicator_width2 1 //--- input parameters double Buy[]; // Буфер для покупок double Sell[]; // Буфер для продаж int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0,Buy); SetIndexBuffer(1,Sell); // Устанавливаем нулевые значения для индикатора, при которых не будет сигнальных стрелок SetIndexEmptyValue (0, 0); SetIndexEmptyValue (1, 0); //Определяем стиль отображения индикаторных линий - стрелка SetIndexStyle (0, DRAW_ARROW); SetIndexStyle (1, DRAW_ARROW); // Установим значки "стрелки" для буферов SetIndexArrow(0, 234); //Стрелка "вниз" для продаж SetIndexArrow(1, 233); //Стрелка "вверх" для покупок //Устанавливаем текст описания стрелок индикатора для отображения информации в всплывающей подсказке. SetIndexLabel(0, "Продаём"); SetIndexLabel(1, "Покупаем"); //Определяем разрядность значений индикаторных линий - приравниваем разрядности фин. инструмента IndicatorDigits (Digits); //Строка с кратким названием индикатора выводится в сплывающей подсказке при наведении указателя мыши на стрелку IndicatorShortName ("Мой первый индикатор"); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- int limit=rates_total-prev_calculated-2; if(limit<1) return(0); for(int i=limit;i>=0;i--) { // Снимем показания индикатора double in1b = iCustom(NULL,0,"in1",1,i+1); // индикатор 1 стрелка вверх double in1s = iCustom(NULL,0,"in1",0,i+1); // индикатор 1 стрелка вниз double in2b = iCustom(NULL,0,"in2",0,i+1); // индикатор 2 стрелка вверх double in2s = iCustom(NULL,0,"in2",1,i+1); // индикатор 2 стрелка вниз Comment("in1v = "+DoubleToString(in1b)+"\n" +"in1n = "+DoubleToString(in1s)+"\n" +"in2v = "+DoubleToString(in2b)+"\n" +"in2n = "+DoubleToString(in2s)); if(in1b < 2147483647 && in2b < 2147483647) // индикатор стрелка вверх { Sell[i]=low[i]; /* if(show_alert!=time[i]) { Alert(Symbol()+"BUY М "); show_alert=time[i]; }*/ } if(in1s < 2147483647 && in2s < 2147483647) // индикатор стрелка вниз { Buy[i]=high[i]; /* if(show_alert!=time[i]) { Alert(Symbol()+"SELL М "); show_alert=time[i]; }*/ } } //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ ファイル: in1.ex4 13 kb in2.ex4 28 kb Andrei Sokolov 2021.07.08 14:28 #15352 jarikn: みんな、インジケーターのアラートを作るのを手伝ってくれ。いろいろなインジケーターを組み合わせてテストしたいのですが、アラート機能が必要です。 矢印が表示されたときに1回だけアラートを表示させたい。あなたがハードでない場合は、私はそれを行うことはできません、アラートが全体の分またはすべての時間をポップアップし、さらにmt4がハングアップし、この関数を記述するために私を助けてください。 変数の追加 シグナルでない場合、この変数はfalseになる if (signal and variable==false){ { (signal and variable==false) アラート variable=true とした。 } jarikn 2021.07.08 14:42 #15353 Andrey Sokolov:変数の追加新しいローソク 足が表示されると、この変数は偽になるif (signal and variable==false){ { (signal and variable==false) アラート variable=true とした。} は、1本のキャンドルに1つまでとなります OK、ありがとうございます。 Andrei Sokolov 2021.07.08 14:44 #15354 jarikn:なるほど、ありがとうございます。 そこで変更しました。 jarikn 2021.07.08 17:43 #15355 もう一つ質問ですが、このインジケータはなぜCPUに負荷がかかるのですか? 10通貨ペアを開くと、mt4がすごく重くなるんです。FX取引ロボットとして、mt4のインジケータを使用する必要があります。 Tango_X 2021.07.08 19:16 #15356 オブジェクトをプログラムで選択可能にする方法を教えてください。 ヘルプにはそのようなことは書かれていませんでした。 Oleksandr Nozemtsev 2021.07.08 19:41 #15357 皆さんこんにちは。私は、トレンドの角度を度数で表示するインジケータを持っています(正規化されていませんが)。チャート上ではすべてが素晴らしい。角度カーブそのもの(青色)でも、その平均カーブ(緑色)でもよい - 図1。Expert Advisor で double Custom = iCustom(Symbol(), window, "Angle", 0, 1) を通じてインジケータを 呼び出すと、プログラムはいくつかの巨大な数字を生成します - 図 2。ダイアログウィンドウ - チャート期間、"Angle" - インジケータ名、0 - 青線が計算されるゼロバッファ(1 - 緑のMAバッファを置くことができますが、結果は似ているでしょう)、1 - シフト です。 何が問題なのでしょうか? マルチモジュールEAの作成 MQL5 標準ライブラリの拡張とコードの再利用 MQL5でのインディケーター の呼び方 削除済み 2021.07.08 19:42 #15358 Tango_X: オブジェクトを選択可能にする方法を教えてください。 ヘルプにはそのようなことは書かれていません。 objprop_selected オブジェクトの選択 mql5 mql4 Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Свойства объектов www.mql5.com Свойства объектов - Константы объектов - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5 jarikn 2021.07.08 19:48 #15359 私はEAを書き、すべてが機能しているように見えます。しかし、スリップの交差点で注文を締めなければならないということです。正確には、最初の注文だけがクローズされ、それがどちらに行ったかは関係なく、ログにエラーOrderClose error 4051が生成されます。何が問題なのか? //----------------------------------------------------------- if (CountSell() == 0 && mama1<mama2 && cci>verh && cci1>verh && cci<cci1) { tiket = OrderSend(Symbol(), OP_SELL,Lots,Bid,Slippage,0,0,"",Magic,0, Red); if (tiket>0) { SL=NormalizeDouble(Bid+StopLoss*Point,Digits); TP=NormalizeDouble(Bid-TakeProfit*Point,Digits); if (OrderSelect(tiket, SELECT_BY_TICKET)) if (!OrderModify(tiket,OrderOpenPrice(),SL,TP,0)) Print("Ошибка модификации ордера на продажу"); } else Print("Ошибка открытия ордера на продажу"); } if (CountBuy() == 0 && mama1>mama2 && cci<nuz && cci1<nuz && cci>cci1) { tiket = OrderSend(Symbol(), OP_BUY,Lots,Ask,Slippage,0,0,"",Magic,0,Blue); if (tiket>0) { SL=NormalizeDouble(Ask-StopLoss*Point,Digits); TP=NormalizeDouble(Ask+TakeProfit*Point,Digits); if (OrderSelect(tiket, SELECT_BY_TICKET)) if (!OrderModify(tiket,OrderOpenPrice(),SL,TP,0)) Print("Ошибка модификации ордера на покупку"); } else Print("Ошибка открытия ордера на покупку"); } if(mama1>mama2 && CountSell()>0) { for(int i = OrdersTotal() -1;i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderMagicNumber()==Magic && OrderType()==OP_SELL) OrderClose(OrderType(),OrderLots(),Ask,Slippage,Black); } } } if(mama1<mama2 && CountBuy()>0) { for(int i = OrdersTotal() -1;i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderMagicNumber()==Magic && OrderType()==OP_BUY) OrderClose(OrderType(),OrderLots(),Bid,Slippage,Black); } } } Oleksandr Nozemtsev 2021.07.08 19:48 #15360 Tango_X: オブジェクトをプログラムで選択可能にする方法を教えてください。 ヘルプにはそのようなことは書かれていませんでした。 標準のオブジェクト作成 機能を使用する場合、デフォルトではselection = trueに設定されています。例えば、トレンドラインであれば、下から4番目のライン。 bool TrendCreate(const long chart_ID = 0, // ID графика const string name = "TrendLine", // имя линии const int sub_window = 0, // номер подокна datetime time1 = 0, // время первой точки double price1 = 0, // цена первой точки datetime time2 = 0, // время второй точки double price2 = 0, // цена второй точки const color clr = clrRed, // цвет линии const ENUM_LINE_STYLE style = STYLE_SOLID, // стиль линии const int width = 4, // толщина линии const bool back = false, // на заднем плане const bool selection = true, // выделить для перемещений const bool ray_right = false, // продолжение линии вправо const bool hidden = true, // скрыт в списке объектов const long z_order = 0) // приоритет на нажатие мышью 1...152915301531153215331534153515361537153815391540154115421543...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
これを試してみてください、うまくいくはずです。
いいえ、警告音が鳴り続けています。以下は、コード全体と免罪符です。 たぶん、何か間違っているのでしょう。
みんな、インジケーターのアラートを作るのを手伝ってくれ。いろいろなインジケーターを組み合わせてテストしたいのですが、アラート機能が必要です。 矢印が表示されたときに1回だけアラートを表示させたい。あなたがハードでない場合は、私はそれを行うことはできません、アラートが全体の分またはすべての時間をポップアップし、さらにmt4がハングアップし、この関数を記述するために私を助けてください。
変数の追加
シグナルでない場合、この変数はfalseになる
if (signal and variable==false){ { (signal and variable==false)
アラート
variable=true とした。
}
変数の追加
新しいローソク 足が表示されると、この変数は偽になる
if (signal and variable==false){ { (signal and variable==false)
アラート
variable=true とした。
}
は、1本のキャンドルに1つまでとなりますOK、ありがとうございます。
なるほど、ありがとうございます。
そこで変更しました。
皆さんこんにちは。私は、トレンドの角度を度数で表示するインジケータを持っています(正規化されていませんが)。チャート上ではすべてが素晴らしい。角度カーブそのもの(青色)でも、その平均カーブ(緑色)でもよい - 図1。Expert Advisor で double Custom = iCustom(Symbol(), window, "Angle", 0, 1) を通じてインジケータを 呼び出すと、プログラムはいくつかの巨大な数字を生成します - 図 2。ダイアログウィンドウ - チャート期間、"Angle" - インジケータ名、0 - 青線が計算されるゼロバッファ(1 - 緑のMAバッファを置くことができますが、結果は似ているでしょう)、1 - シフト です。 何が問題なのでしょうか?
オブジェクトを選択可能にする方法を教えてください。 ヘルプにはそのようなことは書かれていません。
objprop_selected
オブジェクトの選択
mql5
mql4
オブジェクトをプログラムで選択可能にする方法を教えてください。 ヘルプにはそのようなことは書かれていませんでした。
標準のオブジェクト作成 機能を使用する場合、デフォルトではselection = trueに設定されています。例えば、トレンドラインであれば、下から4番目のライン。