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

 
EVGENII SHELIPOV #:

マカー 何かがおかしい。大好きですありがとうございます。私自身、あまりきれいではないオプションを見つけましたが、それは有効です。

GetAveragePriceManMaxOrders()が呼び出されている箇所を教えてください。
 

MakarFX #:
Покажи где идет обращение к GetAveragePriceManMaxOrders()

 ObjectCreate(0,"AveragePriceLineMinMaxOrders0",OBJ_HLINE, 0, 0, GetAveragePriceManMaxOrders(0));
   ObjectSet("AveragePriceLineMinMaxOrders0", OBJPROP_COLOR, clrLime);
   ObjectSet("AveragePriceLineMinMaxOrders0", OBJPROP_STYLE, STYLE_DASH);
   ObjectCreate(0,"AveragePriceLineMinMaxOrders1",OBJ_HLINE, 0, 0, GetAveragePriceManMaxOrders(1));
   ObjectSet("AveragePriceLineMinMaxOrders1",OBJPROP_COLOR, clrRed);
   ObjectSet("AveragePriceLineMinMaxOrders1", OBJPROP_STYLE, STYLE_DASH);

マカー この機能には、まだ重大なものはぶら下がっていないんです。オブジェクトを可視化するためのリファレンスを作ったところです。この機能は、いわば未来のためのものです。

 
EVGENII SHELIPOV #:

マカー この機能には、まだ重大なものはぶら下がっていないんです。オブジェクトを可視化するためのリファレンスを作ったところです。この機能は、いわば未来のためのものです。

削除

ObjectCreate(0,"AveragePriceLineMinMaxOrders0",OBJ_HLINE, 0, 0, GetAveragePriceManMaxOrders(0));
   ObjectSet("AveragePriceLineMinMaxOrders0", OBJPROP_COLOR, clrLime);
   ObjectSet("AveragePriceLineMinMaxOrders0", OBJPROP_STYLE, STYLE_DASH);
   ObjectCreate(0,"AveragePriceLineMinMaxOrders1",OBJ_HLINE, 0, 0, GetAveragePriceManMaxOrders(1));
   ObjectSet("AveragePriceLineMinMaxOrders1",OBJPROP_COLOR, clrRed);
   ObjectSet("AveragePriceLineMinMaxOrders1", OBJPROP_STYLE, STYLE_DASH);

で、すべてうまくいくはずです。

 

皆さん、こんにちは。mt4でそのようなタスクがあります。最初は、一日の始まりに、中期テンプレートで様々なシンボルのチャートを30枚開き、全てのチャートにインジケータとEAをパラメータ付きで貼り付けます。そしてチャートを分析し、シグナルがあるものはD1から n1に移動し、n1でシグナルがあればExpert Advisorがポジションをオープンし、それをサポートするのです。結局、チャートの一部がd1にあり、別の一部がn1にあることが判明しました。翌日の朝、再びd1にパラメータを保存したインジケータとEAですべてのチャートを表示させる必要があります。全てのチャートがd1にある瞬間にプロファイルを保存しようとしたことがあります。プロファイルを読み込みましたが、n1に切り替えたチャートはまだこのタイムフレームのままです。ターミナルで開いているすべてのチャートを簡単かつ迅速にd1に切り替え、すべての設定を保存できるようなソリューションはないでしょうか?スクリプト、Expert Advisor、または他の何か?

そして2つ目の質問ですが、30個のチャートを開いていて、すべてのチャートがあるボトムバーの右側に立つと、1つのチャートをページングする代わりに、ワンクリックで右のチャートに切り替えられるのでしょうか。


右矢印で1つずつスクロールするのですが、どうすれば一番右のチャートに行けるのでしょうか?

 
DanilaMactep #:

皆さん、こんにちは。mt4でそのようなタスクがあります。最初は、一日の始まりに、中期テンプレートで様々なシンボルのチャートを30枚開き、すべてのチャートにインジケータとEAをパラメータ付きで貼り付けます。そしてチャートを分析し、シグナルがあるものはD1から n1に移動し、n1でシグナルがあればExpert Advisorがポジションをオープンし、それをサポートするのです。結局、チャートの一部がd1にあり、別の一部がn1にあることが判明しました。翌日の朝、再びd1にパラメータを保存したインジケータとEAですべてのチャートを表示させる必要があります。全てのチャートがd1にある瞬間にプロファイルを保存しようとしたことがあります。プロファイルを読み込みましたが、n1に切り替えたチャートはまだこのタイムフレームのままです。ターミナルで開いているすべてのチャートを簡単かつ迅速にd1に切り替え、すべての設定を保存できるようなソリューションはないでしょうか?スクリプト、Expert Advisor、または他の何か?

そして2つ目の質問ですが、30個のチャートを開いていて、すべてのチャートがあるボトムバーの右側に立つと、1つのチャートをページングする代わりに、ワンタップで右のチャートに切り替えることができます。

この疑問を解決するためのスクリプトを紹介します。

/********************************************************************\
|                                                           Test.mq5 |
|                                            © 2021, Alexey Viktorov |
|                       https://www.mql5.com/ru/users/alexeyvik/news |
\********************************************************************/
#property copyright "Viktorov"
#property link      "https://www.mql5.com/ru/users/alexeyvik/news"
#property version   "1.00"
#property strict

/********************Script program start function*******************/
void OnStart()
 {
  long prevChart = ChartFirst();
  while(prevChart >= 0)
   {
    if(ChartPeriod(prevChart) != PERIOD_D1)
      ChartSetSymbolPeriod(prevChart, ChartSymbol(prevChart), PERIOD_D1);
    prevChart = ChartNext(prevChart);
   }
 }/******************************************************************/
/*****************************End program****************************/

2番目の質問では、Ctrl+TabまたはCtrl+Shift+Tabのキーの組み合わせが役に立ちます。

または1行のコードでスクリプトを書く

ChartSetInteger(ChartFirst(), CHART_BRING_TO_TOP, 0, true)
 
Alexey Viktorov #:

この疑問を解決するためのスクリプトを紹介します。

2つ目の質問では、ctrl+tabまたはctrl+shift+tabのキーボードショートカットが有効です。

または1行のコードでスクリプトを書く

このコードをスクリプトに追加してみます。);-)
 
Alexey Viktorov #:

この疑問を解決するためのスクリプトを紹介します。

2つ目の質問では、ctrl+tabまたはctrl+shift+tabのキーボードショートカットが有効です。

または1行のコードでスクリプトを書く

すべてが完璧に働いた - どうもありがとうございました - 今、私は何もバーストをねじ込みながら、時間と労力のP / Sの多くを保存しますと、またn1への転送のために作り直し))))))

 
こんにちは!経験豊富なユーザーにお伺いしたいのですが、非常にシンプルなインジケータがあり、コードは下に添付されています、私はMetatrader5ターミナルに 切り替えたいのですが、mql4で書かれた現在の指標は動作しません、指標の書き換え方法の基本原則はありますか、それともそれを変換するかもしれません
//+--где индикатор если indicator_chart_window то на график у нас в отдельном окне
#property indicator_separate_window
//+--уровни это сколько масивов Buf0[],Buf1[],Buf2[]; у нас каждый масив это линия
#property indicator_buffers 3
//+--сколько линий и какого цвета
#property indicator_color1 Green
#property indicator_color2 Red
#property indicator_color3 Blue 
//+-- ширина линии
#property indicator_width1  2
#property indicator_width2  3
#property indicator_width3  3
//+--уровни
#property indicator_level1 30 //+--уровень 1
#property indicator_level2 50 //+--уровень 2
#property indicator_levelstyle 2 //+--тип линии уровня 2 - это пунктир
#property indicator_levelcolor Black //+-- цвет линии уровня
//+-- то что будет в окне "входные параметры"                                         
extern int RSIPERIOD=5;
extern double KOEFF1=1.4;
extern double KOEFF2=2; 
//+-- описываем какие у нас массивы (их три) и перменные (в даном случае параметры РСАЙ (D10,D11,D12;) это переменная                                                                                                                                                       
double Buf0[],Buf1[],Buf2[];
double D10,D11,D12;
//+-- Блок init ПРЕДПОЛОДЖИТЕЛЬНО описательный                                                                                                                                                                                                                                                                                                                                      
int init()
  {
   IndicatorDigits(0); //+--формат точности (количество знаков после десятичной точки) для визуализации значений индикатора в окне индикатора (цифры rsi 7 или 7,23)
   string short_name="KAVRSI";   //+-- задаем 2 строчками короткое имя        
   IndicatorShortName("KAVRSI"); //+-- задаем 2 строчками короткое имя
   
   D10=RSIPERIOD;D11=D10*KOEFF1;D12=D11*KOEFF2;; //+--тут мы высчитываем переменные которые описали как масивы выше
 
   SetIndexBuffer(0,Buf0); //+-- описываем 1 массив Buf0[] первый это нулевой второй это первый и т.д.
   SetIndexStyle (0,DRAW_LINE); //+-- говорим что этот масив хотим представить в виде линии 0 это порядковый номер линии соответствует номеру масива 
   SetIndexBuffer(1,Buf1); //+-- описываем 2 массив Buf1[]
   SetIndexStyle (1,DRAW_LINE); //+-- 1 это порядковый номер линии соответствует номеру масива Buf1[]
   SetIndexBuffer(2,Buf2);
   SetIndexStyle (2,DRAW_LINE);
   return(0);
  }
//+-- Блок start сама математика и ОТРИСОВКА                                                                                                             
int start()
  {
   if(Bars<=RSIPERIOD)return(0); //+-- начинаем задавать условия если количество баров меньше расчета (баров 9 а мы считаем по 14) то выдаем 0
   int ExtCountedBars=IndicatorCounted(); //+--Возвращает количество баров, не измененных после последнего вызова индикатора.
   //---- последний посчитанный бар будет пересчитан
   if (ExtCountedBars>0) ExtCountedBars--;
   if (ExtCountedBars<0) return(-1);
   //+-- for(int для int это переменна в нашем случае видимо int ExtCountedBars=IndicatorCounted()
   //+-- и тут мы задаем параметр i - его свойства и описание на основе пересчитаных баров 
   //+-- в нашем случае НЕТ НЕ ПЕРЕСЧИТАННЫХ - считаеться и последний! 
   for(int i=0;i<Bars-RSIPERIOD;i++)
      {
       Buf0[i] = iRSI(NULL,0,D10,0,i);//+-- говорим что 1 массив это рсай с параметром D10
//+-- Пишем в коде что бы ВМЕСТО красной и синей линией RSI2 и RSI3 была одна линия - 
//+-- чтобы вместо красной и синей была одна - мы получаем среднее значение этих линий, т.е.     
       Buf1[i] = (iRSI(NULL,0,D11,0,i)+iRSI(NULL,0,D12,0,i))/2; //+-- и у этой линии, по умолчанию, красный цвет  
//+-- когда выполняется условие
       if(iRSI(NULL,0,D11,0,i)>iRSI(NULL,0,D12,0,i))
//+-- то мы не меняем цвет линии, т.к. в МТ4 это нельзя сделать,
//+-- а берем и накладываем сверху другую линию с другим цветом      
       Buf2[i] = Buf1[i]; 
       else
       Buf2[i] = EMPTY_VALUE; //+-- добавляем else Buf2[i] = EMPTY_VALUE; EMPTY_VALUE - Пустое значение в индикаторном буфере 
      }
   return(0);
  }
 

こんにちは。

MQL5を有料でアドバイスしてくれるプログラマーに聞きたい!

あるいは、誰かがアドバイスをしてくれるかもしれませんよ。ありがたいですねー。

 
Peperoni #:

こんにちは。

有料でアドバイスしてくれるプログラマーがいたら教えてほしい!」。

あるいは、誰かが誰かを推薦してくれるかもしれません。ありがたいですねー。

フリーランスの 方か、こちらで質問してください。

Торговые приложения для MetaTrader 5 на заказ
Торговые приложения для MetaTrader 5 на заказ
  • 2021.11.02
  • www.mql5.com
Самый большой фриланс c разработчиками программ на MQL5