문제는 0 막대, 즉 현재 막대에 액세스하는 것입니다. 새 막대의 시작을 결정하는 것이 필요합니다. 이전 답변에서 제공했으며 새 막대의 첫 번째 눈금에서만 모든 비교를 수행합니다. 그리고 인덱싱을 변경합니다. 마지막으로 닫힌 막대가 iHighest에 속하지 않아야 합니다. 이제 각 눈금에서 현재 나타나는 막대에 액세스하고 있으며 결과가 가장 이상할 것입니다.
문제는 0 막대, 즉 현재 막대에 액세스하는 것입니다. 새 막대의 시작을 결정하는 것이 필요합니다. 이전 답변에서 제공했으며 새 막대의 첫 번째 눈금에서만 모든 비교를 수행합니다. 그리고 인덱싱을 변경합니다. 마지막으로 닫힌 막대가 iHighest에 속하지 않아야 합니다. 이제 각 눈금에서 현재 나타나는 막대에 액세스하고 있으며 결과가 가장 이상할 것입니다.
감사합니다. 도움이 된 것 같습니다 :) 비록 똑같이 했고 작동하지 않았다고 맹세할 준비가 되었지만...
OnTimer()를 제안했지만 어떤 이유로 그는 나와 협력하고 싶어하지 않습니다. 모든 도움을 연구했지만 더 이해하기 쉬운 설명이나 예를 찾지 못한 나는 막다른 골목에 이르렀습니다.
즉, 참고서에 다 나와있지만 이 진부한 코드도 실행되지 않습니다... 이 프로그램을 인터넷 검색해보니 테스트에서 OnTimer()가 작동하지 않는다는 내용을 발견했습니다.
방법. 이 순간은 mql5의 출시와 함께 제거된 것처럼 보이지만. 알아낼 수 있도록 도와주세요 :) 감사합니다!
즉, 테스터의 틱이 초당 1회보다 더 자주 발생하면 여분의 틱은 건너뛰고 덜 자주 발생하면 1초의 배수가 있는 시리즈가 생성됩니다. 이 시간은 TimeCurrStruct 구조에 있으며 모든 모드에서 내 메인 클래스는 이 구조에서만 시간이 걸립니다. 제 생각에는 이것이 이 버그를 물리칠 수 있는 유일한 방법입니다. 다음은 기능입니다. 초과분을 제거하고 고기만))
voidOnTimer ()
{
string msg;
if (!IsRunOnTester())
{
TimeToStruct ( TimeCurrent (), TimeCurrStruct);
SmartDsp.ReceiveTick(TimeCurrStruct); // основной метод робота, в него передается структура со временем
}
else
{
SmartDsp.ReceiveTick(TimeCurrStruct);
}
}
안녕하세요 초보자 문제가 있습니다 ...
예를 들어, 시스템이 마지막 막대의 종가를 특정 기간 동안의 고점 및 저점과 비교하도록 강제할 수는 없습니다.
마지막 20바. 내가 무엇을 잘못하고 있지?
Alert를 통해 확인해보니 이해가 안가는 이유로 테스터는 맨 마지막 틱부터 계산해서 최대값을 주는데 이 값을 줍니다
진드기가있는만큼 주문이 열리지 않습니다.
그리고 두 번째 문제는 EA가 다음 바가 열릴 때까지 기다리게 하는 방법입니다(30m 주기)? 제어점으로 테스트하면 모든 것이 정상이지만 틱으로 테스트하면
그런 다음 어드바이저는 예를 들어 손절매로 마감된 동일한 바에서 즉시 열립니다...
틱 여부에 관계없이 어떻게 거래를 마감할 수 있습니까? 예를 들어, 30m의 기간에 바가 끝나기 5초 전에 주문을 종료하고 싶습니다(29.55, 59.55)
그 순간의 모든 데이터를 기반으로 합니다. 이 단계에서 문제는 5초 이내에 틱이 발생하지 않으면 발생하지 않는다는 것입니다.
논리 연산 이 없으면 신호가 수신되지 않고 다음 신호까지 순간이 누락됩니다. 이론상으로는 쓰레기이지만 실제로 테스터에서 다음 신호는
어떤 이유로 몇 초 후에도 나타납니다.
미리 감사드립니다!1. 코드에서 마지막 20개 막대에 대해 아무 것도 보지 못했습니다. 자세히 살펴보겠습니다.
2. 새 막대의 첫 번째 눈금을 결정하는 방법
3. 틱 여부와 상관없이 어떻게 거래를 성사시킬 수 있습니까?
OnTick 작업에서 벗어나 OnTimer 작업, 1초 간격으로 타이머를 설정하고 그 안의 시간을 확인해야 합니다. 타이머는 진드기의 도착에 의존하지 않습니다.
O_o ATP는 다른 것이 무엇인지 몰랐고 터미널은 오류가 있는 곳을 찔렀습니다. 처음으로 치명적인 오류가 발생 했습니다.
그녀에게 침.
물론, 그것은 침을 뱉을 것입니다, 당신은 차원이 2인 배열의 세 번째 요소에 액세스하고 있습니다 - mas [ 2 ]++
Alexey Volchanskiy :
Так у тебя в комменте стоит управляющий символ "\n " - это символ перевода строки. Если его убрать, многострочия не будет.
이건 농담이야. 이제 줄 끝에 주석이 추가되고... 텍스트가 오른쪽으로 이스케이프됩니다. ;-)
좋은 저녁이에요. 텐칸과 킨쥰의 교차점에서 간단한 Expert Advisor 를 쓰려고 합니다. 코드는 다음과 같습니다.
무효 OnTick()
무효 OnTick()
{
TradeSignal_20();
}
int TradeSignal_20()
{
정수 = 0;
if(h_ich==INVALID_HANDLE)
{
h_ich=iIchimoku(Symbol(), 마침표(),IKHtenkansen,IKHkijunsen,IKHsenkouspanb);
리턴(0);
}
또 다른
{
if (CopyBuffer(h_ich,0,0,3,ich1_buffer)<2) return(0); // 텐칸센_라인
if (CopyBuffer(h_ich,1,0,3,ich2_buffer)<2) return(0); // 기준센_라인
if (!ArraySetAsSeries(ich1_buffer,true)) return(0);
if (!ArraySetAsSeries(ich2_buffer,true)) return(0);
}
//--- 조건을 확인하고 sig에 대한 값을 설정합니다.
if (ich1_buffer[1]>ich2_buffer[1]) sig=1;
그렇지 않으면 if(ich1_buffer[1]<ich2_buffer[1]) sig=-1;
그렇지 않으면 시그=0;
if (ich1_buffer[1]>ich2_buffer[1])
if (ich1_buffer[2]<ich2_buffer[2])
Alert(Symbol()+": 구매");
if (ich1_buffer[1]<ich2_buffer[1])
if (ich1_buffer[2]>ich2_buffer[2])
Alert(Symbol()+": 판매");
//--- 거래 신호 반환
반환(시그);
}
//+----------------------------------------------- --------------------+
경고가 지속적으로 호출되지 않고 한 번만 호출되도록 하는 방법은 무엇입니까?
1. 코드에서 마지막 20개 막대에 대해 아무 것도 보지 못했습니다. 자세히 살펴보겠습니다.
2. 새 막대의 첫 번째 눈금을 결정하는 방법
3. 틱 여부와 상관없이 어떻게 거래를 성사시킬 수 있습니까?
OnTick 작업에서 벗어나 OnTimer 작업, 1초 간격으로 타이머를 설정하고 그 안의 시간을 확인해야 합니다. 타이머는 진드기의 도착에 의존하지 않습니다.
좋은 저녁이에요. 텐칸과 킨쥰의 교차점에서 간단한 Expert Advisor 를 쓰려고 합니다. 코드는 다음과 같습니다.
무효 OnTick()
무효 OnTick()
{
TradeSignal_20();
경고가 지속적으로 호출되지 않고 한 번만 호출되도록 하는 방법은 무엇입니까?그렇다면 종가 를 지난 20개 막대의 최고가와 어떻게 비교할 수 있습니까? 그리고 마지막 가격이 20바의 최대값과 같거나 크면 열리라는 신호가 있습니다.
문제는 0 막대, 즉 현재 막대에 액세스하는 것입니다. 새 막대의 시작을 결정하는 것이 필요합니다. 이전 답변에서 제공했으며 새 막대의 첫 번째 눈금에서만 모든 비교를 수행합니다. 그리고 인덱싱을 변경합니다. 마지막으로 닫힌 막대가 iHighest에 속하지 않아야 합니다. 이제 각 눈금에서 현재 나타나는 막대에 액세스하고 있으며 결과가 가장 이상할 것입니다.
double HIGHEST = High[iHighest(Symbol(),0,MODE_HIGH,20, 2 )]; if(Close[1] > SMMA && Close[1] > BB_UP && Close[1] >= HIGHEST) { ***********
우리는 코드를 본다
문제는 0 막대, 즉 현재 막대에 액세스하는 것입니다. 새 막대의 시작을 결정하는 것이 필요합니다. 이전 답변에서 제공했으며 새 막대의 첫 번째 눈금에서만 모든 비교를 수행합니다. 그리고 인덱싱을 변경합니다. 마지막으로 닫힌 막대가 iHighest에 속하지 않아야 합니다. 이제 각 눈금에서 현재 나타나는 막대에 액세스하고 있으며 결과가 가장 이상할 것입니다.
감사합니다. 도움이 된 것 같습니다 :) 비록 똑같이 했고 작동하지 않았다고 맹세할 준비가 되었지만...
OnTimer()를 제안했지만 어떤 이유로 그는 나와 협력하고 싶어하지 않습니다. 모든 도움을 연구했지만 더 이해하기 쉬운 설명이나 예를 찾지 못한 나는 막다른 골목에 이르렀습니다.
즉, 참고서에 다 나와있지만 이 진부한 코드도 실행되지 않습니다... 이 프로그램을 인터넷 검색해보니 테스트에서 OnTimer()가 작동하지 않는다는 내용을 발견했습니다.
방법. 이 순간은 mql5의 출시와 함께 제거된 것처럼 보이지만. 알아낼 수 있도록 도와주세요 :) 감사합니다!
Imminence :
이 프로그램을 인터넷 검색해보니 OnTimer()가 테스트 모드에서 작동하지 않는다는 사실을 알게 되었습니다. 이 순간은 mql5의 출시로 제거된 것처럼 보이지만. 알아낼 수 있도록 도와주세요 :) 감사합니다!
맞습니다. 테스터의 MT4에서 타이머는 쟁기질하지 않으며 이것은 문서화되지 않았습니다! 나는 서비스 데스크에 편지를 썼고 그들은 결코 이것을하지 않을 것이라고 말했습니다. OnTick에서 OnTimer 호출을 통해 나왔습니다. 내 타이머는 1초로 설정되어 있습니다.
즉, 테스터의 틱이 초당 1회보다 더 자주 발생하면 여분의 틱은 건너뛰고 덜 자주 발생하면 1초의 배수가 있는 시리즈가 생성됩니다. 이 시간은 TimeCurrStruct 구조에 있으며 모든 모드에서 내 메인 클래스는 이 구조에서만 시간이 걸립니다. 제 생각에는 이것이 이 버그를 물리칠 수 있는 유일한 방법입니다. 다음은 기능입니다. 초과분을 제거하고 고기만))
종교는 SRC 버튼을 누르는 것을 허용하지 않습니까?