그리고 더 구체적인 것은 무엇입니까? 구현에 대한 반례를 생각할 수 있습니까? 배열과 구조가 무엇인지 설명하십시오.
예를 들어 주문 번호로 매직 넘버뿐만 아니라 가격도 얻어야 한다면 어떤 일이 벌어질지 짐작조차 하기가 두렵습니다.
일반적으로 일종의 무지입니다. 그리고 그것은 초보자를 위한 것이 아니므로 용서할 수 없습니다. 외부의 누군가가 "MQL 프로그래머의 수준을 보세요!"라는 예로 이 스레드를 이끌면 리소스가 부끄럽습니다.
수준을 어떻게 결정합니까? 나도 모르는 것이 많지만 피터는 호전적인 무지한 것 같다. 테스터나 OOP 뿐만이 아닙니다. MetaEditor에는 문제가 없습니다. 아마도 그는 그것을 거의 사용하지 않습니까? 그리고 라이브러리에서 적어도 하나의 코드는 어디에 있습니까? 아니면 제품의 제품? (
/+------------------------------------------------------------------+
//| Magic.mq5 |//| Peter Konow |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Peter Konow"#property link"https://www.mql5.com"#property version"1.00"#property strict//+------------------------------------------------------------------+string All_magics;
int order_number;
int Random_orders_of_strategy;
//+------------------------------------------------------------------+void Save_magic(int magic)
{
order_number++;
//---------------------------------//Записываем каждый магик вместе с порядковым номером ордера.//---------------------------------
All_magics += "_" + (string)order_number + "_" + (string)magic; // Тут как бы не рационально особенно для скорости - в данном случае будет происходить поочередное сложение т.е. сперва стрин увеличиться на один знак и ему выделеиться дополнительно 1 чарт, потом увоичиться на количество символов в (string)order_number.... и каждый раз будет происходить выделение памяти... //---------------------------------
}
//+------------------------------------------------------------------+void Trading()
{
Random_orders_of_strategy = MathRand(); ///Всеже проще рандом не вызывать при тестах на скорость - т.к. хз сколь уйдет времени на эту функцию//----------------------------------------//Имитируем открытие неопределенного количества ордеров стратегии.//----------------------------------------for(int a1 = 0; a1 < Random_orders_of_strategy; a1++)
{
int this_magic = MathRand();
//----------------------------
Save_magic(this_magic);
//----------------------------
}
//----------------------------------------
}
//+------------------------------------------------------------------+int Get_magic(int deal_number)
{
//--------------------------------------------//Получаем начало строки магика.//--------------------------------------------int Magic_position_start = StringFind(All_magics,"_" + (string)deal_number + "_",0) + 3; // поиск происходит слушающим образом... наш string разбирается на масив чартов и мы начинаем искать среди них номер чарта равный номеру символа "_" путем перебора, если произошло совпадение то будем сравнивать второй символ... даже банально исключив последний + "_" скорость возрастет//--------------------------------------------//Получаем конец строки магика.//--------------------------------------------int Magic_position_end = StringFind(All_magics,"_" + (string)(deal_number + 1) + "_",0); //тут по идее снова начинается поиск и он уже идет с самого начала снова не знаю зачем искать еще раз, надо хотябы поиск начинать с тагоже места где нашли начало маджика чтоли... и искать просто подчеркивание... //--------------------------------------------//Получаем количество цифр из которых состоит магик.//--------------------------------------------int Magic_lenght = Magic_position_end - Magic_position_start;
//--------------------------------------------//Извлекаем магик из общей строки.//--------------------------------------------string Magic = StringSubstr(All_magics,Magic_position_start,Magic_lenght);
//--------------------------------------------//Возвращаем цифровое значение магика.//--------------------------------------------return((int)Magic);
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
Trading();
//--------------------------ulong t1 = GetMicrosecondCount();
Get_magic(1); // Мы же на скорость проверяем так что давайте исполняемые функции брать в цикл с повтором в 10 000 раз... хотябы лучше с изменяющими входными параметрамиulong t2 = GetMicrosecondCount();
//--------------------------Print("Время исполнения функции Get_magic() при количестве ордеров ",Random_orders_of_strategy," равно ",t2 - t1);
//--------------------------Print("Random_orders_of_strategy ",Random_orders_of_strategy);
Print("magic 1: ",Get_magic(1)," magic 2: ",Get_magic(2)," magic 3: ",Get_magic(3));
}
//+------------------------------------------------------------------+
그리고 더 구체적인 것은 무엇입니까? 구현에 대한 반례를 생각할 수 있습니까? 배열과 구조가 무엇인지 설명하십시오.
예를 들어 주문 번호로 매직 넘버뿐만 아니라 가격도 얻어야 한다면 어떤 일이 벌어질지 짐작조차 하기가 두렵습니다.
일반적으로 일종의 무지입니다. 그리고 그것은 초보자를 위한 것이 아니므로 용서할 수 없습니다. 외부의 누군가가 "MQL 프로그래머의 수준을 보세요!"라는 예로 이 스레드를 이끌면 리소스가 부끄럽습니다.
수준을 어떻게 결정합니까?
나도 모르는 것이 많지만 피터는 호전적인 무지한 것 같다.
테스터나 OOP 뿐만이 아닙니다.
MetaEditor에는 문제가 없습니다.
아마도 그는 그것을 거의 사용하지 않습니까?
그리고 라이브러리에서 적어도 하나의 코드는 어디에 있습니까? 아니면 제품의 제품?
(
솔루션을 제공합니다. 그렇지 않으면 그냥 빈 단어입니다. 이전과.
준비됐어?
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
알고리즘, 결정 방법, 성능 비교
fxsaber , 2017.12.10 16:12
여기에서 거의 모든 사람들이 한 달 동안 읽기 전용 모드로 들어가면 할 준비가 되어 있습니다.
준비됐어?
다음은 실용적인 증거입니다.
나는 "초보자 질문" 스레드에서도 그런 어둠을 본 적이 없습니다. 여러분, 이것은 일종의 주석입니다! 코멘트할게 뭐가있나요?
추신 아니, 왜 Get_magic(1)을 작성하고 Get_magic(23999)을 작성합니까?
수준을 어떻게 결정합니까?
나도 모르는 것이 많지만 피터는 호전적인 무지한 것 같다.
그리고 저는 많은 것을 처음 접했습니다. 그리고 나의 호전적인 무지가 똥통에 빠졌을 때, 나는 아무 일도 없었던 척하지 않습니다. 진지한 강의 감사합니다.
초보자이거나 아무것도 모르는 것은 결코 부끄러운 일이 아닙니다. 이 경우 자부심은 무지와 함께 존재하지만 규모도 벗어납니다.
유일한 이점은 블랙리스트 리소스에서 동일한 창작물을 만드는 데 가장 좋은 동기 중 하나가 된다는 것입니다.
나는 "초보자 질문" 스레드에서도 그런 어둠을 본 적이 없습니다. 여러분, 이것은 일종의 주석입니다! 코멘트할게 뭐가있나요?
추신 아니, 왜 Get_magic(1)을 작성하고 Get_magic(23999)을 작성합니까?
솔루션이 작동합니까?
솔루션이 작동합니까?
아니요, StringFind 가 거래 번호 대신 매직 번호를 찾을 수 있기 때문에 작동하지 않습니다.
아니요, StringFind가 거래 번호 대신 매직 번호를 찾을 수 있기 때문에 작동하지 않습니다.
StringFind는 먼저 거래 번호("_" + 거래 번호 + "_")를 찾습니다.
그런 다음 3을 추가하고 메가의 시작을 얻습니다.
그런 다음 StringFind는 다음 거래의 시작을 찾습니다.
그런 다음 다음 거래의 시작 부분에서 메가의 시작 부분을 뺍니다.
그런 다음 StringSubstr 은 메가 문자열을 가져옵니다.
다음으로 int로 변환하여 반환합니다.
여기에서 작동하지 않는 것은 무엇입니까?
여기에서 작동하지 않는 것은 무엇입니까?
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
알고리즘, 결정 방법, 성능 비교
Sergey Dzyublik , 2017.12.10 16:10
Peter Konow, "데이터 구조"에 대한 지식 수준은 0입니다.
1. 코드가 작동하지 않습니다.
잘못된 패턴 "_index_magic". 가능한 솔루션 "|index_magic"
2. 알고리즘의 속도는 문자열을 통해 All_magics 의 값으로 세 번 전달하는 동안 O(n)입니다.
3. 귀하의 성과 측정이 절대적으로 정확하지 않습니다.
- 시리즈 평균 없음
- 최신 인덱스 값을 검색하는 시리즈 없음
넌센스를 쓰는 대신 - https://habrahabr.ru/post/310794/ 와 같이 주제에 대해 최소한 무언가를 공부하십시오.
그런 다음 <Generic\ArrayList.mqh>에서 CArrayList를 사용하는 방법을 배웁니다.
행운을 빕니다.