MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 385 1...378379380381382383384385386387388389390391392...1953 新しいコメント fxsaber 2017.11.23 07:19 #3841 Alexandr Ivanov:まあ、私も見つかっていないのですが...。悲しさ。そのため、1小節に何ティック入っているかを推定し、そこから始値 なのか全ティックなのかを判断する必要があります。MT4のEAをクロスプラットフォームで作るには、適切なスキルがあれば5分(1回!)です。その後、MT5でリアル またはカスタムティックで(何度も)テストし、MT4で取引します。 Mickey Moose 2017.11.23 14:04 #3842 皆さん、こんにちは。開いているすべてのチャートのTFを任意に変更するスクリプトを用意するパターンを変更した承認済みのものを作る必要があるでもそのためには、せめてコードでパターンとは何かを示してください msvmes 2017.11.24 16:06 #3843 こんにちは。SMIインジケーターが用意されています。でも、うまくいかないんです。初めて実行したときはそうなのですが、新しいバーが 出るたびに更新を押すか、別の時間枠に切り替える必要があります。なぜ?もしかしたら、この問題はすでにここで提起されているかもしれませんが、リンクだけでも教えてください。よろしくお願いします。 ファイル: SMI.mq4 8 kb RichLux 2017.11.24 19:56 #3844 注文が開けない理由を教えてください。以下は、そのログの行です。2017.11.24 20:00:00.061 '5390918': requote 1.19357 / 1.19368 for open sell 0.01 EURUSD at 1.19361 sl:1.19848 tp:1.18402。2017.11.24 19:59:59.515 '5390918': 1.19361 で 0.01 EURUSD の売りのインスタントオーダー sl: 1.19848 tp: 1.18402スリッページは11pipsです。EAではスリッページを27pipsに設定しました。オープンした注文を確認すると、エラー138(新しい価格)が表示されました。注文が開かなかった理由を教えてください。 Any questions from newcomers OrderSend works on market, [Archive!] FOREX - Trends, Vitaly Muzichenko 2017.11.24 20:00 #3845 RichLux:注文が開けない理由を教えてください。以下は、そのログの行です。2017.11.24 20:00:00.061 '5390918': requote 1.19357 / 1.19368 for open sell 0.01 EURUSD at 1.19361 sl:1.19848 tp:1.18402。2017.11.24 19:59:59.515 '5390918': 1.19361 で 0.01 EURUSD の売りのインスタントオーダー sl: 1.19848 tp: 1.18402スリッページは11pipsです。EAではスリッページを27pipsに設定しました。注文の開始を確認すると、エラー138(新価格)が発生しました。注文が開かなかった理由を教えてください。このような問題を避けるために、取引や口座の種類を変更してください。市場執行のある口座を取得する必要があります - インスタントは忘れてください。 gastinets 2017.11.25 11:08 #3846 インジケーターのシグナルの反対ではなく、テイクプロフィットでポジションをクローズするコードの書き方を教えてください。 例えば、異なる期間の移動平均の 交差を入力するシグナルで、利益を50ピップス取ります。新しいシグナルやクロスがないにもかかわらず、テイクプロフィットに到達して取引を終了すると、すぐに新しい取引を開始するコードを持っています。 voron_026 2017.11.27 23:24 #3847 良い一日。コードを見てください。新しい線が表示されても、ロボットは水平線を削除しません//+------------------------------------------------------------------+ //| 2.0.mq4 | //| Copyright 2017,UriyGlushko | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2017,UriyGlushko" #property link "https://www.mql5.com" #property version "1.00" #property strict extern string Rodot = "Параметры робота" ; extern double Lots = 0.1 ; extern int StopLoss = 20 ; extern int TakeProfit = 80 ; extern int Magic = 568422685 ; extern int Slippage = 3 ; // Проскальзывание extern int Shag = 40 ; // Шаг для трейлингстопа extern int Tral_dist = 40 ; // Дистанция трейлингстопа extern bool Use_traling = true ; // Использование трейлингстопа true - Включено, false - Выключено extern bool Use_shag = false ; // Использование шага. true - Включено, false - Выключено extern bool Use_bezubitok = true ; // Использование безубытка. true - Включено, false - Выключено // Параметры индикатора moving_averages extern string MA = "Параметры Скользащей средней" ; extern int MA_Period = 3 ; // Период extern int MA_Shift = 0 ; // Сдвиг extern int MA_Method = 0 ; // 0-простая, 1-экспонециальная, 2-сглаженная, 3-линейно-взвешенная // Параметры разворотных свечей extern string Comment2 = "Параметры разворотных свечей" ; extern bool _Doji = false ; extern ENUM_TIMEFRAMES TimeFrame = PERIOD_M5 ; // Период разворотной свечи extern ENUM_TIMEFRAMES LittleTimeFrame = PERIOD_M1 ; // Период точки входа extern int ATR_period = 14 ; // Период индикатора волотильности // Параметры уровней области разворота extern string Comment3 = "Параметры уровней области разворота" ; extern int UpLineSell = 4 ; // Верхняя линия ОР для продаж (пункт от High) extern int DownLineSell = 4 ; // Нижняя линия ОР для продаж (пункт от High) extern int UpLineBuy = 4 ; // Верхняя линия ОР для покупок (пункт от Low) extern int DownLineBuy = 4 ; // Нижняя линия ОР для покупок (пункт от Low) double sl, tp, dist, shag, ma1, ma2; int ticket; int DojiCandle = 0 ; //Счетчик баров "Дожи" int DojiCandleBuy = 0 ; //Счетчик входных баров на разворотном баре "Дожи" Buy int DojiCandleSell = 0 ; //Счетчик входных баров на разворотном баре "Дожи" Sell int lineDojiCandle = 0 ; //Счетчик уровней области разворота по паттерну "Дожи" // Переменные функции "Новый бар" bool New_Bar = false ; // Переменные функции паттерна "Дожи" bool BuyDoji = false ; bool SellDoji = false ; bool TradeUpDoji = false ; bool TradeDownDoji = false ; double UpLine_Doji; double DownLine_Doji; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit () { if ( Digits == 3 || Digits == 5 ) { TakeProfit *= 10 ; StopLoss *= 10 ; Slippage *= 10 ; UpLineSell *= 10 ; DownLineSell *= 10 ; UpLineBuy *= 10 ; DownLineBuy *= 10 ; } return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit ( const int reason) { } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick () { int magic = Magic; int shag_ = Shag; double Open1 = NormalizeDouble ( iOpen ( Symbol (), TimeFrame, 1 ), Digits ); double Close1 = NormalizeDouble ( iClose ( Symbol (), TimeFrame, 1 ), Digits ); double High1 = NormalizeDouble ( iHigh ( Symbol (), TimeFrame, 1 ), Digits ); double Low1 = NormalizeDouble ( iLow ( Symbol (), TimeFrame, 1 ), Digits ); Fun_New_Bar(); Doji(); ma1 = iCustom ( NULL , 0 , "moving_averages" ,MA_Period, MA_Shift, MA_Method, 0 , 1 ); ma2 = iCustom ( NULL , 0 , "moving_averages" ,MA_Period, MA_Shift, MA_Method, 0 , 2 ); if (_Doji == true ) { if (SellDoji == true ) { if (! ObjectCreate ( ChartID (), "Arrow_Down_Doji" + IntegerToString (DojiCandle), OBJ_ARROW_DOWN , 0 , TimeCurrent (), High [ 1 ] + 70 * Point )) { Print ( "Не удалось создать метку вниз" ); } ObjectSetInteger ( ChartID (), "Arrow_Down_Doji" + IntegerToString (DojiCandle), OBJPROP_COLOR , clrChocolate ); //--- установка цвета ObjectSetInteger ( ChartID (), "Arrow_Down_Doji" + IntegerToString (DojiCandle), OBJPROP_STYLE , STYLE_SOLID ); //--- установка стиля линии ObjectSetInteger ( ChartID (), "Arrow_Down_Doji" + IntegerToString (DojiCandle), OBJPROP_WIDTH , 1 ); //--- установка толщины линии ObjectSetInteger ( ChartID (), "Arrow_Down_Doji" + IntegerToString (DojiCandle), OBJPROP_BACK , false ); //--- отображение на переднем (false) или заднем (true) плане DojiCandle ++; if (! ObjectCreate ( ChartID (), "UpLine_Doji" + IntegerToString (lineDojiCandle), OBJ_HLINE , 0 , TimeCurrent (),UpLine_Doji)) { Print ( "Не удалось создать верхнюю линию" ); } ObjectSetInteger ( ChartID (), "UpLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_COLOR , clrChocolate ); //--- установим цвет прямоугольника ObjectSetInteger ( ChartID (), "UpLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_STYLE , STYLE_SOLID ); //--- установим стиль линий прямоугольника ObjectSetInteger ( ChartID (), "UpLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_WIDTH , 1 ); //--- установим толщину линий прямоугольника ObjectSetInteger ( ChartID (), "UpLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_BACK , false ); //--- отобразим на переднем (false) или заднем (true) плане if (! ObjectCreate ( ChartID (), "DownLine_Doji" + IntegerToString (lineDojiCandle), OBJ_HLINE , 0 , TimeCurrent (),DownLine_Doji)) { Print ( "Не удалось создать нижнюю линию" ); } ObjectSetInteger ( ChartID (), "DownLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_COLOR , clrBrown ); //--- установим цвет прямоугольника ObjectSetInteger ( ChartID (), "DownLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_STYLE , STYLE_SOLID ); //--- установим стиль линий прямоугольника ObjectSetInteger ( ChartID (), "DownLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_WIDTH , 1 ); //--- установим толщину линий прямоугольника ObjectSetInteger ( ChartID (), "DownLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_BACK , false ); //--- отобразим на переднем (false) или заднем (true) плане lineDojiCandle ++; if (Open1 == Close1) { if (! ObjectCreate ( ChartID (), "Arrow_Down_Doji" + IntegerToString (DojiCandle), OBJ_ARROW_DOWN , 0 , TimeCurrent (), High [ 1 ] + 70 * Point )) { Print ( "Не удалось создать метку вниз" ); } ObjectSetInteger ( ChartID (), "Arrow_Down_Doji" + IntegerToString (DojiCandle), OBJPROP_COLOR , clrChocolate ); //--- установка цвета ObjectSetInteger ( ChartID (), "Arrow_Down_Doji" + IntegerToString (DojiCandle), OBJPROP_STYLE , STYLE_SOLID ); //--- установка стиля линии ObjectSetInteger ( ChartID (), "Arrow_Down_Doji" + IntegerToString (DojiCandle), OBJPROP_WIDTH , 1 ); //--- установка толщины линии ObjectSetInteger ( ChartID (), "Arrow_Down_Doji" + IntegerToString (DojiCandle), OBJPROP_BACK , false ); //--- отображение на переднем (false) или заднем (true) плане DojiCandle ++; Print ( "Дожи крест Down" ); if (! ObjectCreate ( ChartID (), "UpLine_Doji" + IntegerToString (lineDojiCandle), OBJ_HLINE , 0 , TimeCurrent (),UpLine_Doji)) { Print ( "Не удалось создать верхнюю линию" ); } ObjectSetInteger ( ChartID (), "UpLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_COLOR , clrOrangeRed ); //--- установим цвет прямоугольника ObjectSetInteger ( ChartID (), "UpLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_STYLE , STYLE_SOLID ); //--- установим стиль линий прямоугольника ObjectSetInteger ( ChartID (), "UpLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_WIDTH , 1 ); //--- установим толщину линий прямоугольника ObjectSetInteger ( ChartID (), "UpLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_BACK , false ); //--- отобразим на переднем (false) или заднем (true) плане if (! ObjectCreate ( ChartID (), "DownLine_Doji" + IntegerToString (lineDojiCandle), OBJ_HLINE , 0 , TimeCurrent (),DownLine_Doji)) { Print ( "Не удалось создать нижнюю линию" ); } ObjectSetInteger ( ChartID (), "DownLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_COLOR , clrBrown ); //--- установим цвет прямоугольника ObjectSetInteger ( ChartID (), "DownLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_STYLE , STYLE_SOLID ); //--- установим стиль линий прямоугольника ObjectSetInteger ( ChartID (), "DownLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_WIDTH , 1 ); //--- установим толщину линий прямоугольника ObjectSetInteger ( ChartID (), "DownLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_BACK , false ); //--- отобразим на переднем (false) или заднем (true) плане lineDojiCandle ++; } } static int switch12 = 0 ; static int switch22 = 0 ; static int switch32 = 0 ; if (ma2 > UpLine_Doji && ma2 > DownLine_Doji && ma1 > UpLine_Doji && ma1 > DownLine_Doji) { UpLine_Doji = 0 ; DownLine_Doji = 0 ; } if (ma2 > DownLine_Doji) { if (ma1 < DownLine_Doji) { switch12 = 1 ; Print ( "пересечение дожи 1" ); } } if (ma2 < DownLine_Doji) { if (ma1 > DownLine_Doji) { if (switch12 == 1 ) { switch22 = 1 ; Print ( "пересечение дожи 2" ); } } } if (ma2 > DownLine_Doji) { if ( Close [ 1 ] < DownLine_Doji) { if (switch12 == 1 ) { if (switch22 == 1 ) { switch32 = 1 ; Print ( "пересечение дожи 3" ); } } } } if (switch12 == 1 ) { if (switch22 == 1 ) { if (switch32 == 1 ) { if (! ObjectCreate ( ChartID (), "Arrow_Sell_Doji" + IntegerToString (DojiCandleSell), OBJ_ARROW_SELL , 0 , TimeCurrent (), Low [ 1 ] + 50 * Point )) { Print ( "Не удалось создать метку вниз" ); } ObjectSetInteger ( ChartID (), "Arrow_Sell_Doji" + IntegerToString (DojiCandleSell), OBJPROP_COLOR , clrChocolate ); //--- установка цвета ObjectSetInteger ( ChartID (), "Arrow_Sell_Doji" + IntegerToString (DojiCandleSell), OBJPROP_STYLE , STYLE_SOLID ); //--- установка стиля линии ObjectSetInteger ( ChartID (), "Arrow_Sell_Doji" + IntegerToString (DojiCandleSell), OBJPROP_WIDTH , 1 ); //--- установка толщины линии ObjectSetInteger ( ChartID (), "Arrow_Sell_Doji" + IntegerToString (DojiCandleSell), OBJPROP_BACK , false ); //--- отображение на переднем (false) или заднем (true) плане DojiCandleSell ++; Print ( "Точка входа SELL по разворотной свече 'Дожи'" ); UpLine_Doji = 0 ; DownLine_Doji = 0 ; if ( ObjectFind ( ChartID (), "Arrow_Sell_Doji" + IntegerToString (DojiCandleSell))) { switch12 = 0 ; switch22 = 0 ; switch32 = 0 ; } if ( ObjectFind ( ChartID (), "UpLine_Doji" + IntegerToString (lineDojiCandle)) && ObjectFind ( ChartID (), "DownLine_Doji" + IntegerToString (lineDojiCandle))) { ObjectDelete ( "UpLine_Doji" + IntegerToString (lineDojiCandle)); ObjectDelete ( "DownLine_Doji" + IntegerToString (lineDojiCandle)); Print ( "Линии удалены" ); } Print ( "Не удалось удалить верхнюю и нижнюю линии" ); } } } } } //-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------// //+------------------------------------------------------------------+ // Функция определения нового бара | //+------------------------------------------------------------------+ void Fun_New_Bar() { datetime TimeBar0 = iTime ( Symbol (),TimeFrame, 0 ); static datetime New_Time= 0 ; // Время текущего бара New_Bar= false ; // Нового бара нет if (New_Time != TimeBar0) // Сравниваем время { New_Time = TimeBar0; // Теперь время такое New_Bar = true ; // Поймался новый бар } } //+------------------------------------------------------------------+ // Функция паттерна Дожи для бычьего и медвежьего рынка | //+------------------------------------------------------------------+ void Doji() { //Параметры Дожи double Open1 = NormalizeDouble ( iOpen ( Symbol (), TimeFrame, 1 ), Digits ); double Close1 = NormalizeDouble ( iClose ( Symbol (), TimeFrame, 1 ), Digits ); double High1 = NormalizeDouble ( iHigh ( Symbol (), TimeFrame, 1 ), Digits ); double Low1 = NormalizeDouble ( iLow ( Symbol (), TimeFrame, 1 ), Digits ); double Open2 = NormalizeDouble ( iOpen ( Symbol (), TimeFrame, 2 ), Digits ); double Close2 = NormalizeDouble ( iClose ( Symbol (), TimeFrame, 2 ), Digits ); double High2 = NormalizeDouble ( iHigh ( Symbol (), TimeFrame, 2 ), Digits ); double Low2 = NormalizeDouble ( iLow ( Symbol (), TimeFrame, 2 ), Digits ); //Параметры индикатора волотильности ATR для нахожденя относительно большой свечи перед Доджи double ATR = iATR ( Symbol (),TimeFrame,ATR_period, 1 ); BuyDoji = false ; SellDoji = false ; //Математическое описание патерна Дожи if (Close1 < High1 - NormalizeDouble ( 0.3 *(High1-Low1), Digits )&& Open1 < High1 - NormalizeDouble ( 0.3 *(High1-Low1), Digits )&& Close1 > High1 - NormalizeDouble ( 0.7 *(High1-Low1), Digits )&& Open1 > High1 - NormalizeDouble ( 0.7 *(High1-Low1), Digits )&& MathAbs (Close1-Open1) <= NormalizeDouble ( 0.4 *(High1-Low1), Digits )&& MathAbs (Close2-Open2) > 0.8 *ATR && MathAbs (High1-Low1) > 0.6 *ATR) { if ((Close2 - Open2) > 0 && New_Bar) { UpLine_Doji = High1 + UpLineSell* Point (); DownLine_Doji = High1 - DownLineSell* Point (); SellDoji = true ; Print ( "Down Doji" ); // Условие разворота в медвежий тренд } if ((Close2 - Open2) < 0 ) { UpLine_Doji = High1 + UpLineBuy* Point (); DownLine_Doji = High1 - DownLineBuy* Point (); BuyDoji = true ; Print ( "Up Doji" ); // Условие разворота в бычий тренд } } }変数の使用 static int switch12 = 0 ; static int switch22 = 0 ; static int switch32 = 0 ;エントリポイント条件が書き込まれます Alexey Viktorov 2017.11.28 07:23 #3848 voron_026: こんにちは。コードをご覧ください。新しい水平線が 現れたときに、ロボットが水平線を 削除しない変数を使用するを入力すると、エントリポイントの条件が書き込まれます。これは、削除する前に値を1つ増やすカウンターを行名に付加しているためです。 voron_026 2017.11.28 07:47 #3849 言いたいことはわかります。その時、ライン取りをどのように実施するか。新しいパターンが表示されたときに、そのパターンに対応する線を削除したい Alexey Viktorov 2017.11.28 07:51 #3850 voron_026: 言いたいことはわかります。その時、ライン取りをどのように実施するか。独自の線を持つ新しいパターンが現れたら、すぐにその線を削除してほしいあなた自身の提案はありますか?まず削除して、それから作成するとか?それとも削除せず、座標の変更のみ?削除して新たに作成する意味は? 1...378379380381382383384385386387388389390391392...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
まあ、私も見つかっていないのですが...。
悲しさ。そのため、1小節に何ティック入っているかを推定し、そこから始値 なのか全ティックなのかを判断する必要があります。
MT4のEAをクロスプラットフォームで作るには、適切なスキルがあれば5分(1回!)です。その後、MT5でリアル またはカスタムティックで(何度も)テストし、MT4で取引します。
皆さん、こんにちは。開いているすべてのチャートのTFを任意に変更するスクリプトを用意する
パターンを変更した承認済みのものを作る必要がある
でもそのためには、せめてコードでパターンとは何かを示してください
こんにちは。SMIインジケーターが用意されています。でも、うまくいかないんです。初めて実行したときはそうなのですが、新しいバーが 出るたびに更新を押すか、別の時間枠に切り替える必要があります。なぜ?もしかしたら、この問題はすでにここで提起されているかもしれませんが、リンクだけでも教えてください。よろしくお願いします。
注文が開けない理由を教えてください。
以下は、そのログの行です。
2017.11.24 20:00:00.061 '5390918': requote 1.19357 / 1.19368 for open sell 0.01 EURUSD at 1.19361 sl:1.19848 tp:1.18402。
2017.11.24 19:59:59.515 '5390918': 1.19361 で 0.01 EURUSD の売りのインスタントオーダー sl: 1.19848 tp: 1.18402
スリッページは11pipsです。EAではスリッページを27pipsに設定しました。オープンした注文を確認すると、エラー138(新しい価格)が表示されました。
注文が開かなかった理由を教えてください。
注文が開けない理由を教えてください。
以下は、そのログの行です。
2017.11.24 20:00:00.061 '5390918': requote 1.19357 / 1.19368 for open sell 0.01 EURUSD at 1.19361 sl:1.19848 tp:1.18402。
2017.11.24 19:59:59.515 '5390918': 1.19361 で 0.01 EURUSD の売りのインスタントオーダー sl: 1.19848 tp: 1.18402
スリッページは11pipsです。EAではスリッページを27pipsに設定しました。注文の開始を確認すると、エラー138(新価格)が発生しました。
注文が開かなかった理由を教えてください。
このような問題を避けるために、取引や口座の種類を変更してください。市場執行のある口座を取得する必要があります - インスタントは忘れてください。
インジケーターのシグナルの反対ではなく、テイクプロフィットでポジションをクローズするコードの書き方を教えてください。
例えば、異なる期間の移動平均の 交差を入力するシグナルで、利益を50ピップス取ります。
新しいシグナルやクロスがないにもかかわらず、テイクプロフィットに到達して取引を終了すると、すぐに新しい取引を開始するコードを持っています。
変数の使用
エントリポイント条件が書き込まれます
こんにちは。コードをご覧ください。新しい水平線が 現れたときに、ロボットが水平線を 削除しない
変数を使用する
を入力すると、エントリポイントの条件が書き込まれます。
これは、削除する前に値を1つ増やすカウンターを行名に付加しているためです。
言いたいことはわかります。その時、ライン取りをどのように実施するか。独自の線を持つ新しいパターンが現れたら、すぐにその線を削除してほしい
あなた自身の提案はありますか?
まず削除して、それから作成するとか?それとも削除せず、座標の変更のみ?削除して新たに作成する意味は?