MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1551 1...154415451546154715481549155015511552155315541555155615571558...1953 새 코멘트 Vladislav Andruschenko 2021.07.30 12:21 #15501 natawik : 안녕하세요 여러분, 도와주세요! 이런 문제가 있습니다. 나는 mql5에서 vps를 구입했고 모든 것이 잘 작동하고 전문가를 직접 설치하고 8개의 차트를 설정하고 전문가를 설치했습니다. 그리고 모든 것이 VPS로 옮겨졌습니다. 그리고 내 것이 아니었기 때문에 컴퓨터에서 메타트레이더 프로그램을 제거해야 했습니다. 이제 컴퓨터에서 로그인할 때 모든 것이 작동합니다, 전문가. 작동하지만 설정을 조정할 수 없습니다. 내 컴퓨터에서 관리할 수 있도록 Expert Advisor와 차트를 다시 가져오려면 어떻게 해야 합니까? 고맙습니다! 이 경우 프로필을 저장해야 합니다. 나중에 VPS에서 다운로드하려면. законопослушный гражданин 2021.07.30 12:45 #15502 보고서의 모든 데이터를 왜곡 없이 Excel로 내보내는 방법을 누가 압니까? 복사만 하면 "이익" 열의 데이터 일부가 날짜로 내보내집니다(예: 1.94 대신 1월 94). 아무리 구하려고 해도 이 문제에서 벗어날 수 없습니다. Alexey Viktorov 2021.07.30 12:55 #15503 законопослушный гражданин : 보고서의 모든 데이터를 왜곡 없이 Excel로 내보내는 방법을 누가 압니까? 복사만 하면 "이익" 열의 데이터 일부가 날짜로 내보내집니다(예: 1.94 대신 1월 94). 아무리 구하려고 해도 이 문제에서 벗어날 수 없습니다. 업로드하기 전 또는 업로드된 파일을 열기 전에 Excel에서 소수점 구분 기호를 점으로 바꿉니다. Tretyakov Rostyslav 2021.07.30 12:57 #15504 законопослушный гражданин : 보고서의 모든 데이터를 왜곡 없이 Excel로 내보내는 방법을 누가 압니까? 복사만 하면 "이익" 열의 데이터 일부가 날짜로 내보내집니다(예: 1.94 대신 1월 94). 아무리 구하려고 해도 이 문제에서 벗어날 수 없습니다. 그래서 Alexey Viktorov 2021.07.30 13:04 #15505 SGarnov : 작업한 정류장 수를 고려해야 할 수도 있습니다. 예를 들어, 고문 은 기록에서 스톱을 찾을 것이고, 그 중 2개가 있는 경우 3개와 4개를 모두 추가해야 하며, 모두 외부 설정 "스톱 로스 수"에 따라 다릅니다. 귀하의 경우뿐만 아니라 대부분의 경우 마감된 주문을 열거하여 거래 내역에 액세스하는 대신 열린 주문의 티켓을 배열로 보관하는 것이 가장 좋습니다. 이 배열을 주기적으로 정렬하여 이 주문이 간단한 조건으로 마감되었는지 확인하십시오. if (OrderCloseTime() != 0 ) // значит ордер закрылся… 주문이 마감된 경우 티켓으로 선택하여 수익으로 마감되었는지 확인할 수 있습니다. 즉시 입구에서 정류장까지의 거리를 확인하고 엄마가 허락하는 한 이 거리를 더하십시오. 그리고 이러한 모든 조작 후에 배열 크기를 0으로 재설정하고 루프에서 배열 크기를 늘리고 현재 열려 있는 주문의 티켓으로 다시 채웁니다. Natalja Moisejonok 2021.07.30 13:45 #15506 Vladislav Andruschenko : 이 경우 프로필을 저장해야 합니다. 나중에 VPS에서 다운로드하려면. 그리고 내가 vps를 끄고 모든 것을 다시 설정하고 vps를 다시 켜고 모든 차트와 전문가를 귀하에게 전송하면 같은 장소에서 그 오래된 데이터는 당신에게 있지 않습니까? Mikhail Rudyk 2021.07.30 14:07 #15507 여보세요 코드 이해를 도와주세요 클래스가 있고 모든 것이 잘 작동하는 코드 조각을 첨부했습니다. 클래스의 일부 기능을 나만의 별도 기능으로 연결하고 오류를 작성하고 싶습니다. 예시 void OpenHandPosition( int tp) { string lot= 0.01 bool response = actionTrade.ManageOrderSend(tp, lt, 0 , 0 , 0 , 0 , 0 ); // } 그것이 작동 방식입니다 그리고 이것은 더 이상 void OpenHandPosition( int tp) { int stopLoss = GetStopLossPoints(size); int takeProfit = GetTakeProfitPoints(); bool response = actionTrade.ManageOrderSend(tp, lt , stopLoss, takeProfit, 0 , 0 , 0 ); } 모든 것이 이 기능에서 작동합니다. void StrategyTrader::DoEntryTrade(TradeDirection tradeDir) 하지만 이것은 그렇지 않다 OpenHandPosition( int tp) 돕다 파일: test.mq5 21 kb Tretyakov Rostyslav 2021.07.30 14:14 #15508 SGarnov : 구현하기 어렵다는 결론에 도달했습니다. 귀하의 코드는 훨씬 간단하고 명확하며 논리적이지만 ..... 웬일인지 추가되지 않습니다. 중요한 것은 포기하지 않는 것입니다. 모든 규칙이 보입니다. 물어보세요... //+------------------------------------------------------------------+ //| SGarnov.v2.1.mq4 | //| Copyright 2020, DrMak. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2020, DrMak." #property link " https://www.mql5.com " #property version "1.00" #property strict //--- input parameters input int T_Profit = 2 ; // Коэффициент Take Profit input int S_Loss = 200 ; // Уровень Stop Loss input double O_Lots = 0.01 ; // Лоты input int SL_Count = 2 ; // Количество убыточных ордеров input int Slippage = 30 ; // Проскальзывание input int N_Magic = 888 ; // Magic datetime T_Start; double sl_price,tp_price,t_profit,s_loss; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit () { //--- //--- return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit ( const int reason) { //--- Comment ( "" ); //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick () { //--- t_profit = S_Loss*T_Profit * Point (); tp_price = NormalizeDouble (t_profit+GetPointLoss(), Digits ); //--- s_loss = MathMax (S_Loss, MarketInfo( _Symbol , MODE_STOPLEVEL)) * Point (); sl_price = NormalizeDouble (s_loss, Digits ); //--- // Удаляем отложенный ордер после профита if (CountOrders(- 1 )== 1 ) DeletePending(); //--- // Проверяем серию убыточных ордеров if (CountOrders(- 1 )== 1 &&GetLossOrders()<SL_Count) { // Устанавливаем отложенный ордер SendPending(); } //--- // Проверяем наличие ордеров if (CountOrders(- 1 )> 0 ) { // Устанавливаем StopLoss/TakeProfit ModifyOrder(); } //--- int a=( int )TimeStart(); int b=GetLossOrders(); int c=( int )((GetPointLoss()+t_profit)/ Point ); Comment ( "Время начала цикли: " ,TimeToStr(a, TIME_SECONDS ), "\n" , "Серия StopLoss ордеров: " ,b, "\n" , "Размер TakeProfita: " ,c); } //+------------------------------------------------------------------+ //| Модификация ордера | //+------------------------------------------------------------------+ void ModifyOrder() { double op= 0 ; for ( int pos= OrdersTotal ()- 1 ;pos>= 0 ;pos--) { if ( OrderSelect (pos,SELECT_BY_POS)== true ) { if (OrderSymbol()== _Symbol ) { if (OrderStopLoss()== 0 ) { if (OrderType()==OP_BUY) {op=OrderOpenPrice(); if (OrderModify(OrderTicket(), OrderOpenPrice(), op-sl_price, op+tp_price, OrderExpiration())) { Print ( "Ордер модифицирован" );} else { Print ( "Ошибка модификации ордера:" , GetLastError ());} } if (OrderType()==OP_SELL) {op=OrderOpenPrice(); if (OrderModify(OrderTicket(), OrderOpenPrice(), op+sl_price, op-tp_price, OrderExpiration())) { Print ( "Ордер модифицирован" );} else { Print ( "Ошибка модификации ордера:" , GetLastError ());} } } } } } } //+------------------------------------------------------------------+ //| Подсчет ордеров по типу | //+------------------------------------------------------------------+ //| 0 - ордера типа BUY 1 - ордера типа SELL | //| 2 - ордера типа BUYLIMIT 3 - ордера типа SELLLIMIT | //| 4 - ордера типа BUYSTOP 5 - ордера типа SELLSTOP | //| 6 - ордера типа Balance -1 - Все типы ордеров | //+------------------------------------------------------------------+ int CountOrders( int or_ty=- 1 ) { int cnt= 0 ; for ( int pos= OrdersTotal ()- 1 ;pos>= 0 ;pos--) { if ( OrderSelect (pos,SELECT_BY_POS)== true ) { if (OrderSymbol()== _Symbol ) { if (or_ty< 0 || or_ty==OrderType()) cnt++; } } } return (cnt); } //+------------------------------------------------------------------+ //| Установка отложенного ордера | //+------------------------------------------------------------------+ void SendPending() { double op= 0 ; for ( int i = OrdersTotal () - 1 ; i >= 0 ; i--) { if ( OrderSelect (i, SELECT_BY_POS)== true ) { if (OrderSymbol()== _Symbol ) { if (OrderType()==OP_BUY) { if (OrderStopLoss() != 0 ) { op=OrderStopLoss(); if ( OrderSend ( _Symbol ,OP_SELLSTOP,O_Lots,op,Slippage, 0 , 0 , NULL ,N_Magic)) { Print ( "Отложенный ордер установлен" );} else { Print ( "Ошибка установки отложеного одера: " , GetLastError ());} } } if (OrderType()==OP_SELL) { if (OrderStopLoss() != 0 ) { op=OrderStopLoss(); if ( OrderSend ( _Symbol ,OP_BUYSTOP,O_Lots,op,Slippage, 0 , 0 , NULL ,N_Magic)) { Print ( "Отложенный ордер установлен" );} else { Print ( "Ошибка установки отложеного одера: " , GetLastError ());} } } } } } } //+------------------------------------------------------------------+ //| Возвращает пункты убытка закрытых ордеров с начала цикла | //+------------------------------------------------------------------+ double GetPointLoss() { double result= 0 ,b= 0 ,s= 0 ;; int i=OrdersHistoryTotal(); for ( int pos= 0 ; pos<i; pos++) { if ( OrderSelect (pos, SELECT_BY_POS, MODE_HISTORY)) { if (OrderSymbol()== _Symbol ) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (OrderProfit()< 0 ) { if (OrderCloseTime()>=TimeStart()) { if (OrderType()==OP_BUY) { b+=OrderOpenPrice()-OrderClosePrice(); } if (OrderType()==OP_SELL) { s+=OrderClosePrice()-OrderOpenPrice(); } } } } } } } return (b+s); } //+------------------------------------------------------------------+ //| Удаление отложенного ордера | //+------------------------------------------------------------------+ void DeletePending() { for ( int i = OrdersTotal () - 1 ; i >= 0 ; i--) { if ( OrderSelect (i, SELECT_BY_POS)== true ) { if (OrderSymbol()== _Symbol ) { if (OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP) { if (OrderMagicNumber() == N_Magic) { if (OrderDelete(OrderTicket())) { Print ( "Отложенный ордер удален" );} else { Print ( "Ошибка удаления отложеного одера: " , GetLastError ());} } } } } } } //+------------------------------------------------------------------+ //| Возвращает время начала цикла | //+------------------------------------------------------------------+ datetime TimeStart() { datetime ts1= 0 ,ts2= 0 ; if ( OrdersTotal ()!= 0 ) { for ( int i = OrdersTotal () - 1 ; i >= 0 ; i--) { if ( OrderSelect (i, SELECT_BY_POS)) { if (OrderMagicNumber()!=N_Magic) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (OrderSymbol()== _Symbol ) { if (ts1<OrderOpenTime()) { ts1=OrderOpenTime(); } } } } } } for ( int pos= 0 ; pos<OrdersHistoryTotal(); pos++) { if ( OrderSelect (pos, SELECT_BY_POS, MODE_HISTORY)) { if (OrderMagicNumber()!=N_Magic) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (OrderSymbol()== _Symbol ) { if (ts2<OrderOpenTime()) { ts2=OrderOpenTime(); } } } } } } } return ( MathMax (ts1,ts2)); } //+------------------------------------------------------------------+ //| Возвращает кол-во серии убыточных ордеров | //+------------------------------------------------------------------+ int GetLossOrders() { int cnt= 0 ; int i=OrdersHistoryTotal(); for ( int pos= 0 ; pos<i; pos++) { if ( OrderSelect (pos, SELECT_BY_POS, MODE_HISTORY)) { if ((OrderSymbol()== _Symbol )) { if (OrderCloseTime()>=TimeStart()) { if (OrderProfit()< 0 ) cnt++; } } } } return (cnt); } //+------------------------------------------------------------------+ SGarnov 2021.07.30 14:32 #15509 MakarFX : 모든 규칙이 보입니다. 물어보세요... 도움을 주셔서 감사합니다. 다음 주에만 고문의 올바른 작업을 작성할 수 있습니다. 오늘은 금요일이고 시장 진입 가격을 찾고 있지 않습니다. Vladislav Andruschenko 2021.07.30 14:38 #15510 natawik : 그리고 내가 vps를 끄고 모든 것을 다시 설정하고 vps를 다시 켜고 모든 차트와 전문가를 귀하에게 전송하면 같은 장소에서 그 오래된 데이터는 당신에게 있지 않습니까? 그런 문제가 자주 발생해서 컴퓨터, 터미널 설정하고 다 옮기고, 계속 옮기고, 그래픽 바꾸다 등등 하다가 헉, 뭔가 바꿔야 겠다.... 다 해봐야 겠습니다. 다시. 1...154415451546154715481549155015511552155315541555155615571558...1953 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
안녕하세요 여러분, 도와주세요!
이런 문제가 있습니다. 나는 mql5에서 vps를 구입했고 모든 것이 잘 작동하고 전문가를 직접 설치하고 8개의 차트를 설정하고 전문가를 설치했습니다. 그리고 모든 것이 VPS로 옮겨졌습니다.
그리고 내 것이 아니었기 때문에 컴퓨터에서 메타트레이더 프로그램을 제거해야 했습니다.
이제 컴퓨터에서 로그인할 때
모든 것이 작동합니다, 전문가. 작동하지만 설정을 조정할 수 없습니다. 내 컴퓨터에서 관리할 수 있도록 Expert Advisor와 차트를 다시 가져오려면 어떻게 해야 합니까?
고맙습니다!
이 경우 프로필을 저장해야 합니다. 나중에 VPS에서 다운로드하려면.
보고서의 모든 데이터를 왜곡 없이 Excel로 내보내는 방법을 누가 압니까?
복사만 하면 "이익" 열의 데이터 일부가 날짜로 내보내집니다(예: 1.94 대신 1월 94).
아무리 구하려고 해도 이 문제에서 벗어날 수 없습니다.
보고서의 모든 데이터를 왜곡 없이 Excel로 내보내는 방법을 누가 압니까?
복사만 하면 "이익" 열의 데이터 일부가 날짜로 내보내집니다(예: 1.94 대신 1월 94).
아무리 구하려고 해도 이 문제에서 벗어날 수 없습니다.
업로드하기 전 또는 업로드된 파일을 열기 전에 Excel에서 소수점 구분 기호를 점으로 바꿉니다.
보고서의 모든 데이터를 왜곡 없이 Excel로 내보내는 방법을 누가 압니까?
복사만 하면 "이익" 열의 데이터 일부가 날짜로 내보내집니다(예: 1.94 대신 1월 94).
아무리 구하려고 해도 이 문제에서 벗어날 수 없습니다.
그래서
작업한 정류장 수를 고려해야 할 수도 있습니다. 예를 들어, 고문 은 기록에서 스톱을 찾을 것이고, 그 중 2개가 있는 경우 3개와 4개를 모두 추가해야 하며, 모두 외부 설정 "스톱 로스 수"에 따라 다릅니다.
귀하의 경우뿐만 아니라 대부분의 경우 마감된 주문을 열거하여 거래 내역에 액세스하는 대신 열린 주문의 티켓을 배열로 보관하는 것이 가장 좋습니다. 이 배열을 주기적으로 정렬하여 이 주문이 간단한 조건으로 마감되었는지 확인하십시오.
주문이 마감된 경우 티켓으로 선택하여 수익으로 마감되었는지 확인할 수 있습니다. 즉시 입구에서 정류장까지의 거리를 확인하고 엄마가 허락하는 한 이 거리를 더하십시오.
그리고 이러한 모든 조작 후에 배열 크기를 0으로 재설정하고 루프에서 배열 크기를 늘리고 현재 열려 있는 주문의 티켓으로 다시 채웁니다.
이 경우 프로필을 저장해야 합니다. 나중에 VPS에서 다운로드하려면.
여보세요
코드 이해를 도와주세요
클래스가 있고 모든 것이 잘 작동하는 코드 조각을 첨부했습니다.
클래스의 일부 기능을 나만의 별도 기능으로 연결하고 오류를 작성하고 싶습니다.
예시
그것이 작동 방식입니다
그리고 이것은 더 이상
모든 것이 이 기능에서 작동합니다.
void StrategyTrader::DoEntryTrade(TradeDirection tradeDir)하지만 이것은 그렇지 않다
OpenHandPosition( int tp)돕다
구현하기 어렵다는 결론에 도달했습니다. 귀하의 코드는 훨씬 간단하고 명확하며 논리적이지만 ..... 웬일인지 추가되지 않습니다. 중요한 것은 포기하지 않는 것입니다.
모든 규칙이 보입니다. 물어보세요...
모든 규칙이 보입니다. 물어보세요...
도움을 주셔서 감사합니다. 다음 주에만 고문의 올바른 작업을 작성할 수 있습니다. 오늘은 금요일이고 시장 진입 가격을 찾고 있지 않습니다.
그리고 내가 vps를 끄고 모든 것을 다시 설정하고 vps를 다시 켜고 모든 차트와 전문가를 귀하에게 전송하면