초보자의 질문 MQL4 MT4 MetaTrader 4 - 페이지 90 1...838485868788899091929394959697...260 새 코멘트 Konstantin Erin 2017.06.12 19:39 #891 toni_stark : EA가 1.5년 전에 작동했는데 이제 차트에 설치되지 않습니다. 명제의 확인: 움직임 = 삶, 휴식 = 죽음. 그는 잡지에 무엇을 썼습니까? 이것은 오른쪽 하단에 있는 두 개의 탭입니다. 저라면 확인해보고 고쳤을텐데... fxsaber 2017.06.12 20:40 #892 거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼 초보자의 질문 MQL4 MT4 MetaTrader 4 일리야 프로 주멘토프 , 2017.06.11 13:53 배열 작업을 위한 클래스 템플릿이 있습니다. #property strict #include <ObjectVariables.mqh> #include <Arrays\varQSort.mqh> #include <Arrays\objQSort.mqh> template < typename T1> class ArrayList { private : T1 array[]; QuickSorts<T1> *qs; int size; int index; public : //прочие функции void QuickSort(); //отсортировать массив //прочие функции }; //+------------------------------------------------------------------+ //| Сортировка массива template < typename T1> void ArrayList::QuickSort() { int idx = index; //сохранение положения индекса if (IsPointer(array[ 0 ])) // true - массив содержит указатели класса qs /*ошибка 2*/ = new ObjQSort<T1>(); else qs /*ошибка 2*/ = new VarQSort<T1>(); qs.Sort(array, 0 , index); index = idx; } 이 클래스 템플릿은 배열이 복잡한 데이터 유형 을 저장할 수 있다는 사실을 감안할 때 정렬을 구현해야 합니다. 예를 들어: ArrayList<PP*> *dde; // PP - класс 간단한 유형과 복잡한 유형에 대해 다른 함수를 작성할 수 있지만 컴파일러는 함수가 데이터 유형으로 엄격하게 구분된다는 것을 이해하지 못하고 계속 맹세합니다. '<' - ArrayList.mqh를 사용하는 잘못된 작업 그런 다음 인터페이스를 포함하기로 결정했습니다. #property strict template < typename T1> interface QuickSorts { void Sort(T1 &array[], int beg, int end); }; #property strict #include <Arrays\QuickSorts.mqh> //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ template < typename T1> class VarQSort : public /*ошибка 1*/ QuickSorts { private : public : void Sort(T1 &array[], int beg, int end); VarQSort(){} ~VarQSort(){} }; template < typename T1> void VarQSort::Sort(T1 &array[], int beg, int end) { //алгоритм функции } #property strict #include <Arrays\QuickSorts.mqh> //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ template < typename T1> class ObjQSort : public /*ошибка 1*/ QuickSorts { private : public : void Sort(T1 &array[], int beg, int end){} ObjQSort(){} ~ObjQSort(){} }; 디자인의 모든 부분이 컴파일됩니다. 그러나 선언하려고 하면: ArrayList<PP*> *dde; // PP - класс 그런 다음 파일을 컴파일할 때 다음과 같은 오류가 발생합니다. 'QuickSorts' - 템플릿 불일치 varQSort.mqh /*오류 1*/ '=' - 유형 불일치 ArrayList.mqh /*오류 2*/ 이 유형 불일치를 제거하기 위해 코드에서 수정해야 하는 것은 무엇입니까? 왜 그런 일이 일어났는지 전혀 이해가 되지 않습니다. 추신 '<' - varQSort.mqh를 사용하는 잘못된 작업 이 디자인에서 나를 괴롭힌다. 그리고 그것이 바로 내가 없애고 싶었던 것입니다. 그러나 이 오류는 나에게 분명하지만 그 두 가지는 그렇지 않습니다. template < typename T1> class VarQSort : public QuickSorts <T1> //.... template < typename T1> class ObjQSort : public QuickSorts <T1> //.... Ilya Prozumentov 2017.06.12 21:42 #893 fxsaber : 실제로) 불일치 오류가 사라지고 두 번째 오류가 함께 발생했습니다. 고맙습니다. Arseniy Barudkin 2017.06.13 09:22 #894 포럼 사용자 여러분 안녕하세요! 기능에 몇 가지 변경 사항을 추가하는 데 도움이 필요합니다. enum _EventYesNo{ YES = 1 , //ДА NO = 2 //НЕТ }; enum howmuch {one = 1 , //Одна two = 2 , //Две three = 3 //Три }; input _EventYesNo monday = 2 ; //торгуем в ПОНЕДЕЛЬНИК? input howmuch mondayHM = 1 ; //Сколько сделок? input string monday_open1 = "00:00" ; // input string monday_open2 = "00:00" ; // input string monday_open3 = "00:00" ; // input _EventYesNo tuesday = 2 ; //торгуем во ВТОРНИК? input howmuch tuesdayHM = 1 ; //Сколько сделок? input string tuesday_open1 = "00:00" ; // input string tuesday_open2 = "00:00" ; // input string tuesday_open3 = "00:00" ; // input _EventYesNo wednesday = 2 ; //торгуем в СРЕДУ? input howmuch wednesdayHM = 1 ; //Сколько сделок? input string wednesday_open1 = "00:00" ; // input string wednesday_open2 = "00:00" ; // input string wednesday_open3 = "00:00" ; // input _EventYesNo thursday = 2 ; //торгуем в ЧЕТВЕРГ? input howmuch thursdayHM = 1 ; //Сколько сделок? input string thursday_open1 = "00:00" ; // input string thursday_open2 = "00:00" ; // input string thursday_open3 = "00:00" ; // input _EventYesNo friday = 2 ; //торгуем в ПЯТНИЦУ? input howmuch fridayHM = 1 ; //Сколько сделок? input string friday_open1 = "00:00" ; // input string friday_open2 = "00:00" ; // input string friday_open3 = "00:00" ; // extern int minutes = 5; // Время торговли(минут) bool HOUR = true; // Часы Вкл (true) / Выкл (folse) //Отправляет true если по времени разрешено торговать bool isTradeTimeString() { datetime servertime = TimeCurrent (); datetime localtime = TimeLocal (); datetime time = 0 ; datetime hbegin = 0 ; datetime hend = 0 ; string TimeBegin = "00:00" ; if ( DayOfWeek () == 1 ){ if (monday == 1 ){TimeBegin = monday_open1;} else { return ( false );}} if ( DayOfWeek () == 2 ){ if (tuesday == 1 ){TimeBegin = tuesday_open1;} else { return ( false );}} if ( DayOfWeek () == 3 ){ if (wednesday == 1 ){TimeBegin = wednesday_open1;} else { return ( false );}} if ( DayOfWeek () == 4 ){ if (thursday == 1 ){TimeBegin = thursday_open1;} else { return ( false );}} if ( DayOfWeek () == 5 ){ if (friday == 1 ){TimeBegin = friday_open1;} else { return ( false );}} string TimeEnd = TimeToString ( StrToTime (TimeBegin)+( 60 *minutes), TIME_MINUTES ); if (servertime > localtime) { time = servertime - localtime; hbegin = StrToTime (TimeBegin) + time; hend = StrToTime (TimeEnd) + time; } if (servertime < localtime) { time = localtime - servertime; hbegin = StrToTime (TimeBegin) - time; hend = StrToTime (TimeEnd) - time; } if (localtime == servertime) { hbegin = StrToTime (TimeBegin); hend = StrToTime (TimeEnd); } datetime dtBegin, dtEnd; // Время начала и окончания работы int hc, he; // Часы текущего времени и окончания работы dtBegin= StrToTime ( TimeToStr ( TimeCurrent (), TIME_DATE )+ " " + TimeToStr (hbegin, TIME_MINUTES )); dtEnd= StrToTime ( TimeToStr ( TimeCurrent (), TIME_DATE )+ " " + TimeToStr (hend, TIME_MINUTES )); hc = TimeHour ( TimeCurrent ()); he = TimeHour (dtEnd); if (dtBegin>=dtEnd) { if (hc>=he) dtEnd+= 24 * 60 * 60 ; else dtBegin-= 24 * 60 * 60 ; } if (HOUR== true ) { if ( TimeCurrent ()>=dtBegin && TimeCurrent ()<=dtEnd) return ( true ); else { if (CountTrades()== 0 ) return ( false ); } } return ( true ); } 예를 들어 월요일에 2개 또는 3개의 거래를 열어야 하는 경우 함수가 시간을 비교하고 노동력을 보내지만 지금은 한 번만 비교하는 것이 필요합니다. Даниил Минин 2017.06.13 20:07 #895 견적 내보내기에서 업로드할 날짜와 날짜를 선택할 수 있습니다. 그렇지 않으면 "다운로드" 버튼을 클릭하면 6,000,000개의 견적이 다운로드됩니다. 모든 사람이 하드 디스크를 따옴표 데이터로 채우고 다운로드될 때까지 오랜 시간 기다린 다음 따옴표 테이블에서 불필요한 데이터를 제거하는 것을 원하지는 않습니다. Yaroslav Nykula 2017.06.17 16:01 #896 안녕 친애하는 ... BUY 주문에 대해 지정된 TrailingStop 코드가 올바르게 작동하는 이유를 알려주실 수 있습니까? if ( OrderType ()== OP_BUY && ( Bid - 8 *D* Point )> OrderStopLoss ()&&( Bid - 8 *D* Point )> OrderOpenPrice ()) {chk= OrderModify ( OrderTicket (), 0 , NormalizeDouble ( Bid - 7 * Point , Digits ), NormalizeDouble ( OrderOpenPrice ()+ 25 *D* Point , Digits ), 0 , 0 );} ... 그리고 SELL 주문에 대해 유사하게 SL 을 설정하지 않습니다 ... if ( OrderType ()== OP_SELL &&( Ask + 8 *D* Point )< OrderStopLoss ()&&( Ask + 8 *D* Point )< OrderOpenPrice ()) {chk= OrderModify ( OrderTicket (), 0 , NormalizeDouble ( Ask + 7 * Point , Digits ), NormalizeDouble ( OrderOpenPrice ()- 25 *D* Point , Digits ), 0 , 0 );} ... 그리고 그 이유는 조건 ( Ask + 8 *D* Point )< OrderStopLoss () 에 있을 가능성이 가장 높으며, 제거하면 SL 이 설정되지만 지정된 조건이 없는 TrailingStop 은 제대로 작동하지 않습니다... BUY 주문의 경우 조건 ( Bid - 8 *D* Point ) > OrderStopLoss (), OrderStopLoss ()==0 허용 정확합니다(즉, 일부 값 > 0 ) ... ... 그러나 SELL 주문 의 경우 조건 ( Ask + 8 *D* Point )< OrderStopLoss (), 때 OrderStopLoss ()==0 허용 아니다 정확함(즉, 일부 값 < 0 이 얻어짐) ... 누군가 SELL 주문 과 함께 TrailingStop 의 올바른 작동을 위해 코드 ( Ask + 8 *D* Point )< OrderStopLoss () 에서 필요한 조건을 올바르게 공식화하는 방법을 알려줄 수 있습니까 ? 답변해 주시는 모든 분들께 미리 감사드립니다. 전문가 고문 빌더 Trailingstop EA가 작동하지 않습니다 코딩하는 방법? freeze77 2017.06.17 18:00 #897 안녕하세요! 인디케이터가 틱 히스토리 파일을 읽어주는 기능이 있습니다. 그러나 읽기는 표시기를 로드하거나 업데이트할 때 한 번만 발생합니다. 0 막대의 첫 번째 눈금이 나타날 때마다 판독값이 발생하도록 하는 방법은 무엇입니까? void ProcessOldCandles(int limit, TickStruct &lastTick){ int hTicksFile = FileOpen(Symbol() + ".tks", FILE_BIN | FILE_READ | FILE_SHARE_READ | FILE_SHARE_WRITE); if (hTicksFile < 1) return; TickStruct tick; while (!IsStopped()) { if (!IsReadTimeAndBidAskOfTick(hTicksFile, tick)) return; if (tick.time >= Time[limit]) break; } lastTick = tick; int barIndex = iBarShift(NULL, 0, tick.time); while (barIndex >= 0) { if (!IsReadTimeAndBidAskOfTick(hTicksFile, tick)) return; if (!IsTickBelongToBar(tick, barIndex)) barIndex = iBarShift(NULL, 0, tick.time); ProcessOneTick(barIndex, tick, lastTick); } FileClose(hTicksFile); Any rookie question, so Questions from Beginners MQL4 포럼을 어지럽히 지 않도록 Yaroslav Nykula 2017.06.22 09:46 #898 Yaroslav Nykula : 안녕 친애하는 ... BUY 주문에 대해 지정된 TrailingStop 코드가 올바르게 작동하는 이유를 알려주실 수 있습니까? ... 그리고 SELL 주문과 동일하게 SL 을 설정하지 않습니다 ... ... 그리고 그 이유는 조건 ( Ask + 8 *D* Point )< OrderStopLoss () 에 있을 가능성이 가장 높으며, 제거되면 SL 이 설정되지만 지정된 조건이 없는 TrailingStop 은 제대로 작동하지 않습니다... BUY 주문의 경우 조건 ( Bid - 8 *D* Point ) > OrderStopLoss (), OrderStopLoss ()==0 허용 정확합니다(즉, 일부 값 > 0 ) ... ... 그러나 SELL 주문 의 경우 조건 ( Ask + 8 *D* Point )< OrderStopLoss (), 때 OrderStopLoss ()==0 허용 아니다 정확함(즉, 일부 값 < 0 이 얻어짐) ... 누군가 SELL 주문 과 함께 TrailingStop 의 올바른 작동을 위해 코드 ( Ask + 8 *D* Point )< OrderStopLoss () 에서 필요한 조건을 올바르게 공식화하는 방법을 알려줄 수 있습니까 ? 답변해 주시는 모든 분들께 미리 감사드립니다. 안녕하세요 여러분 ... 포럼의 이 스레드에서 뭔가 고통스럽게 낮은 활동입니다 ... 이 문제는 다음과 같이 해결됩니다 ... if ( OrderSymbol ()== Symbol ()&& OrderType ()== OP_SELL && OrderLots ()<=Lot* 3 &&( Ask +(Tral+TP)*D* Point )< OrderOpenPrice ()&&(( OrderStopLoss ()!= 0 &&( Ask +Tral*D* Point )< OrderStopLoss ())|| OrderStopLoss ()== 0 )) {chk= OrderModify ( OrderTicket (), 0 , NormalizeDouble ( Ask +Tral*D* Point , Digits ), NormalizeDouble ( OrderOpenPrice ()-Stepp*D* Point , Digits ), 0 , 0 );}} ... 조건이 좀 길지만 작업중... 더 짧게 쓰는법 아시는분, 줄여주시면 감사하겠습니다 ... 나머지는 그대로 사용하시면 됩니다. Даниил Минин 2017.06.29 08:45 #899 기능을 입력 OrderCloseByTicket(542534564) 전체 로트 크기의 티켓에 대한 주문 마감. 따라서 로트, 가격, 미끄러짐을 지정할 필요가 없습니다. 터미널에서 주문에 십자가를 클릭하는 것과 유사합니다. 기능을 입력 OrderCloseByPos(0) 포지션별 주문 마감. 그러면 이러한 성가신 구성을 처방할 필요가 없을 것입니다. for ( int i = 1 ; i <= OrdersTotal () ; i ++ ) //Цикл по всем ордерам,.. { //отражённым в терминале if ( OrderSelect ( i - 1 , SELECT_BY_POS ) == true ) //Если есть следующий { // Здесь должен выполняться .. // ..анализ характеристик ордеров } } //Конец тела цикла Jenya77769 2017.06.30 07:46 #900 안녕하세요! 두 개의 빼기 s x 숫자 q와 w 를 잘못 비교하여 같을 때 if 연산자는 하나가 다른 것보다 더 큰 것으로 간주합니다. 오류가 무엇입니까? q = -0.0002이고 w도 -0.0002인 경우 res12=false인 경우 이유는 무엇입니까? double SPREAD= MarketInfo (Symb, MODE_SPREAD ); // Спред static bool res12= true ; start() { double q= High [ 0 ]- 3.0 * Point - High [ 1 ]; double w=-SPREAD* Point ; if (New_Bar== true &&ticket1<= 0 ) { if (q>w) { res12= false ; Alert ("res12= false "); Alert (q); Alert (w); } } if (New_Bar== true &&ticket1<= 0 ) { if (q<=w) { res12= true ; Alert ("res12= true "); Alert (q); Alert (w); } } } 1...838485868788899091929394959697...260 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
명제의 확인: 움직임 = 삶, 휴식 = 죽음. 그는 잡지에 무엇을 썼습니까? 이것은 오른쪽 하단에 있는 두 개의 탭입니다.
저라면 확인해보고 고쳤을텐데...
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
초보자의 질문 MQL4 MT4 MetaTrader 4
일리야 프로 주멘토프 , 2017.06.11 13:53
배열 작업을 위한 클래스 템플릿이 있습니다.이 클래스 템플릿은 배열이 복잡한 데이터 유형 을 저장할 수 있다는 사실을 감안할 때 정렬을 구현해야 합니다. 예를 들어:
ArrayList<PP*> *dde; // PP - класс
간단한 유형과 복잡한 유형에 대해 다른 함수를 작성할 수 있지만 컴파일러는 함수가 데이터 유형으로 엄격하게 구분된다는 것을 이해하지 못하고 계속 맹세합니다.
'<' - ArrayList.mqh를 사용하는 잘못된 작업
그런 다음 인터페이스를 포함하기로 결정했습니다.
디자인의 모든 부분이 컴파일됩니다. 그러나 선언하려고 하면:
ArrayList<PP*> *dde; // PP - класс
그런 다음 파일을 컴파일할 때 다음과 같은 오류가 발생합니다.'QuickSorts' - 템플릿 불일치 varQSort.mqh /*오류 1*/
'=' - 유형 불일치 ArrayList.mqh /*오류 2*/
추신이 유형 불일치를 제거하기 위해 코드에서 수정해야 하는 것은 무엇입니까? 왜 그런 일이 일어났는지 전혀 이해가 되지 않습니다.
'<' - varQSort.mqh를 사용하는 잘못된 작업
이 디자인에서 나를 괴롭힌다. 그리고 그것이 바로 내가 없애고 싶었던 것입니다. 그러나 이 오류는 나에게 분명하지만 그 두 가지는 그렇지 않습니다.
예를 들어 월요일에 2개 또는 3개의 거래를 열어야 하는 경우 함수가 시간을 비교하고 노동력을 보내지만 지금은 한 번만 비교하는 것이 필요합니다.
그렇지 않으면 "다운로드" 버튼을 클릭하면 6,000,000개의 견적이 다운로드됩니다. 모든 사람이 하드 디스크를 따옴표 데이터로 채우고 다운로드될 때까지 오랜 시간 기다린 다음 따옴표 테이블에서 불필요한 데이터를 제거하는 것을 원하지는 않습니다.
안녕 친애하는 ... BUY 주문에 대해 지정된 TrailingStop 코드가 올바르게 작동하는 이유를 알려주실 수 있습니까?
... 그리고 SELL 주문에 대해 유사하게 SL 을 설정하지 않습니다 ...
... 그리고 그 이유는 조건 ( Ask + 8 *D* Point )< OrderStopLoss () 에 있을 가능성이 가장 높으며, 제거하면 SL 이 설정되지만 지정된 조건이 없는 TrailingStop 은 제대로 작동하지 않습니다...
BUY 주문의 경우 조건 ( Bid - 8 *D* Point ) > OrderStopLoss (), OrderStopLoss ()==0 허용 정확합니다(즉, 일부 값 > 0 ) ...
... 그러나 SELL 주문 의 경우 조건 ( Ask + 8 *D* Point )< OrderStopLoss (), 때 OrderStopLoss ()==0 허용 아니다 정확함(즉, 일부 값 < 0 이 얻어짐) ...
누군가 SELL 주문 과 함께 TrailingStop 의 올바른 작동을 위해 코드 ( Ask + 8 *D* Point )< OrderStopLoss () 에서 필요한 조건을 올바르게 공식화하는 방법을 알려줄 수 있습니까 ?
답변해 주시는 모든 분들께 미리 감사드립니다.
안녕하세요! 인디케이터가 틱 히스토리 파일을 읽어주는 기능이 있습니다. 그러나 읽기는 표시기를 로드하거나 업데이트할 때 한 번만 발생합니다. 0 막대의 첫 번째 눈금이 나타날 때마다 판독값이 발생하도록 하는 방법은 무엇입니까?
void ProcessOldCandles(int limit, TickStruct &lastTick)
{
int hTicksFile = FileOpen(Symbol() + ".tks", FILE_BIN | FILE_READ | FILE_SHARE_READ | FILE_SHARE_WRITE);
if (hTicksFile < 1)
return;
TickStruct tick;
while (!IsStopped())
{
if (!IsReadTimeAndBidAskOfTick(hTicksFile, tick))
return;
if (tick.time >= Time[limit])
break;
}
lastTick = tick;
int barIndex = iBarShift(NULL, 0, tick.time);
while (barIndex >= 0)
{
if (!IsReadTimeAndBidAskOfTick(hTicksFile, tick))
return;
if (!IsTickBelongToBar(tick, barIndex))
barIndex = iBarShift(NULL, 0, tick.time);
ProcessOneTick(barIndex, tick, lastTick);
}
FileClose(hTicksFile);
안녕 친애하는 ... BUY 주문에 대해 지정된 TrailingStop 코드가 올바르게 작동하는 이유를 알려주실 수 있습니까?
... 그리고 SELL 주문과 동일하게 SL 을 설정하지 않습니다 ...
... 그리고 그 이유는 조건 ( Ask + 8 *D* Point )< OrderStopLoss () 에 있을 가능성이 가장 높으며, 제거되면 SL 이 설정되지만 지정된 조건이 없는 TrailingStop 은 제대로 작동하지 않습니다...
BUY 주문의 경우 조건 ( Bid - 8 *D* Point ) > OrderStopLoss (), OrderStopLoss ()==0 허용 정확합니다(즉, 일부 값 > 0 ) ...
... 그러나 SELL 주문 의 경우 조건 ( Ask + 8 *D* Point )< OrderStopLoss (), 때 OrderStopLoss ()==0 허용 아니다 정확함(즉, 일부 값 < 0 이 얻어짐) ...
누군가 SELL 주문 과 함께 TrailingStop 의 올바른 작동을 위해 코드 ( Ask + 8 *D* Point )< OrderStopLoss () 에서 필요한 조건을 올바르게 공식화하는 방법을 알려줄 수 있습니까 ?
답변해 주시는 모든 분들께 미리 감사드립니다.
안녕하세요 여러분 ... 포럼의 이 스레드에서 뭔가 고통스럽게 낮은 활동입니다 ... 이 문제는 다음과 같이 해결됩니다 ...
... 조건이 좀 길지만 작업중... 더 짧게 쓰는법 아시는분, 줄여주시면 감사하겠습니다 ... 나머지는 그대로 사용하시면 됩니다.
기능을 입력
OrderCloseByTicket(542534564)
전체 로트 크기의 티켓에 대한 주문 마감.
따라서 로트, 가격, 미끄러짐을 지정할 필요가 없습니다.
터미널에서 주문에 십자가를 클릭하는 것과 유사합니다.
기능을 입력
OrderCloseByPos(0)
포지션별 주문 마감.
그러면 이러한 성가신 구성을 처방할 필요가 없을 것입니다.
안녕하세요! 두 개의 빼기 s x 숫자 q와 w 를 잘못 비교하여 같을 때 if 연산자는 하나가 다른 것보다 더 큰 것으로 간주합니다. 오류가 무엇입니까? q = -0.0002이고 w도 -0.0002인 경우 res12=false인 경우 이유는 무엇입니까?