Как начать работу с MQL5 - страница 38

 
Vladimir Karputov # :

Kodunuzu ekleyin, kodun tam olarak ne için açıklayın. Tam olarak neşeyle işe yaramadığını açıklayın.

Высылаю коды. В индикаторе macd я хочу, чтобы если разница между основной и сигнальной линией больше InpDifference, то позиция закрывалась. но там много разных операций. Я меняю значение InpDifference, но операции не меняются.

Файлы:
 
Kutluhan Yesilkaya # :

Высылаю коды. В индикаторе macd я хочу, чтобы если разница между основной линией и сигнальной линией больше InpDifference, то позиция закрывалась. но там много разных операций. Я меняю значение InpDifference, но операции не меняются.

Я дал вам код ( iMACD Difference Close All :) - почему вы игнорируете мой код? Почему вы вставляете в код непонятные символы и операции?

Вы должны сделать это: Вы должны взять мой код. А потом начать консультации - как его изменить (или дополнить). То есть мы продолжаем работать так: вы берете мой код, задаете вопрос - и ждете ответа.

iMACD Difference Close All
iMACD Difference Close All
  • www.mql5.com
Советник-утилита: при граничной разнице между линиями индикатора iMACD (Moving Average Convergence/Divergence, MACD) советник закроет все позиции на текущем символе.
 

Как прочитать название валютных пар из текстового файла

Пример:

Этап №1:

Начнем с расположения текстового файла: в редакторе MetaEditor 5 в меню 'File ' выберите пункт 'Open Data Folder r ':

в проводнике щелкните по папке 'MQL5 '

в проводнике щелкните на папке 'Files '

в открывшейся папке создаем наш файл 'ForexSymbol.txt' и записываем в него строку с символами

AUDCAD,AUDCHF,AUDJPY,AUDNZD,AUDUSD,CADCHF,CADJPY,CHFJPY,EURAUD,EURCAD,EURCHF,EURGBP,EURJPY,EURNZD,EURUSD,GBPAUD,GBPCAD,GBPCHF,GBPJPY,GBPNZD,GBPUSD,NZDCAD,NZDCHF,NZDJPY,NZDUSD,USDCAD,USDCHF,USDJPY


Этап номер 2:

Запускаем наш советник:

//+------------------------------------------------------------------+
//|                                           CFileTxt test Read.mq5 |
//|                         Copyright © 2022, Vladimir Karputov |
//|                      https://www.mql5.com/en/users/barabashkakvn |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2022, Vladimir Karputov"
#property link      "https://www.mql5.com/en/users/barabashkakvn"
#property version   "1.000"
//---
#include <Trade\SymbolInfo.mqh>
#include <Files\FileTxt.mqh>
//---
CSymbolInfo    m_symbol;                     // object of CSymbolInfo class
CFileTxt       m_file_txt;                   // file txt object
//--- input parameters
input string   InpFileName = "ForexSymbol.txt"; // File name
//---
string   m_array_symbols[];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   if(!m_file_txt.Open(InpFileName,FILE_READ))
     {
      Print("Error open ',",InpFileName,"' #",GetLastError());
      return(INIT_FAILED);
     }
   Print("File ',",InpFileName,"' opened successfully");
   string sep=",";                // A separator as a character
   ushort u_sep;                  // The code of the separator character
//--- Get the separator code
   u_sep=StringGetCharacter(sep,0);
   while(!m_file_txt.IsEnding())
     {
      //--- read and print the string
      string to_split=m_file_txt.ReadString();
      Print(to_split);
      string result[];               // An array to get strings
      //--- Split the string to substrings
      int k=StringSplit(to_split,u_sep,result);
      //--- Show a comment
      PrintFormat("Strings obtained: %d. Used separator '%s' with the code %d",k,sep,u_sep);
      //--- Now output all obtained strings
      if(k>0)
        {
         for(int i=0; i<k; i++)
           {
            ResetLastError();
            if(!m_symbol.Name(Symbol())) // sets symbol name
              {
               Print(__FILE__," ",__FUNCTION__,", ERROR: CSymbolInfo.Name");
               continue;
              }
            PrintFormat("result[%d]=\"%s\"",i,result[i]);
            int size=ArraySize(m_array_symbols);
            ArrayResize(m_array_symbols,size+1,10);
            m_array_symbols[size]=result[i];
           }
        }
     }
   m_file_txt.Close();
   Print("- - -");
   ArrayPrint(m_array_symbols);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
  }
//+------------------------------------------------------------------+

Результат:

File ',ForexSymbol.txt' opened successfully
AUDCAD,AUDCHF,AUDJPY,AUDNZD,AUDUSD,CADCHF,CADJPY,CHFJPY,EURAUD,EURCAD,EURCHF,EURGBP,EURJPY,EURNZD,EURUSD,GBPAUD,GBPCAD,GBPCHF,GBPJPY,GBPNZD,GBPUSD,NZDCAD,NZDCHF,NZDJPY,NZDUSD,USDCAD,USDCHF,USDJPY
Strings obtained: 28. Used separator ',' with the code 44
result[0]="AUDCAD"
result[1]="AUDCHF"
result[2]="AUDJPY"
result[3]="AUDNZD"
result[4]="AUDUSD"
result[5]="CADCHF"
result[6]="CADJPY"
result[7]="CHFJPY"
result[8]="EURAUD"
result[9]="EURCAD"
result[10]="EURCHF"
result[11]="EURGBP"
result[12]="EURJPY"
result[13]="EURNZD"
result[14]="EURUSD"
result[15]="GBPAUD"
result[16]="GBPCAD"
result[17]="GBPCHF"
result[18]="GBPJPY"
result[19]="GBPNZD"
result[20]="GBPUSD"
result[21]="NZDCAD"
result[22]="NZDCHF"
result[23]="NZDJPY"
result[24]="NZDUSD"
result[25]="USDCAD"
result[26]="USDCHF"
result[27]="USDJPY"
- - -
[ 0] "AUDCAD" "AUDCHF" "AUDJPY" "AUDNZD" "AUDUSD" "CADCHF" "CADJPY" "CHFJPY" "EURAUD" "EURCAD" "EURCHF" "EURGBP" "EURJPY" "EURNZD"
[14] "EURUSD" "GBPAUD" "GBPCAD" "GBPCHF" "GBPJPY" "GBPNZD" "GBPUSD" "NZDCAD" "NZDCHF" "NZDJPY" "NZDUSD" "USDCAD" "USDCHF" "USDJPY"
Файлы:
 
Vladimir Karputov # :

Sana bir kod verdim ( iMACD Fark Tümünü Kapat : ) - neden kodumu geliyorsun? Neden koda tamamlar ve tamamlarsınız?

Bunu yapmalısın: Kodumu almalısın. Ve antrenmanlara - sonra nasıl yapılır (veya tamamlanır). Yani, şu şekilde mezun olduğunuzda: kodumu alıyorsunuz, bir soru soruyorsunuz - ve bir cevap bekliyorsunuz.

Неправильно ли добавлять код в робота? Нужно ли запускать коды, которые вы дали, в другом месте?

 
Kutluhan Yesilkaya #:

Неправильно ли добавлять код в робота? Нужно ли запускать коды, которые вы дали, в другом месте?

В метаэдиторе есть и текстовый файл, и файл mql5. Какую клавишу нужно нажать, чтобы увидеть результаты? Спасибо

 
Kutluhan Yesilkaya # :

Неправильно ли добавлять код в робота? Нужно ли запускать коды, которые вы дали, в другом месте?

Kutluhan Yesilkaya #:

В метаэдиторе есть и текстовый файл, и файл mql5. Какую клавишу нужно нажать, чтобы увидеть результаты? Спасибо

Самостоятельная работа - это всегда очень хорошо! Но: Я предлагаю вам лучший способ. Вам нужно взять мой код (это будет базой) и постепенно изменить его в соответствии с вашими требованиями.

 
Vladimir Karputov # :

Kendin yap işi her zaman çok iyidir! Ама: Sana daha iyi bir yol sunuyorum. Kodumu olacaktır (bu olacaktır) ve bundan sonra temel bir değer olarak değerlendirilmelidir.

Я добавил коды в своего робота. Это неправильно? Должен ли я запускать коды Imacd отдельно?

 
Kutluhan Yesilkaya # :

Я добавил коды в свой робот. Это неправильно? Должен ли я запускать коды Imacd отдельно?

Такой вариант тоже возможен. Но сравните мой и ваш код - у вас старая конструкция в OnInit. Повторяю в последний раз: Вы должны взять оригинальный код, а затем ГРАДУАЛЬНО, ШАГ ЗА ШАГОМ, вносить изменения. Так что я жду, когда вы сделаете первый шаг.

 
Vladimir Karputov #:

Такой вариант тоже возможен. Но сравните мой и ваш код - у вас старая конструкция в OnInit. Повторяю в последний раз: Вы должны взять оригинальный код, а затем ГРАДУАЛЬНО, ШАГ ЗА ШАГОМ, вносить изменения. Так что я жду, когда вы сделаете первый шаг.

Я сделал то, что вы сказали, дописал недостатки в OnInit. но ничего не изменилось.

 
Kutluhan Yesilkaya # :

Я сделал то, что вы сказали, завершил недостатки oninit. но ничего не изменилось.

Нет и еще раз нет - вы снова совершаете ту же ошибку. Запомните алгоритм:

  1. Вы должны (просто обязаны) взять ПОЛНЫЙ код закрытия MACD Difference All эксперта.
  2. На этом этапе вам ЗАПРЕЩЕНО вносить какие-либо изменения в код!!!
  3. Вы должны задать вопрос: "Что нужно изменить (или добавить) в коде, чтобы он работал в соответствии с вашим алгоритмом".
iMACD Difference Close All
iMACD Difference Close All
  • www.mql5.com
Советник-утилита: при граничной разнице между линиями индикатора iMACD (Moving Average Convergence/Divergence, MACD) советник закроет все позиции на текущем символе.
Причина обращения: