MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1816 1...180918101811181218131814181518161817181818191820182118221823...1953 새 코멘트 Tretyakov Rostyslav 2021.12.15 10:34 #18151 Alexander Avksentyev # : 방해해서 죄송합니다. 이것은 중요하지 않습니다. 모른다고 말하는 것을 두려워하지 마십시오. 항상 물어보십시오. 지금 예시를 올리고 있습니다. Tretyakov Rostyslav 2021.12.15 10:42 #18152 Alexander Avksentyev # : "iTrailStart" 및 "iTrailDist"가 무엇입니까? Alexander Avksentyev 2021.12.15 10:44 #18153 Tretyakov Rostyslav # : "iTrailStart" 및 "iTrailDist"가 무엇입니까? 포함할 포인트 수 및 시장에서 tsl까지의 거리 iTrailStart = 10; //후행을 활성화할 포인트 수; iTrailDist = 10; //정류장에서 시장까지의 거리; 주문이 11p까지라면 손실 없이 11-10=1p입니다. Tretyakov Rostyslav 2021.12.15 11:02 #18154 Alexander Avksentyev # : 포함할 포인트 수 및 시장에서 tsl까지의 거리 이 같은 //--- input parameters int iTrailStart = 10 ; //Кол-во пунктов для включения тралa int iTrailDist = 10 ; //Расстояние от стопа до рынка //--- global parameters int iDistTrail = iTrailDist; //+------------------------------------------------------------------+ void OnTick () { //--- if (iDistTrail<MarketInfo( Symbol (),MODE_STOPLEVEL)) iDistTrail = MarketInfo( Symbol (),MODE_STOPLEVEL); // дальше твой код } //+------------------------------------------------------------------+ void TrailSL() { if (iTrailStart <= 0 ) return ; double sl_lev; for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) { if ( OrderSelect (i, SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic) { if (OrderType() == OP_BUY) { if ((OrderStopLoss() == 0 && Bid > OrderOpenPrice() + iTrailStart * _Point )||(OrderStopLoss() != 0 && Bid > OrderStopLoss() + (iDistTrail+iTrailStep) * _Point )) { sl_lev = NormalizeDouble (Bid - iDistTrail * _Point , Digits ); if (OrderModify(OrderTicket(), OrderOpenPrice(), sl_lev, OrderTakeProfit(), 0 , clrRed )) Print ( "Удачная модифиция стоплосс ордера №" ,OrderTicket()); else Print ( "Не удалось модифицировать стоплосс ордера №" ,OrderTicket(), ". Ошибка: " , GetLastError ()); } } if (OrderType() == OP_SELL) { if ((OrderStopLoss() == 0 && Ask < OrderOpenPrice() - iTrailStart * _Point )||(OrderStopLoss() != 0 && Ask < OrderStopLoss() - (iDistTrail+iTrailStep) * _Point )) { sl_lev = NormalizeDouble (Ask + iDistTrail * _Point , Digits ); if (OrderModify(OrderTicket(), OrderOpenPrice(), sl_lev, OrderTakeProfit(), 0 , clrRed )) Print ( "Удачная модифиция стоплосс ордера №" ,OrderTicket()); else Print ( "Не удалось модифицировать стоплосс ордера №" ,OrderTicket(), ". Ошибка: " , GetLastError ()); } } } } } } //+------------------------------------------------------------------+ Tretyakov Rostyslav 2021.12.15 11:14 #18155 이 상수에 대해 ENUM이 있거나 직접 작성해야 한다고 말해주십시오. 끊임없는 의미 설명 DRAW_LINE 0 단순한 선 DRAW_SECTION 하나 비어 있지 않은 라인 값 사이의 세그먼트 DRAW_HISTOGRAM 2 막대 그래프 DRAW_ARROW 삼 화살표(기호) DRAW_ZIGZAG 4 짝수 라인과 홀수 라인(지그재그)의 비어 있지 않은 값 사이의 세그먼트, 2 DRAW_NONE 12 도면 부족 Alexey Viktorov 2021.12.15 11:25 #18156 Tretyakov Rostyslav # : 이 상수에 대해 ENUM이 있거나 직접 작성해야 한다고 말해주십시오. 끊임없는 의미 설명 DRAW_LINE 0 단순한 선 DRAW_SECTION 하나 공백이 아닌 라인 값 사이의 세그먼트 DRAW_HISTOGRAM 2 막대 그래프 DRAW_ARROW 삼 화살표(기호) DRAW_ZIGZAG 4 짝수 라인과 홀수 라인(지그재그)의 비어 있지 않은 값 사이의 세그먼트, 2 DRAW_NONE 12 도면 부족 그리기 스타일 ENUM_DRAW_TYPE mql4에 전화 그런 건 없습니다 ... Tretyakov Rostyslav 2021.12.15 11:30 #18157 Alexey Viktorov # : 그리기 스타일 ENUM_DRAW_TYPE mql4에 전화 걸기 그런 건 없어요... 고마워 내꺼 쓸게 Alexander Avksentyev 2021.12.15 13:23 #18158 Tretyakov Rostyslav # : 이 같은 감사합니다. 더 파고들어 알아보겠습니다. Alexander Avksentyev 2021.12.15 14:11 #18159 Tretyakov Rostyslav # : 이 같은 int Login = 4950287 ; datetime time = D'2022.01.01 00:00:00' ; string name = "Test" ; datetime time1 = 0 ; double TP, lastlot, minlot; int Forder; int TakeProfit,TrailStart,TrailDist,TrailStep,TrailTakeProfit,Step,Slippage; double level_count= 0 ; int iDistTrail = iTrailDist; //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //Torder-Цена открытия первого ордера //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit () { if (AccountNumber() != Login) { int close = MessageBox ( "Неверный номер счёта" , "Ошибка" , MB_OK | MB_ICONSTOP ); return ( INIT_FAILED ); } else (AccountNumber() == Login); { int close = MessageBox ( "Проверка прошла успешно.Экcперт может приступить к работе." , "Инициализация" , MB_OK | MB_ICONEXCLAMATION ); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// if ( TimeCurrent () > time) { int close = MessageBox ( "Время работы закончилось!!!" , "Время работы" , MB_OK | MB_ICONSTOP ); return ( INIT_FAILED ); } else ( TimeCurrent () < time); { int close = MessageBox ( "Проверка времени работы прошла успешно.Эксперт может приступить к работе!" , "Время работы" , MB_OK | MB_ICONEXCLAMATION ); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// TakeProfit =iTakeProfit; TrailStart =iTrailStart; TrailDist =iTrailDist; TrailStep =iTrailStep; TrailTakeProfit =iTrailTakeProfit; Step =iStep; Slippage =iSlippage; //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// if ( Digits == 3 || Digits == 5 ) { TakeProfit *= 10 ; TrailStart *= 10 ; TrailDist *= 10 ; TrailStep *= 10 ; TrailTakeProfit *= 10 ; Step *= 10 ; Slippage *= 10 ; } return ( INIT_SUCCEEDED ); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit ( const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick () { //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// /* Comment( "\n", name, "\n", " ", Symbol(), "\n", "Тайм Фрейм ", Period(), "\n", AccountCompany(), "\n", "\n ", AccountServer(), "\n", "Lots\n", B_S_Lot(), "\n", "Price ", Bid, "\n", "Дата ", TimeToString( TimeCurrent(), TIME_DATE ), "\n", "Server Time ", TimeToString( TimeCurrent(), TIME_SECONDS ), "\n", "Profit ", Profit(), "\n", "AvTP ", CalcTP (), "\n", "Количество ордеров ", CountTrades(), "\n", "\n ", GetVolumeLotLastOrder(), "\n", "\n", "Процент просадки ", NormalizeDouble( (AccountInfoDouble(ACCOUNT_BALANCE)-AccountInfoDouble(ACCOUNT_MARGIN_FREE))/AccountInfoDouble(ACCOUNT_BALANCE)*100,2) );*/ //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// double body = Close[ 1 ] - Open[ 1 ]; if (CountTrades() == 0 && body > 0 ) BuyOpen(); // Если нет открытых и сигнал бай if (CountTrades() == 0 && body < 0 ) SellOpen(); // Если нет открытых и сигнал селл if (CountTrades( 0 ) > 0 && body > 0 ) BuyOpen(); // Если есть открытые бай и сигнал бай if (CountTrades( 1 ) > 0 && body < 0 ) SellOpen(); // Если есть открытые селл и сигнал селл /* if (iTrailStart<MarketInfo(Symbol(),MODE_STOPLEVEL)) iTrailStart= MarketInfo(Symbol(), MODE_STOPLEVEL * Point); iTrailSL(); */ if (iDistTrail<MarketInfo( Symbol (),MODE_STOPLEVEL)) iDistTrail = MarketInfo( Symbol (),MODE_STOPLEVEL); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// void BuyOpen() //Открытие позиции Buy { Forder = ( OrderSend ( _Symbol ,OP_BUY,Lot,Ask,iSlippage, 0 , 0 , "Коммент" ,Magic, 0 ,Blue)); if (Forder > 0 ) { Print ( "Открыта Позиция BUY" ); if ( OrderSelect (Forder, SELECT_BY_TICKET)) { TP = NormalizeDouble ((Ask+iTakeProfit* _Point ), _Digits ); if (OrderModify(OrderTicket(),OrderOpenPrice(), 0 ,TP, 0 )) Print ( "Ордер Модифицирован BUY " ); else Print ( "Ошибка Модификации Ордера BUY = " , GetLastError ()); } } else Print ( "Ошибка Открытия Позиции BUY" ); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// void SellOpen() //Открытие позиции Sell { Forder = ( OrderSend ( _Symbol ,OP_SELL,Lot,Bid,iSlippage, 0 , 0 , "Коммент Sell" ,Magic, 0 ,Red)); if (Forder > 0 ) { Print ( "Открыта Позиция SELL" ); if ( OrderSelect (Forder, SELECT_BY_TICKET)) { TP = NormalizeDouble ((Bid-iTakeProfit* _Point ), _Digits ); if (OrderModify(OrderTicket(),OrderOpenPrice(), 0 ,TP, 0 )) Print ( "Ордер Модифицирован SELL " ); else Print ( "Ошибка Модификации Ордера SELL = " , GetLastError ()); } } else Print ( "Ошибка Открытия Позиции SELL" ); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //+------------------------------------------------------------------+ //| Tester function | //+------------------------------------------------------------------+ double OnTester () { //--- double ret= 0.0 ; //--- //--- return (ret); } //+------------------------------------------------------------------+ //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //+------------------------------------------------------------------+ //| Подсчёт эквити | //+------------------------------------------------------------------+ double Profit(){ double count= 0 ; for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--){ if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)){ if (OrderSymbol() == Symbol () && OrderMagicNumber()==Magic) count+=OrderProfit(); count+=OrderSwap(); } } return ( NormalizeDouble (count, 2 )); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// void TrailSL() { if (iTrailStart <= 0 ) return ; double sl_lev; for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) { if ( OrderSelect (i, SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic) { if (OrderType() == OP_BUY) { if ((OrderStopLoss() == 0 && Bid > OrderOpenPrice() + iTrailStart * _Point )||(OrderStopLoss() != 0 && Bid > OrderStopLoss() + (iDistTrail+iTrailStep) * _Point )) { sl_lev = NormalizeDouble (Bid - iDistTrail * _Point , Digits ); if (OrderModify(OrderTicket(), OrderOpenPrice(), sl_lev, OrderTakeProfit(), 0 , clrRed )) Print ( "Удачная модифиция стоплосс ордера №" ,OrderTicket()); else Print ( "Не удалось модифицировать стоплосс ордера №" ,OrderTicket(), ". Ошибка: " , GetLastError ()); } } if (OrderType() == OP_SELL) { if ((OrderStopLoss() == 0 && Ask < OrderOpenPrice() - iTrailStart * _Point )||(OrderStopLoss() != 0 && Ask < OrderStopLoss() - (iDistTrail+iTrailStep) * _Point )) { sl_lev = NormalizeDouble (Ask + iDistTrail * _Point , Digits ); if (OrderModify(OrderTicket(), OrderOpenPrice(), sl_lev, OrderTakeProfit(), 0 , clrRed )) Print ( "Удачная модифиция стоплосс ордера №" ,OrderTicket()); else Print ( "Не удалось модифицировать стоплосс ордера №" ,OrderTicket(), ". Ошибка: " , GetLastError ()); } } } } } } //+------------------------------------------------------------------+ 다음은 코드입니다. 내가 올바르게 지정하지 않은 것일 수도 있지만 효과는 없습니다. Tretyakov Rostyslav 2021.12.15 14:38 #18160 Alexander Avksentyev # : 다음은 코드입니다. 내가 올바르게 지정하지 않은 것일 수도 있지만 효과는 없습니다. 잡지에는 무엇이 있습니까? 전체 코드를 게시하고 파일로 첨부합니다. 1...180918101811181218131814181518161817181818191820182118221823...1953 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
방해해서 죄송합니다.
이것은 중요하지 않습니다. 모른다고 말하는 것을 두려워하지 마십시오. 항상 물어보십시오.
지금 예시를 올리고 있습니다."iTrailStart" 및 "iTrailDist"가 무엇입니까?
"iTrailStart" 및 "iTrailDist"가 무엇입니까?
포함할 포인트 수 및 시장에서 tsl까지의 거리
iTrailStart = 10; //후행을 활성화할 포인트 수;
iTrailDist = 10; //정류장에서 시장까지의 거리;
주문이 11p까지라면 손실 없이 11-10=1p입니다.
포함할 포인트 수 및 시장에서 tsl까지의 거리
이 같은
이 상수에 대해 ENUM이 있거나 직접 작성해야 한다고 말해주십시오.
끊임없는
의미
설명
DRAW_LINE
0
단순한 선
DRAW_SECTION
하나
비어 있지 않은 라인 값 사이의 세그먼트
DRAW_HISTOGRAM
2
막대 그래프
DRAW_ARROW
삼
화살표(기호)
DRAW_ZIGZAG
4
짝수 라인과 홀수 라인(지그재그)의 비어 있지 않은 값 사이의 세그먼트, 2
DRAW_NONE
12
도면 부족
이 상수에 대해 ENUM이 있거나 직접 작성해야 한다고 말해주십시오.
끊임없는
의미
설명
DRAW_LINE
0
단순한 선
DRAW_SECTION
하나
공백이 아닌 라인 값 사이의 세그먼트
DRAW_HISTOGRAM
2
막대 그래프
DRAW_ARROW
삼
화살표(기호)
DRAW_ZIGZAG
4
짝수 라인과 홀수 라인(지그재그)의 비어 있지 않은 값 사이의 세그먼트, 2
DRAW_NONE
12
도면 부족
ENUM_DRAW_TYPE
그리기 스타일
ENUM_DRAW_TYPE
이 같은
감사합니다. 더 파고들어 알아보겠습니다.
이 같은
다음은 코드입니다. 내가 올바르게 지정하지 않은 것일 수도 있지만 효과는 없습니다.
다음은 코드입니다. 내가 올바르게 지정하지 않은 것일 수도 있지만 효과는 없습니다.
잡지에는 무엇이 있습니까?
전체 코드를 게시하고 파일로 첨부합니다.