初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1464

 
Artyom Trishkin #:

すべての端末の共通フォルダに書き込む。1台が書き込み、他が読み込み、チャートを作成する。これは大まかな一般化である。

それは明らかであるが、ファイルを修正するために使用されているときにインデックス、すなわち書き込みの瞬間に読み取りへのアクセスが閉じられ、CPUへの負荷が大きい場合、それは長いことができ、それは何とか考慮する必要があります。

word360やgoogleの一般的なアクセスや一般的な編集では、キューとの問題はそこに解決されます。 タイプは、書き込み、自動保存、手動で保存されていません。そして、キューがあります。

そして、そう、もちろん、Commonsフォルダはサンドボックスの中ではなく、外にある。

 
SuhanovDM94 インジケータを作成 します。これ以上のものはまだ考えていません。皆さん、ヒントをありがとうございました!)

https:// www.mql5.com/ru/articles/115

Реализация взаимодействия между клиентскими терминалами MetaTrader 5 при помощи именованных каналов (Named Pipes)
Реализация взаимодействия между клиентскими терминалами MetaTrader 5 при помощи именованных каналов (Named Pipes)
  • www.mql5.com
Данная статья знакомит с реализацией межпроцессного взаимодействия между терминалами MetaTrader 5 посредством именованных каналов (named pipes). Предложен класс CNamedPipes, реализующий возможность использования именованных каналов. Рассмотрен тиковый индикатор для тестирования связи между двумя клиентскими терминалами MetaTrader 5 и измерения общей пропускной способности системы. Представленный метод взаимодействия оказался пригодным для отправки котировок в реальном времени.
 
れてれてれてれてれてれてれてれてれてれて:::::ーhttps://www.mql5.com/ru/articles/503
Связь с MetaTrader 5 через именованные каналы без применения DLL
Связь с MetaTrader 5 через именованные каналы без применения DLL
  • www.mql5.com
Перед многими разработчиками встает одинаковая проблема - как пробиться в песочницу торгового терминала без применения небезопасных DLL. Одним из простых и безопасных методов является использование стандартных именованных каналов (Named Pipes), которые работают как обычные файловые операции. Они позволяют организовать межпроцессорное клиент-серверное взаимодействие между программами. Посмотрите практические примеры на C++ и MQL5 в виде сервера, клиента, обмен данными между ними и замер производительности.
 
Artyom Trishkin #:
https:// www.mql5.com/ru/articles/503
ありがとうございました!
 

こんにちは!

なぜフォワードテストが必要なのか教えてください。

全区間での単純な最適化と同じではないですか?
 

こんにちは、プログラマーの皆さん!スクリプトについて教えてください。ある日付のリストに対して、チャート上に多数の縦線を引くスクリプトが必要です。つまり、例えば、私が100の日付のリストをコード本文に入力し、スクリプトが各日付に縦線を引くだけです。

しかし、なぜか非常に面倒であることが判明した。

#property strict
//--- описание
#property description "Скрипт строит графический объект \"Вертикальная линия\"."
#property description "Дата точки привязки задается в процентах от ширины"
#property description "окна графика в барах."
//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
//--- входные параметры скрипта
input string          InpName="VLine";     // Имя линии
input int             InpDate=25;          // Дата линии в %
input color           InpColor=clrRed;     // Цвет линии
input ENUM_LINE_STYLE InpStyle=STYLE_DASH; // Стиль линии
input int             InpWidth=3;          // Толщина линии
input bool            InpBack=false;       // Линия на заднем плане
input bool            InpSelection=true;   // Выделить для перемещений
input bool            InpHidden=true;      // Скрыт в списке объектов
 
//+------------------------------------------------------------------+
//| Создает вертикальную линию                                       |
//+------------------------------------------------------------------+
bool VLineCreate(const long            chart_ID=0,        // ID графика
                 const string          name="VLine",      // имя линии
                 const int             sub_window=0,      // номер подокна
                 datetime              time=0,            // время линии
                 const color           clr=clrRed,        // цвет линии
                 const ENUM_LINE_STYLE style=STYLE_SOLID, // стиль линии
                 const int             width=1,           // толщина линии
                 const bool            back=false,        // на заднем плане
                 const bool            selection=true,    // выделить для перемещений
                 const bool            hidden=true)       // скрыт в списке объектов
           
  {
//--- если время линии не задано, то проводим ее через последний бар

      time=TimeCurrent();


 ObjectCreate(chart_ID,name,OBJ_VLINE,sub_window,time,0);
    
     
     
//--- установим цвет линии
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- установим стиль отображения линии
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- установим толщину линии
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- отобразим на переднем (false) или заднем (true) плане
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- включим (true) или отключим (false) режим перемещения линии мышью
//--- при создании графического объекта функцией ObjectCreate, по умолчанию объект
//--- нельзя выделить и перемещать. Внутри же этого метода параметр selection
//--- по умолчанию равен true, что позволяет выделять и перемещать этот объект
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
 
   return(true);
  }
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
 

 
 datetime time=TimeCurrent();
      
//--- создадим вертикальную линию
VLineCreate(0,InpName,0,time,InpColor,InpStyle,InpWidth,InpBack,
      InpSelection,InpHidden);
      
return;
 }
 
Alexey Belyakov #:

こんにちは、プログラマーの皆さん!スクリプトについて教えてください。ある日付のリストに対して、チャート上に多数の縦線を引くスクリプトが必要です。つまり、例えば、100の日付のリストをコードの本文に入力すると、スクリプトはそれぞれの日付に縦線を引くだけです。

私はここで何かを試み始めたが、どういうわけかそれは非常に面倒であることが判明し、それはわずか1行である。

セパレーターを通して日付を文字列にする。

そしてこの文字列を配列に分割する。

そして、各反復で配列をループする。

VLineCreate
 

ありがとう。私はとても表面的なプログラマーなので。順番に質問していきます。

"日付を区切り文字で文字列にする"

使用する "文字列 TimeToString( "")

????

 
Alexey Belyakov TimeToString( "")

????

You don't need to convert anything to string to draw a line.

あなたは問題を説明したが、それを完全に説明していないので、人々はそれを理解しなければならない。

How are you going to record 100 dates?

ー スクリプトのー 本文に。

datetime time1 = D'2021.11.15 00:00:00';
datetime time2 = D'2022.11.15 00:00:00';
datetime time3 = D'2023.11.15 00:00:00';
// в этом случае так делаем
VLineCreate(0, InpName, 0, time1, InpColor, InpStyle, InpWidth, InpBack, InpSelection, InpHidden);
VLineCreate(0, InpName, 0, time2, InpColor, InpStyle, InpWidth, InpBack, InpSelection, InpHidden);
VLineCreate(0, InpName, 0, time3, InpColor, InpStyle, InpWidth, InpBack, InpSelection, InpHidden);

ーそれともームアドバイザー起動時にームアドバイザー起動時に。

input datetime time1 = D'2021.11.15 00:00:00';
input datetime time2 = D'2022.11.15 00:00:00';
input datetime time3 = D'2023.11.15 00:00:00';
//в этом случае можно сделать так или без массива прописать функцию линии для каждой даты как написано выше
void OnStart(void)
  {
   datetime time[100];

   time[0] = time1;
   time[1] = time2;
   time[2] = time3;

   for(int i = 0; i < 3; i++)
      VLineCreate(0, "InpName" + (string)i, 0, time[i], InpColor, InpStyle, InpWidth, InpBack, InpSelection, InpHidden);
  }
 
Aleksandr Slavskii #:

線を引くために何かを文字列に変換する必要はない。

あなたはタスクを説明したが、それを完全に説明していないので、人々は推測しなければならない。

どうやって100の日付を記録するつもりですか?

台本の本文に書くのですか?

それともExpert Advisorの起動時に手動で入力するのですか?

確認しました。2番目のケースは良いのですが、ウィンドウに日付を一つ一つ手入力する必要があり、手間がかかるので適していません。単純に「ctrl-c, ctrl-v」でよいのです。

最初のケースでは、なぜか3本の線が引かれず、直近のローソク足に1本だけ引かれる。 なぜかはまだ不明だが、調査中である。

理由: