MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1803

 
Artyom Trishkin # :

코드에서 하나의 열린 위치에서 다른 위치는 반대 신호에서 열리지 않습니다. 즉, 먼저 시그널이 도착하면 반대 포지션이 있는지 확인하고 닫아야 합니다.

그러나 반복합니다. 이 모든 것이 전략을 개선할 가능성을 크게 제한합니다.

주문의 유무에 묶이는 것에서 벗어날 필요가 있습니다.

아니요, 유형별 주문 수와 위치를 파악하는 것이 정확하고 필요합니다. 그러나 명령이 없을 때만 신호에 의존하는 것은 그런 것입니다 ...

일반적으로 주문과 포지션을 카운팅하는 기능(주문과 포지션의 개수가 변경될 때 구조를 채우는 기능), 포지션을 오픈/클로징하는 기능, 주문을 위한 기능 및 시그널 기능을 갖는 것이 맞습니다. 플러스 - 위치 데이터(열림 또는 닫힘)를 모든 값과 비교할 수 있습니다.

이 세트에서 어떤 전략이든 만들 수 있습니다.

Artem, 거기 전략은 TP 또는 SL에 의해 마감될 때까지 시장에서 하나의 주문을 제공합니다.
 
MakarFX # :

당신의 코드

(바가 오픈되어 주문이 없습니다)

신호 확인 - 신호 없음

... 다음 바를 기다리는 중

지난번과 같은 실수를 저질렀다

추신

이것

주문을 연 후에 실행해야 합니다.

일반적으로 내 코드는 다른 용도로 사용되었습니다. 시가로만 거래하는 로봇의 경우. 방금 내 자신에게서 가져 와서 준법 시민 을 사용자 코드에 추가하고 의견에 따라 변경했습니다. 모든 뉘앙스를 한 번에 고려할 수는 없습니다. 로봇을 테스트하는 동안에만 볼 수 있습니다.

하지만 하나가 있습니다. 그리고 당신도 모든 것을 고려한 것 같습니다. 신호가 도착하고 bSignalSell 또는 bSignalBuy 함수가 주문을 열기 위해 대기열에 명령을 보내고 true(첫 번째 순간)를 반환했습니다. 두 번째 요점은 아직 주문이 열리지 않았다는 것입니다(명령은 터미널에서 차례를 기다리고 있습니다). 다음 은 팀 차례가 되면   적합하면 서버로 전송됩니다(아직 시간입니다). 서버에서 실행됩니다. 또는 서버가 여러 가지 가능한 이유 중 하나로 실행을 거부합니다(자세한 내용은 설명서 참조). 또는 도달하지 못했습니다(간섭, 연결 불량 및 기타 네트워크 버그). 그리고 로봇은 주문을 열었다고 생각하고 바 영업 시간을 업데이트합니다. 아주. 그러나 이 주문은 결국 미결 주문 목록에 없었다. 따라서 목록에 0 개의 주문이 있고 로봇이 "생각"한다고 상상해보십시오. 모든 것이 정상이며 시장에 진입했습니다. 결과적으로 전체 막대 중에 입력이 실패한 후 신호가 있지만 전문가는 신호를 "보이지" 않고 아무 작업도 수행하지 않습니다. 그런 상황이 가능합니까? 가능한! 따라서 귀하의 코드도 잘 작동하지 않습니다. 더 나은 생각. 또는 준법 시민이 생각하게하십시오 . 그리고 불행히도 지금은 할 수 없습니다. 저는 매우 흥미로운 프로젝트를 진행하고 있습니다. 게다가, 훌륭하고 수익성 있는 거래 시스템을 위한 모든 메커니즘을 갖춘 제대로 작동하는 Expert Advisor를 만드는 것이 합리적입니다. 그리고 테스터에서 로봇을 운전하고 이것이 내 옵션이 있더라도, 심지어 당신의 옵션이 있더라도 이것이 또 다른 예금 배출기인지 확인하십시오. 중요하지 않습니다.

 
законопослушный гражданин # :

이제서야 눈치챘다

 bool bSignalBuy()
  {
   if (dMA > Open[ 1 ] && dMA < Close[ 1 ])   //Open[1] и Close[1]- цены открытия и закрытия каждого бара текущего графика.
       return ( true );

   return ( false );
  }
Open [ 1 ] и Close [ 1 ]

인덱스 1.

dMA = iMA ( Symbol (), 0 ,PeriodMA, MovingShift, MODE_SMA , PRICE_CLOSE , 0 );

MA가 인덱스 0에 있는 동안! 즉, 그녀는 바 전체를 걸으며 열기와 닫기를 넘어설 수 있습니다. 따라서 인덱스 1로도 MA를 만드는 것이 좋습니다.

dMA = iMA ( Symbol (), 0 ,PeriodMA, MovingShift, MODE_SMA , PRICE_CLOSE , 1 );

그런 다음 모든 신호는 형성된 막대에서만 독점적으로 취해지며 로봇은 시가의 신호로 거래 시스템을 완전히 준수합니다. 따라서 로봇이 막대가 열리는 순간을 추적하고(이 코드를 이미 추가했습니다) 가장 최근에 형성된 막대로 입력하는 것으로 충분합니다. 더 신뢰할 수 있습니다. 그리고 Makar가 처음에 잘못된 입력 알고리즘으로 인해 강제로 수행되었으므로 변태할 필요가 없습니다.

 
Mihail Matkovskij # :

이제서야 눈치챘다

인덱스 1.

MA가 인덱스 0에 있는 동안! 즉, 그녀는 바 전체를 걸으며 열기와 닫기를 넘어설 수 있습니다. 따라서 인덱스 1로도 MA를 만드는 것이 좋습니다.

그런 다음 모든 신호는 형성된 막대에서만 독점적으로 취해지며 로봇은 시가의 신호로 거래 시스템을 완전히 준수합니다.

이것이 신호의 본질입니다.

현재 MA는 이전 양초의 몸체에 들어가고 어떤 양초(UP / DN)에 따라 이것이 신호입니다.

 
MakarFX # :

이것이 신호의 본질입니다.

현재 MA는 이전 양초의 몸체에 들어가고 어떤 양초(UP / DN)에 따라 이것이 신호입니다.

이 경우 MA는 더 낮은 시간 프레임에서 인덱스 1로 취해야 합니다. 그러면 변태될 필요가 없을 것입니다. 이전 시간 프레임의 열기 및 닫기 내에서 더 젊은 시간 프레임에 여러(또는 많은) 막대가 있습니다. 타임 프레임이 왜 발명되었는지 아십니까? 그렇지 않다면 일본 촛대 출현의 역사와 함께 이 문제를 연구하십시오. 요컨대, 요점은 기술적 분석을 단순화하는 것입니다. 그리고 디지털 시대의 도래와 함께 거래 시스템의 이산화도 단순화합니다.

 
Mihail Matkovskij # :

이 경우 MA는 더 낮은 시간 프레임에서 인덱스 1로 취해야 합니다. 그러면 변태될 필요가 없을 것입니다. 이전 시간 프레임의 열기 및 닫기 내에서 더 젊은 시간 프레임에 여러(또는 많은) 막대가 있습니다. 타임 프레임이 왜 발명되었는지 아십니까? 그렇지 않다면 일본 촛대 출현의 역사와 함께 이 문제를 연구하십시오. 요컨대, 요점은 기술적 분석을 단순화하는 것입니다. 그리고 디지털 시대의 도래와 함께 거래 시스템의 이산화도 단순화합니다.

왜 나에게 화를 냈는지 이해가 되지 않는다. 사람은 자신이 보는 방식으로 전략을 작성하고 이 사람은 내가 아닙니다.

나는 방금 그의 질문에 대답했습니다. "같은 바에서 여러 개의 구멍을 피하는 방법은 무엇입니까?"

무엇을 공부해야 하는지 스스로 알고, 모르면 묻습니다. 이제 아무에게도 묻지 않았습니다.

 
MakarFX # :

왜 나에게 화를 냈는지 이해가 되지 않는다. 사람은 자신이 보는 방식으로 전략을 작성하고 이 사람은 내가 아닙니다.

나는 방금 그의 질문에 대답했습니다. "같은 바에서 여러 개의 구멍을 피하는 방법은 무엇입니까?"

무엇을 공부해야 하는지 스스로 알고, 모르면 묻습니다. 이제 나는 아무에게도 묻지 않았다.

기이한. 나는 문제를 파악하려고 노력하고 있고, 당신은 어떤 대결에 대해 이야기하고 있습니다. 저는 프로그래밍 주제에 대해서만 이야기합니다. 무언가가 당신을 아프게한다면 화를 내지 마십시오. 저는 15년 동안 프로그램을 작성해 왔습니다. 당신은 내 코드가 당신의 의견으로 는 올바르게 작동하지 않는다고 말합니다. 그러나 나는 기분이 상하지 않지만 자동 거래 시스템에서 모든 것이 실제로 어떻게 배열되는지 설명하려고합니다. 독점적으로 기술적인 성격의 대화가 나옵니다. 그리고 당신은 에게 몇 가지 불만에 대해 이야기합니다.   ... :)

 
Mihail Matkovskij # :

기이한. 나는 문제를 파악하려고 노력하고 있고, 당신은 어떤 대결에 대해 이야기하고 있습니다. 저는 프로그래밍 주제에 대해서만 이야기합니다. 무언가가 당신을 아프게한다면 화를 내지 마십시오. 저는 15년 동안 프로그램을 작성해 왔습니다. 당신은 내 코드가 당신의 의견으로 는 올바르게 작동하지 않는다고 말합니다. 그러나 나는 기분이 상하지 않지만 자동 거래 시스템에서 모든 것이 실제로 어떻게 배열되는지 설명하려고합니다. 독점적으로 기술적인 성격의 대화가 나옵니다. 그리고 당신은 에게 몇 가지 불만에 대해 이야기합니다.   ... :)

그래서 나는 당신의 코드가 잘못된 이유를 설명했고(이 경우) 당신은 당신이 어드바이저를 다시 실행해야 한다고 말합니다)
 
Mihail Matkovskij # :

저는 15년 동안 프로그램을 작성해 왔습니다.

제안이 있습니다. 당신의 전보를 개인적으로 주십시오.

 
MakarFX # :
그래서 나는 당신의 코드가 잘못된 이유를 설명했고(이 경우) 당신은 당신이 어드바이저를 다시 실행해야 한다고 말합니다)

이 경우 왜곡되지 않도록 다시 작성해야 합니다. 왜냐하면 내가 추가한 코드는 이미 말했듯이 공개 가격의 신호가 있는 로봇을 위해 설계되었기 때문입니다. 나는 그것이 이상하다고 생각했다. 그리고 그 이유를 찾았습니다. 처음부터 모든 것이 올바르게 수행되면 앞으로 특별한 문제가 없을 것입니다. 그러므로 항상 원인을 찾고 그 결과와 싸우지 말아야 합니다.