MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1808 1...180118021803180418051806180718081809181018111812181318141815...1953 새 코멘트 Alexander Avksentyev 2021.12.10 17:34 #18071 안녕하세요. 코드 작성을 배우고 있는데 문제가 있습니다. 테스터의 코드가 실행되고 하나의 거래가 열리면 됩니다. 가격은 변하지 않고 모든 것이 제자리에 멈춰 있습니다. 신경쓰시는 분들 조언 부탁드립니다. if (CountTrades() == 0 ) { double body = Close[ 1 ] - Open[ 1 ]; //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //Открытие позиции Buy if (body > 0 ) { Forder = ( OrderSend ( _Symbol ,OP_BUY,Lot,Ask,Slippage, 0 , 0 , "Коммент" ,Magic, 0 ,Blue)); { Print ( "Открыта Позиция BUY" ); { if (Forder > 0 ) { TP = NormalizeDouble ((Ask+TakeProfit* _Point +OrderSwap()+OrderCommission()), _Digits ); Forder = OrderModify(Forder,OrderOpenPrice(), 0 ,TP, 0 ); } Print ( "Ордер Модифицирован BUY " ); } Print ( "Ошибка Модификации Ордера BUY" ); } } Print ( "Ошибка Открытия Позиции BUY" ); //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //Открытие позиции Sell if (body < 0 ) { Forder = ( OrderSend ( _Symbol ,OP_SELL,Lot,Bid,Slippage, 0 , 0 , "Коммент Sell" ,Magic, 0 ,Red)); { Print ( "Открыта Позиция SELL" ); { if (Forder > 0 ) { TP = NormalizeDouble ((Bid-TakeProfit* _Point +OrderSwap()+OrderCommission()), _Digits ); Forder = OrderModify(Forder,OrderOpenPrice(), 0 ,TP, 0 ); } Print ( "Ордер Модифицирован SELL " ); } Print ( "Ошибка Модификации Ордера SELL" ); } } Print ( "Ошибка Открытия Позиции Sell" ); //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// } Tretyakov Rostyslav 2021.12.10 18:49 #18072 Alexander Avksentyev # : 안녕하세요. 코드 작성을 배우고 있는데 문제가 있습니다. 테스터의 코드가 실행되고 하나의 거래가 열리면 됩니다. 가격은 변하지 않고 모든 것이 제자리에 멈춰 있습니다. 신경쓰시는 분들 조언 부탁드립니다. Ask+TakeProfit* _Point +OrderSwap()+OrderCommission() 가격에 스왑과 커미션을 어떻게 추가합니까? Alexander Avksentyev 2021.12.10 19:03 #18073 MakarFX # : 가격에 스왑과 커미션을 어떻게 추가합니까? 내가 할 수 있고 내가 생각하는 한) (((Ask+TakeProfit* _Point +OrderSwap()+OrderCommission()* _Point )) 이것이 문제라고 생각하십니까? Ivan Butko 2021.12.10 19:13 #18074 OnTimer 기능의 잡지에서 렌더링하거나 인쇄하는 동안 테스터에서 주석 을 작동시키는 방법은 무엇입니까? Tretyakov Rostyslav 2021.12.10 19:22 #18075 Alexander Avksentyev # : 내가 할 수 있고 내가 생각하는 한) 이것이 문제라고 생각하십니까? 첫째, 개봉 시 스왑이 없습니다. 둘째, 수수료가 $1이라고 가정하고 1.32500의 가격으로 파운드 주문을 엽니다. (TakeProfit) 200* _포인트와 (커미션) 1$를 더하면 2.32700이 됩니다... 몇 년 후입니까? Tretyakov Rostyslav 2021.12.10 19:22 #18076 Ivan Butko 주석 을 작동시키는 방법은 무엇입니까? OnTick에 OnTimer 추가 Ivan Butko 2021.12.10 19:27 #18077 MakarFX # : OnTick에 OnTimer 추가 감사해요 Alekseu Fedotov 2021.12.10 19:28 #18078 Alexander Avksentyev # : 내가 할 수 있고 내가 생각하는 한) 이것이 문제라고 생각하십니까? 아니오, 이것은 정확하지 않습니다. OrderModify를 사용하면 오히려 그렇습니다. 별도의 블록으로 사용하는 것이 좋습니다. if ( OrderSelect (Forder, SELECT_BY_TICKET)) { TP = NormalizeDouble ((Ask+TakeProfit* _Point ), _Digits ); if (OrderModify(OrderTicket(),OrderOpenPrice(), 0 ,TP, 0 ) Print ( "Ордер Модифицирован BUY " ); else Print ( "Ошибка Модификации Ордера BUY = " , GetLastError ()); } Tretyakov Rostyslav 2021.12.10 19:28 #18079 Alexander Avksentyev # : 내가 할 수 있고 내가 생각하는 한) 이것이 문제라고 생각하십니까? 나는 그것이 문제라고 생각하지 않습니다, 그것은 단지 옳지 않습니다. 테스터 동결에 관해서는 전체 코드를 레이아웃하여 보는 것이 좋습니다. OrderCommission()* _Point 이것도 옳지 않습니다. _Point - 소수점 이하 자릿수이며 돈을 어떤 식으로든 포인트로 변환하지 않습니다. Alexander Avksentyev 2021.12.10 20:04 #18080 MakarFX # : 나는 그것이 문제라고 생각하지 않습니다, 그것은 단지 옳지 않습니다. 테스터 동결에 관해서는 전체 코드를 레이아웃하여 보는 것이 좋습니다. 이것도 옳지 않습니다. _Point - 소수점 이하 자릿수이며 돈을 어떤 식으로든 포인트로 변환하지 않습니다. int Login = 4950287 ; datetime time = D'2022.01.01 00:00:00' ; string name = "AutoP_v.3.0" ; datetime time1 = 0 ; double price, TP, lastlot, minlot; int Forder; //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //+------------------------------------------------------------------+ //| 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// 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 () { double body = Close[ 1 ] - Open[ 1 ]; //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //Открытие позиции Buy if (body > 0 ) { Forder = ( OrderSend ( _Symbol ,OP_BUY,Lot,Ask,Slippage, 0 , 0 , "Коммент" ,Magic, 0 ,Blue)); { Print ( "Открыта Позиция BUY" ); { if (Forder > 0 ) if ( OrderSelect (Forder, SELECT_BY_TICKET)) { TP = NormalizeDouble ((Ask+TakeProfit* _Point ), _Digits ); if (OrderModify(OrderTicket(),OrderOpenPrice(), 0 ,TP, 0 )) Print ( "Ордер Модифицирован BUY " ); else Print ( "Ошибка Модификации Ордера BUY = " , GetLastError ()); } } } Print ( "Ошибка Открытия Позиции BUY" ); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //Открытие позиции Sell if (body < 0 ) { Forder = ( OrderSend ( _Symbol ,OP_SELL,Lot,Bid,Slippage, 0 , 0 , "Коммент Sell" ,Magic, 0 ,Red)); { Print ( "Открыта Позиция SELL" ); if (Forder > 0 ) if ( OrderSelect (Forder, SELECT_BY_TICKET)) { TP = NormalizeDouble ((Bid-TakeProfit* _Point ), _Digits ); if (OrderModify(OrderTicket(),OrderOpenPrice(), 0 ,TP, 0 )) Print ( "Ордер Модифицирован SELL " ); else Print ( "Ошибка Модификации Ордера SELL = " , GetLastError ()); } } } Print ( "Ошибка Открытия Позиции BUY" );} //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //+------------------------------------------------------------------+ //| Tester function | //+------------------------------------------------------------------+ double OnTester () { //--- double ret= 0.0 ; //--- //--- return (ret); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// int CountTrades() { int count = 0 ; for ( int i = OrdersTotal ()- 1 ; i>= 0 ; i++ ) { if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol() == _Symbol && OrderMagicNumber() == Magic) { count++; } } } return (count); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// 그게 다야. 도와 주셔서 감사합니다. 1...180118021803180418051806180718081809181018111812181318141815...1953 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
안녕하세요. 코드 작성을 배우고 있는데 문제가 있습니다. 테스터의 코드가 실행되고 하나의 거래가 열리면 됩니다. 가격은 변하지 않고 모든 것이 제자리에 멈춰 있습니다.
신경쓰시는 분들 조언 부탁드립니다.
안녕하세요. 코드 작성을 배우고 있는데 문제가 있습니다. 테스터의 코드가 실행되고 하나의 거래가 열리면 됩니다. 가격은 변하지 않고 모든 것이 제자리에 멈춰 있습니다.
신경쓰시는 분들 조언 부탁드립니다.
Ask+TakeProfit* _Point +OrderSwap()+OrderCommission()
가격에 스왑과 커미션을 어떻게 추가합니까?
가격에 스왑과 커미션을 어떻게 추가합니까?
내가 할 수 있고 내가 생각하는 한)
이것이 문제라고 생각하십니까?
내가 할 수 있고 내가 생각하는 한)
이것이 문제라고 생각하십니까?
첫째, 개봉 시 스왑이 없습니다.
둘째, 수수료가 $1이라고 가정하고 1.32500의 가격으로 파운드 주문을 엽니다.
(TakeProfit) 200* _포인트와 (커미션) 1$를 더하면 2.32700이 됩니다... 몇 년 후입니까?
OnTick에 OnTimer 추가
감사해요
내가 할 수 있고 내가 생각하는 한)
이것이 문제라고 생각하십니까?
아니오, 이것은 정확하지 않습니다.
OrderModify를 사용하면 오히려 그렇습니다.
별도의 블록으로 사용하는 것이 좋습니다.
내가 할 수 있고 내가 생각하는 한)
이것이 문제라고 생각하십니까?
나는 그것이 문제라고 생각하지 않습니다, 그것은 단지 옳지 않습니다. 테스터 동결에 관해서는 전체 코드를 레이아웃하여 보는 것이 좋습니다.
OrderCommission()* _Point
이것도 옳지 않습니다.
_Point - 소수점 이하 자릿수이며 돈을 어떤 식으로든 포인트로 변환하지 않습니다.나는 그것이 문제라고 생각하지 않습니다, 그것은 단지 옳지 않습니다. 테스터 동결에 관해서는 전체 코드를 레이아웃하여 보는 것이 좋습니다.
이것도 옳지 않습니다.
_Point - 소수점 이하 자릿수이며 돈을 어떤 식으로든 포인트로 변환하지 않습니다.그게 다야. 도와 주셔서 감사합니다.