MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1657 1...165016511652165316541655165616571658165916601661166216631664...1953 새 코멘트 Tretyakov Rostyslav 2021.10.09 14:44 #16561 artem artem # : 스크린샷을 첨부했습니다. 명확하지 않은 경우 질문하세요. 이것이 작동하는 방식입니다 #define MagicNumber 122122 extern string s1 = "Trading options" ; extern double Lot = 0.01 ; // размер лота 0 - авт.расчет extern double StopLoss = 40 ; // стоплосс extern double TakeProfit = 10 ; // тейкпрофит extern double TrailStop = 21 ; // уровень без убытка extern int Trailing = 0 ; // трейлинг стоп 1 вкл. 0 выкл. extern int Breakeven = 0 ; // перенос стоп лосса в без убыток extern string s2 = "Day & Hour" ; extern int HrStart = 0 ; // время начала торговли extern int HrEnd = 23 ; // время окончания торговли extern int Monday = 1 ; // Понедельник 1 вкд. 0 выкл. extern int Tuesday = 1 ; // Вторник extern int Wednesday = 1 ; // Среда extern int Thursday = 1 ; // Четверг extern int Friday = 1 ; // Пятница //+------------------------------------------------------------------+ // параметры индикаторов double MovingPeriodLw = 5 ; double MovingPeriodS1 = 75 ; double MovingPeriodS2 = 85 ; double StopLevel; double TrailStep = 3 ; // шаг трейлинг стопа bool OrderBuy = true , OrderSell = true , Order = false , Init = true ; int timeprev = 0 , Slip = 3.0 ; //+------------------------------------------------------------------+ //| Init function | //+------------------------------------------------------------------+ void OnInit () { if ( Digits == 3 || Digits == 5 ) { // Пересчет для 5-ти знаков TakeProfit *= 10 ; TrailStop *= 10 ; TrailStep *= 10 ; StopLoss *= 10 ; Slip *= 10 ; } return ; } //+------------------------------------------------------------------+ //| Start function | //+------------------------------------------------------------------+ void start() { StopLevel = MarketInfo( Symbol (), MODE_STOPLEVEL); CheckForOpen(); // Определение направления пересечения мувингов if (Init) InitMetod(); // Трейлинг стоп открытых позиций if (Trailing != 0 ) RealTrailOrder(TrailStop, TrailStep, StopLevel, MagicNumber); // Ожидание нового бара на графике if (timeprev == Time[ 0 ]) return ; timeprev = Time[ 0 ]; // Открытие ордера по методу Пуриа if (CheckForOpen()== 0 && OrderBuy== true ) // Если сигнал для покупок { if ( OrderSend ( Symbol (),OP_BUY,Lots(),Ask,Slip,Bid-StopLoss* Point ,Ask+TakeProfit* Point , "" ,MagicNumber, 0 ,Blue)) {OrderBuy= false ; Print ( "BUY OK" );} } if (CheckForOpen()== 1 && OrderSell== true ) // Если сигнал для продаж { if ( OrderSend ( Symbol (),OP_SELL,Lots(),Bid,Slip,Ask+StopLoss* Point ,Bid-TakeProfit* Point , "" ,MagicNumber, 0 ,Red)) {OrderSell= false ; Print ( "SELL OK" );} } } //+------------------------------------------------------------------+ //| Check for open order conditions | //+------------------------------------------------------------------+ int CheckForOpen() // Открытие ордера по методу Пуриа { double malw,mas1,mas2,macd; int res=- 1 , buy= 0 , sell= 0 ; // Считывание параметров индикаторов 3 свечи (4ой) malw= iMA ( NULL , 0 ,MovingPeriodLw, 0 , MODE_EMA , PRICE_CLOSE , 3 ); mas1= iMA ( NULL , 0 ,MovingPeriodS1, 0 , MODE_LWMA , PRICE_LOW , 3 ); mas2= iMA ( NULL , 0 ,MovingPeriodS2, 0 , MODE_LWMA , PRICE_LOW , 3 ); macd= iMACD ( NULL , 0 , 15 , 26 , 1 , PRICE_CLOSE ,MODE_MAIN, 3 ); if (malw>mas1&&malw>mas2&&macd> 0 ) {buy+= 1 ; sell= 0 ;} if (malw<mas1&&malw<mas2&&macd< 0 ) {buy= 0 ; sell+= 1 ;} // Считывание параметров индикаторов 2 свечи (3ей) malw= iMA ( NULL , 0 ,MovingPeriodLw, 0 , MODE_EMA , PRICE_CLOSE , 2 ); mas1= iMA ( NULL , 0 ,MovingPeriodS1, 0 , MODE_LWMA , PRICE_LOW , 2 ); mas2= iMA ( NULL , 0 ,MovingPeriodS2, 0 , MODE_LWMA , PRICE_LOW , 2 ); macd= iMACD ( NULL , 0 , 15 , 26 , 1 , PRICE_CLOSE ,MODE_MAIN, 2 ); if (malw>mas1&&malw>mas2&&macd> 0 ) {buy+= 1 ; sell= 0 ;} if (malw<mas1&&malw<mas2&&macd< 0 ) {buy= 0 ; sell+= 1 ;} // Считывание параметров индикаторов 1 свечи (2ой) malw= iMA ( NULL , 0 ,MovingPeriodLw, 0 , MODE_EMA , PRICE_CLOSE , 1 ); mas1= iMA ( NULL , 0 ,MovingPeriodS1, 0 , MODE_LWMA , PRICE_LOW , 1 ); mas2= iMA ( NULL , 0 ,MovingPeriodS2, 0 , MODE_LWMA , PRICE_LOW , 1 ); macd= iMACD ( NULL , 0 , 15 , 26 , 1 , PRICE_CLOSE ,MODE_MAIN, 1 ); if (malw>mas1&&malw>mas2&&macd> 0 ) {buy+= 1 ; sell= 0 ;} if (malw<mas1&&malw<mas2&&macd< 0 ) {buy= 0 ; sell+= 1 ;} // Считывание параметров индикаторов 0 свечи (1ой) malw= iMA ( NULL , 0 ,MovingPeriodLw, 0 , MODE_EMA , PRICE_CLOSE , 0 ); mas1= iMA ( NULL , 0 ,MovingPeriodS1, 0 , MODE_LWMA , PRICE_LOW , 0 ); mas2= iMA ( NULL , 0 ,MovingPeriodS2, 0 , MODE_LWMA , PRICE_LOW , 0 ); macd= iMACD ( NULL , 0 , 15 , 26 , 1 , PRICE_CLOSE ,MODE_MAIN, 0 ); if (malw>mas1&&malw>mas2&&macd> 0 ) {buy+= 1 ; sell= 0 ;} if (malw<mas1&&malw<mas2&&macd< 0 ) {buy= 0 ; sell+= 1 ;} if (buy == 4 ) { res= 0 ; OrderSell= true ;} if (sell== 4 ) { res= 1 ; OrderBuy = true ;} return (res); } Tretyakov Rostyslav 2021.10.09 14:49 #16562 artem artem # : 스크린샷을 첨부했습니다. 명확하지 않은 경우 질문하세요. 간섭하지 않도록 컴파일 if (Init) InitMetod(); [삭제] 2021.10.09 14:55 #16563 SanAlex # : 그리고 이것을 시도하십시오 - 그 장소에서 열릴까요? 이것은 그가 여는 방법입니다. 그러나 그는 어떻게 해야 합니까? Tretyakov Rostyslav 2021.10.09 15:00 #16564 SanAlex # : 이것은 그가 여는 방법입니다. 그러나 그는 어떻게 해야 합니까? [삭제] 2021.10.09 15:18 #16565 MakarFX # : 이렇게 열립니다 - 더 깊이 파고 그리고 이와 같이 - 위와 같이 코드는 당신에 의해 노출됩니다 Artis98 2021.10.09 15:26 #16566 MakarFX , 내가 보았을 때, 매수 및 매도 모두 열리며 모든 것이 괜찮습니다. 그러나 반대 방향의 MACD 전환에는 여전히 반응이 없으며 빠른 것은 동일하게 유지됩니다. 결과적으로 MACD가 빠른 영역으로 돌아가서 4개의 컨펌 캔들을 통과하면 주문에 진입할 수 없습니다. 내가 의미하는 바를 시각적으로 명확하게 하기 위해 이 메시지에 스크린샷을 첨부했습니다. 파일: xn27e5bwg_ko_g547t6j.png 22 kb Tretyakov Rostyslav 2021.10.09 15:27 #16567 artem artem # : 스크린샷을 첨부했습니다. 명확하지 않은 경우 질문하세요. 약간 수정 #define MagicNumber 122122 extern string s1 = "Trading options" ; extern double Lot = 0.01 ; // размер лота 0 - авт.расчет extern double StopLoss = 40 ; // стоплосс extern double TakeProfit = 10 ; // тейкпрофит extern double TrailStop = 21 ; // уровень без убытка extern int Trailing = 0 ; // трейлинг стоп 1 вкл. 0 выкл. extern int Breakeven = 0 ; // перенос стоп лосса в без убыток extern string s2 = "Day & Hour" ; extern int HrStart = 0 ; // время начала торговли extern int HrEnd = 23 ; // время окончания торговли extern int Monday = 1 ; // Понедельник 1 вкд. 0 выкл. extern int Tuesday = 1 ; // Вторник extern int Wednesday = 1 ; // Среда extern int Thursday = 1 ; // Четверг extern int Friday = 1 ; // Пятница //+------------------------------------------------------------------+ // параметры индикаторов double MovingPeriodLw = 5 ; double MovingPeriodS1 = 75 ; double MovingPeriodS2 = 85 ; double StopLevel; double TrailStep = 3 ; // шаг трейлинг стопа bool OrderBuy = true , OrderSell = true , Order = false , Init = true ; int timeprev = 0 , Slip = 3.0 ; //+------------------------------------------------------------------+ //| Init function | //+------------------------------------------------------------------+ void OnInit () { if ( Digits == 3 || Digits == 5 ) { // Пересчет для 5-ти знаков TakeProfit *= 10 ; TrailStop *= 10 ; TrailStep *= 10 ; StopLoss *= 10 ; Slip *= 10 ; } return ; } //+------------------------------------------------------------------+ //| Start function | //+------------------------------------------------------------------+ void start() { StopLevel = MarketInfo( Symbol (), MODE_STOPLEVEL); CheckForOpen(); // Определение направления пересечения мувингов // if (Init) InitMetod(); // Трейлинг стоп открытых позиций if (Trailing != 0 ) RealTrailOrder(TrailStop, TrailStep, StopLevel, MagicNumber); // Ожидание нового бара на графике if (timeprev == Time[ 0 ]) return ; timeprev = Time[ 0 ]; // Открытие ордера по методу Пуриа if (CheckForOpen()== 0 && OrderBuy== true ) // Если сигнал для покупок { if ( OrderSend ( Symbol (),OP_BUY,Lots(),Ask,Slip,Bid-StopLoss* Point ,Ask+TakeProfit* Point , "" ,MagicNumber, 0 ,Blue)) {OrderBuy= false ; Print ( "BUY OK" );} } if (CheckForOpen()== 1 && OrderSell== true ) // Если сигнал для продаж { if ( OrderSend ( Symbol (),OP_SELL,Lots(),Bid,Slip,Ask+StopLoss* Point ,Bid-TakeProfit* Point , "" ,MagicNumber, 0 ,Red)) {OrderSell= false ; Print ( "SELL OK" );} } } //+------------------------------------------------------------------+ //| Check for open order conditions | //+------------------------------------------------------------------+ int CheckForOpen() // Открытие ордера по методу Пуриа { double malw,mas1,mas2,macd; int res=- 1 , buy= 0 , sell= 0 ; // Считывание параметров индикаторов 3 свечи (4ой) malw= iMA ( NULL , 0 ,MovingPeriodLw, 0 , MODE_EMA , PRICE_CLOSE , 3 ); mas1= iMA ( NULL , 0 ,MovingPeriodS1, 0 , MODE_LWMA , PRICE_LOW , 3 ); mas2= iMA ( NULL , 0 ,MovingPeriodS2, 0 , MODE_LWMA , PRICE_LOW , 3 ); macd= iMACD ( NULL , 0 , 15 , 26 , 1 , PRICE_CLOSE ,MODE_MAIN, 3 ); if (malw>mas1&&malw>mas2&&macd> 0 ) {buy+= 1 ; sell= 0 ;} if (malw<mas1&&malw<mas2&&macd< 0 ) {buy= 0 ; sell+= 1 ;} // Считывание параметров индикаторов 2 свечи (3ей) malw= iMA ( NULL , 0 ,MovingPeriodLw, 0 , MODE_EMA , PRICE_CLOSE , 2 ); mas1= iMA ( NULL , 0 ,MovingPeriodS1, 0 , MODE_LWMA , PRICE_LOW , 2 ); mas2= iMA ( NULL , 0 ,MovingPeriodS2, 0 , MODE_LWMA , PRICE_LOW , 2 ); macd= iMACD ( NULL , 0 , 15 , 26 , 1 , PRICE_CLOSE ,MODE_MAIN, 2 ); if (malw>mas1&&malw>mas2&&macd> 0 ) {buy+= 1 ; sell= 0 ;} if (malw<mas1&&malw<mas2&&macd< 0 ) {buy= 0 ; sell+= 1 ;} // Считывание параметров индикаторов 1 свечи (2ой) malw= iMA ( NULL , 0 ,MovingPeriodLw, 0 , MODE_EMA , PRICE_CLOSE , 1 ); mas1= iMA ( NULL , 0 ,MovingPeriodS1, 0 , MODE_LWMA , PRICE_LOW , 1 ); mas2= iMA ( NULL , 0 ,MovingPeriodS2, 0 , MODE_LWMA , PRICE_LOW , 1 ); macd= iMACD ( NULL , 0 , 15 , 26 , 1 , PRICE_CLOSE ,MODE_MAIN, 1 ); if (malw>mas1&&malw>mas2&&macd> 0 ) {buy+= 1 ; sell= 0 ;} if (malw<mas1&&malw<mas2&&macd< 0 ) {buy= 0 ; sell+= 1 ;} // Считывание параметров индикаторов 0 свечи (1ой) malw= iMA ( NULL , 0 ,MovingPeriodLw, 0 , MODE_EMA , PRICE_CLOSE , 0 ); mas1= iMA ( NULL , 0 ,MovingPeriodS1, 0 , MODE_LWMA , PRICE_LOW , 0 ); mas2= iMA ( NULL , 0 ,MovingPeriodS2, 0 , MODE_LWMA , PRICE_LOW , 0 ); macd= iMACD ( NULL , 0 , 15 , 26 , 1 , PRICE_CLOSE ,MODE_MAIN, 0 ); if (malw>mas1&&malw>mas2&&macd> 0 ) {buy+= 1 ; sell= 0 ;} if (malw<mas1&&malw<mas2&&macd< 0 ) {buy= 0 ; sell+= 1 ;} if (buy < 4 ) OrderBuy= true ; if (sell< 4 ) OrderSell= true ; if (buy == 4 ) { res= 0 ; OrderSell= true ;} if (sell== 4 ) { res= 1 ; OrderBuy = true ;} return (res); } [삭제] 2021.10.09 15:36 #16568 artem artem # : 그리고 그림에서와 같이 - 정확한 포인트 ??? Artis98 2021.10.09 15:52 #16569 MakarFX , 마지막 편집에서 결과적으로 빠른 것이 느린 것을 교차한 다음 MACD 와 같은 영역으로 돌아오면 첫 번째 캔들에서 주문이 열립니다. 그리고 lojna 4번 확인되고 4번째 캔들에 주문이 오픈됩니다. 이해하기 쉽게 파일을 첨부했습니다. SanAlex , MACD 막대와 빠른 막대가 느린 막대를 가로지르는 방법을 명확하게 볼 수 있도록 확대할 수 있습니까? 그리고 나는 거의 볼 수 없다 파일: l5yxb9evi_sm_c9ile85_2.png 44 kb Tretyakov Rostyslav 2021.10.09 16:00 #16570 artem artem MACD 와 같은 영역으로 돌아오면 첫 번째 캔들에서 주문이 열립니다. 그리고 lojna 4번 확인되고 4번째 캔들에 주문이 오픈됩니다. 이해하기 쉽게 파일을 첨부했습니다. SanAlex , MACD 막대와 빠른 막대가 느린 막대를 가로지르는 방법을 명확하게 볼 수 있도록 확대할 수 있습니까? 그리고 나는 거의 볼 수 없다 bool은 빠른 것이 느린 것을 교차했을 때 전환되었고 다음 막대에서 신호가 현재 순간의 상태를 다시 계산하고 거래를 열었습니다. 문제는 이해하지만 해결 방법을 모르겠습니다... 1...165016511652165316541655165616571658165916601661166216631664...1953 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
스크린샷을 첨부했습니다. 명확하지 않은 경우 질문하세요.
이것이 작동하는 방식입니다
스크린샷을 첨부했습니다. 명확하지 않은 경우 질문하세요.
간섭하지 않도록 컴파일
if (Init) InitMetod();
그리고 이것을 시도하십시오 - 그 장소에서 열릴까요?
이것은 그가 여는 방법입니다. 그러나 그는 어떻게 해야 합니까?
이것은 그가 여는 방법입니다. 그러나 그는 어떻게 해야 합니까?
이렇게 열립니다 - 더 깊이 파고
그리고 이와 같이 - 위와 같이 코드는 당신에 의해 노출됩니다
스크린샷을 첨부했습니다. 명확하지 않은 경우 질문하세요.
약간 수정
그리고 그림에서와 같이 - 정확한 포인트 ???
MakarFX , 마지막 편집에서 결과적으로 빠른 것이 느린 것을 교차한 다음 MACD 와 같은 영역으로 돌아오면 첫 번째 캔들에서 주문이 열립니다. 그리고 lojna 4번 확인되고 4번째 캔들에 주문이 오픈됩니다. 이해하기 쉽게 파일을 첨부했습니다.
SanAlex , MACD 막대와 빠른 막대가 느린 막대를 가로지르는 방법을 명확하게 볼 수 있도록 확대할 수 있습니까? 그리고 나는 거의 볼 수 없다
SanAlex , MACD 막대와 빠른 막대가 느린 막대를 가로지르는 방법을 명확하게 볼 수 있도록 확대할 수 있습니까? 그리고 나는 거의 볼 수 없다
bool은 빠른 것이 느린 것을 교차했을 때 전환되었고 다음 막대에서 신호가 현재 순간의 상태를 다시 계산하고 거래를 열었습니다.
문제는 이해하지만 해결 방법을 모르겠습니다...