강제로 설득! 핵심 뉘앙스는 "Expert Advisor의 1회 반복의 한계"입니다. 따라서 이 한도 내에서 표시기는 한 번(첫 번째 호출 시) 계산됩니다! 100% 자신있게 선언합니다. 모든 추가 호출은 시작하지 않고 단순히 필요한 버퍼에서 필요한 값을 가져옵니다. 변경되지 않은 입력 매개변수가 있는 100% 조건(버퍼 및 오프셋 제외). 이 규칙은 하나의 기기 내 계산에 유효합니다. 하지만 iCustom이 다른 TF 및 도구로 전환하더라도 원칙은 유지된다고 생각합니다.
이미 즉시 "강제"..... 모두가 단념했을 것입니다. 문서화되지 않은 또 다른 기능에 감사드립니다 :)
bool bIsFirstTick ;// It is used to catch the Bar Opening.datetime dtCurrentBarOpeningTime ;int init (){
bIsFirstTick =false;
dtCurrentBarOpeningTime =Time[0];return(0);}int start (){// Is this the first tick for the bar
bIsFirstTick =( dtCurrentBarOpeningTime !=Time[0]);if( bIsFirstTick ){
dtCurrentBarOpeningTime =Time[0];}......////// Exit at a Bar Closing price (almost).////// MetaTrader does not provide an onBarClose event so we are not able to close a position/// exactly at Bar Closing. We workaround the problem by closing the position within a time span/// near to the bar closing time. In the cases when there is no any ticks within this period,/// we close the position att he next bar opening price.///int ClosePositionsAtBarClosing (bool bCloseLong ,bool bCloseShort ,datetime dtClosingTimeSpan ){int iOrders =OrdersTotal();bool bIsOpen =false;for(int iOrder =0; iOrder < iOrders ; iOrder ++){OrderSelect( iOrder , SELECT_BY_POS , MODE_TRADES );if((OrderType()==OP_BUY||OrderType()==OP_SELL)&&OrderSymbol()==Symbol()){// There is an open position for this symbol.datetime dtOpeningTime =Time[0]-TimeSeconds(Time[0]);// The opening time of current bardatetime dtClosingTime = dtOpeningTime +Period()*60;// The closing time of current barsdatetime dtCurrentTickTime =TimeCurrent();// The time of current tickif( dtCurrentTickTime > dtClosingTime - dtClosingTimeSpan || bIsFirstTick ){// The current tick is within the closing time span or this is the first tick of the bar.// Code}}}}
1. 예, 대부분의 경우(열림/닫힘 위치에 대한 일반적인 FSB 접근 방식을 고려할 때(바 열림/바 닫힘 시)) - 이것은 필요하지 않습니다. 그러나 좋은 형식의 규칙은 의무적입니다. "처음부터"(바당 한 번이라도) 표시기 계산 - 일반적으로(동의함) 큰 기간 동안 중요한 오버헤드가 아닙니다... 그리고 기간이 분이라면? 하지만 지표가 여전히 각 막대를 계산해야 하는 경우(또는 원하는 경우) 어떻게 될까요? (주문으로 잡을 수 없는(또는 개시 가격이 스탑 레벨보다 낮기 때문에 더 이상 가능하지 않은) 위치의 정교한 포인트?)
변환은 훨씬 더 복잡하지 않습니다. 사실, 일부 코드는 "랩으로" 나타나며 막대를 통과하는 원리는 반대입니다. 사실, 대체로 - 모든 것. 가장 중요한 것은 알고리즘을 그대로 두고(소스 내부에서 쉽게 읽고 식별할 수 있도록) FSB와의 매개변수 호환성을 유지하는 것입니다. 신호 추출을 위한 편리한 메커니즘을 만듭니다. 그리고 표시기를 순수한 시각적 개체(EA에 관심이 없는 사람)에게 사용하기 쉽게 만드십시오. 제 생각에는 그렇습니다.
2. 글쎄, 나는 (동일한) 지표 값을 비교하기 위해 Point/2 변형을 사용하는 것을 제안하지 않았습니다 :) - 나는 단지 상수를 제안했습니다. 문제는 값과 차원입니다(0.000075 - 나쁘지 않습니다. 저는 그렇게 말하지 않았습니다. - 왜 여기에서는 "평소" 50이 아니라 75인지 이해가 가지 않습니다. :)?! "2001년 이후"의 경험은 매우 시사적이며(인수!) 저는 이 가치에 동의할 준비가 되어 있습니다. 그러나 마지막으로 - 0.12345 차원의 따옴표의 경우 이것은 충분하지 않습니다(어떤 의미에서 - 많이 :))). 숫자는 오른쪽으로 최소 1비트 이동해야 합니다(0.0000075). 예를 들어 내 DC에서 이러한 인용문은 이미 일반적인 관행입니다... 나는 여전히 도구에 조정하고 75가 아닌 "10"을 사용하는 것이 좋습니다. :):
f마이크론 = 포인트 * 0.1f
요컨대, 예 - 매개 변수로 설정하도록 제안합니다 (우호적인 실험 후에 모든 것이 제자리에 들어갈 것이라고 생각합니다 (비록 ... 관점이 여러 번 변경된 경우) ...). 그리고 더 많은 분들의 의견을 기다립니다...
3. 업로드한 소스를 다운받았습니다 :-P. 따라서 "비교할 대상"이 있습니다(결과 코드 측면에서). 글쎄, 당신이 더 이상 산만하고 싶지 않더라도 - float를 double로 변환하는 데 성공했습니다!
2. 지금까지 모든 것이 작동하는 것 같습니다(확인한 만큼). 지표 값과 전략 결과 모두에서 차이점이 보입니다(이동 중에) :)
3. 그러나 - 차이점은 우리가 이전에 기대했던 것과는 다릅니다! (나는 어젯밤에 내부 실험을 수행했고 내 "두려움"이 확인되었습니다-변환은 계산의 정확도를 증가시킬 것입니다-그러나 그것은 결과를 치명적으로 바꾸지 않을 것입니다! 네 번째 또는 다섯 번째의 불일치 영역에서 무언가 숫자 ... 그러나 이미 두 번째에서 불일치가 있습니다(예: 모두 동일한 RSI).
그 이유는 다른 데 있습니다!!!
내가 확인한 것:
1. 처음에는 Digits 테마에 하드 바인딩이 있는지 생각했습니다(5개의 문자가 있는 도구가 있습니다. 상기시켜 드리겠습니다) ... 도구 속성 에서 4개의 문자를 강제하는 것은 도움이 되지 않았습니다 (그런데 - 공장!)
2. 지표 자체의 코드... 흠... 글쎄요, 불평할 것이 없습니다! 이제 double은 어디에나 있고, 코드 자체(내가 보기에는)는 변경되지 않았습니다... 코드는 매우 간단합니다(매우 자주 덧셈과 뺄셈만으로 작동함) - 그런 오류는 거기에 누적될 수 없습니다 !!! (자신감이 덜하지만... ;))
3. 마지막 생각(확인 못 하겠음) - 이게 뭐야 :)?! :
바 마감/개방 값 (???) (및 기타, 잠재적으로?)
이 숫자는 어디에서 왔습니까??? :))) (이 "postscripts"는 무엇입니까 :D?)
Частично, видимо, заодно к вопросу получаемых значений (для заполнения оперируемых буферов при расчете индикатора) из искомой функции protected staticfloat[] Price(BasePrice price)
모든 기본 클래스, 메서드 및 속성은 이제 모든 거래 기능 과 함께 이중 값을 반환합니다(저는 지난 6개월 전에 변경했습니다).
RSI의 공식에 차이가 있는 것 같습니다. 그것은 두 번째 기호에 있을 수 없습니다. "하지만 우리는 이미 두 번째 기호에 차이가 있습니다!". :) FSB에서 기존의 MT RSI 공식을 채택하려고 합니다.
"모든 기본 클래스, 메서드 및 속성은 이제 모든 거래 기능과 함께 이중 값을 반환합니다(저는 지난 6개월 전에 변경했습니다)."
아주 잘! 이 논문이 어떤 영향을 미치는지 이해하지 못했습니다.
바의 시가와 바의종가는 ? 위의 예에서.
나는 질문을 반복합니다: 왜 원하는 가격이 견적과 다른가요??? (나는 6,7,8, ... 숫자에 대해 이야기하고 있습니다)
더블 은 그것과 전혀 관련이 없습니다! 따옴표 안의 값은 정규화되어 변수 간 단순 복사의 경우 보존(서로 완전히 동일해야 함)해야 합니다.
지표를 계산할 때 이러한 값이 나타나기 시작하면( 보호된정적부동 소수점[]Price(BasePrice price) 견적 값을 기반으로 계산을 위한 버퍼가 채워질 때) 목표에 가깝습니다(이상하게 보일 수 있음). 즉. 다른 소스처럼(이전 float 외에) "약간" 비정규화된 데이터 :)
그러나 원래 값과 "차후 배포"에 불일치가 있었습니까? 여전히 두 배...)
아직 .... 모든 문제는 부정확성에서 비롯됩니다. :)
강제로 설득! 핵심 뉘앙스는 "Expert Advisor의 1회 반복의 한계"입니다. 따라서 이 한도 내에서 표시기는 한 번(첫 번째 호출 시) 계산됩니다! 100% 자신있게 선언합니다. 모든 추가 호출은 시작하지 않고 단순히 필요한 버퍼에서 필요한 값을 가져옵니다. 변경되지 않은 입력 매개변수가 있는 100% 조건(버퍼 및 오프셋 제외). 이 규칙은 하나의 기기 내 계산에 유효합니다. 하지만 iCustom이 다른 TF 및 도구로 전환하더라도 원칙은 유지된다고 생각합니다.
이미 즉시 "강제"..... 모두가 단념했을 것입니다. 문서화되지 않은 또 다른 기능에 감사드립니다 :)
FSB__Bar_Opening_Bar_Closing.mql4 v0.0.2 베타
Bar Opening 시 시장 진입
Bar Closing에서 나가기(닫기 또는 다음 열릴 때까지 10초)
** 이것은 진입/출구 지점 을 테스트하기 위한 데모일 뿐입니다. **
코드 조각:
1. 성능에 관하여:
대부분의 경우 모든 틱 에 대해 지표를 다시 계산할 필요가 없습니다. (참고 - "이전 바 값 사용".) 지표는 "바 열림" 또는 "바 닫힘"에서 계산되어야 합니다.
2. 마이크론:
나는 거래 결정을 위해 가격을 비교할 때 fMicron = Point/2 를 사용합니다. 그러나 이것은 지표에 적용되지 않습니다. 예. USD/JPY 포인트 = 0.01; f마이크론 = 0.005.
0.000075는 수년간 많은 테스트를 거친 결과입니다. 저는 2001년에 FSB 작업을 시작했습니다. :) 물론 아무 의미가 없습니다. 나는 그것에 대해 여러 번 생각을 바꿨다.
**편집: MT는 이것을 사용자에게 제공합니다. 아마도 EA 전문가는 EA에서 사용하는 것을 말할 수 있습니다.
**edit2: 실험을 위해 이 매개변수를 구성 파일에 넣겠습니다.
3. 각 FSB 버전에 대한 다운로드를 위한 원본 표시기 소스 코드 제공을 시작하겠습니다. 그런 경우에 작은 변화가 있을 때마다 웹사이트를 업데이트할 필요가 없습니다.
float 을 double 로 변경하기 시작했습니다 . 오늘 저녁이나 내일 곧 이 버전을 게시하겠습니다. 그 후에 우리는 그것을 철저히 테스트해야 합니다. MQL로 작성하기 전에 몇 가지 문제/기능을 수정하기 위해 각 지표별로 전달해야 합니다.
1. 예, 대부분의 경우(열림/닫힘 위치에 대한 일반적인 FSB 접근 방식을 고려할 때(바 열림/바 닫힘 시)) - 이것은 필요하지 않습니다. 그러나 좋은 형식의 규칙은 의무적입니다. "처음부터"(바당 한 번이라도) 표시기 계산 - 일반적으로(동의함) 큰 기간 동안 중요한 오버헤드가 아닙니다... 그리고 기간이 분이라면? 하지만 지표가 여전히 각 막대를 계산해야 하는 경우(또는 원하는 경우) 어떻게 될까요? (주문으로 잡을 수 없는(또는 개시 가격이 스탑 레벨보다 낮기 때문에 더 이상 가능하지 않은) 위치의 정교한 포인트?)
변환은 훨씬 더 복잡하지 않습니다. 사실, 일부 코드는 "랩으로" 나타나며 막대를 통과하는 원리는 반대입니다. 사실, 대체로 - 모든 것. 가장 중요한 것은 알고리즘을 그대로 두고(소스 내부에서 쉽게 읽고 식별할 수 있도록) FSB와의 매개변수 호환성을 유지하는 것입니다. 신호 추출을 위한 편리한 메커니즘을 만듭니다. 그리고 표시기를 순수한 시각적 개체(EA에 관심이 없는 사람)에게 사용하기 쉽게 만드십시오. 제 생각에는 그렇습니다.
2. 글쎄, 나는 (동일한) 지표 값을 비교하기 위해 Point/2 변형을 사용하는 것을 제안하지 않았습니다 :) - 나는 단지 상수를 제안했습니다. 문제는 값과 차원입니다(0.000075 - 나쁘지 않습니다. 저는 그렇게 말하지 않았습니다. - 왜 여기에서는 "평소" 50이 아니라 75인지 이해가 가지 않습니다. :)?! "2001년 이후"의 경험은 매우 시사적이며(인수!) 저는 이 가치에 동의할 준비가 되어 있습니다. 그러나 마지막으로 - 0.12345 차원의 따옴표의 경우 이것은 충분하지 않습니다(어떤 의미에서 - 많이 :))). 숫자는 오른쪽으로 최소 1비트 이동해야 합니다(0.0000075). 예를 들어 내 DC에서 이러한 인용문은 이미 일반적인 관행입니다... 나는 여전히 도구에 조정하고 75가 아닌 "10"을 사용하는 것이 좋습니다. :):
f마이크론 = 포인트 * 0.1f
요컨대, 예 - 매개 변수로 설정하도록 제안합니다 (우호적인 실험 후에 모든 것이 제자리에 들어갈 것이라고 생각합니다 (비록 ... 관점이 여러 번 변경된 경우) ...). 그리고 더 많은 분들의 의견을 기다립니다...
3. 업로드한 소스를 다운받았습니다 :-P. 따라서 "비교할 대상"이 있습니다(결과 코드 측면에서). 글쎄, 당신이 더 이상 산만하고 싶지 않더라도 - float를 double로 변환하는 데 성공했습니다!
(RSI로 테스트하는 방법은 무엇입니까? ;) 손이 닿을 수 있다면?)
나는 최고가 100 > 마이크론 > 50이라는 것을 알았습니다. 그래서 75를 택했습니다. 그것은 내 중개인을 위한 것이었습니다: 포인트 = 0.0001.
그러나 중개인이 0.00001에서 견적을 시작했다는 것이 맞습니다.
해봅시다: 마이크론 = Math.Min(포인트 * 0.75, 0.000075)
지금부터 3시간동안 변환으로 마무리 했으면 좋겠습니다. 테스트를 위해 여기에 프로그램을 넣을 것입니다.
변환된 지표 소스 코드도 업로드하겠습니다.
모든 지표와 매개변수는 이중 숫자입니다.
미크론 = 0.000075
마지막 FSB v2.8.3.3 Beta와 함께 폴더에 exe를 넣습니다. 두 프로그램 모두 동일한 데이터와 전략을 공유합니다. 비교할 때 편리합니다. 지표 값에 주의하십시오. 거의 모든 지표와 다른 파일의 절반이 변경되었습니다.
전체 정밀도를 보려면 차트에서 F12 키를 누르거나 명령 콘솔(ind ###)을 사용하십시오.
모든 문제를 보고하십시오. 이제 지표에 대한 변경을 요청할 때입니다. MT 통합 작업을 계속하려면 먼저 수정해야 합니다.
좋은 아침!
Miroslav, 지금 매우 제한된 시간... 너무 빨리:
1. 신속한 송금 감사합니다(float to double)! 좋아요 !
2. 지금까지 모든 것이 작동하는 것 같습니다(확인한 만큼). 지표 값과 전략 결과 모두에서 차이점이 보입니다(이동 중에) :)
3. 그러나 - 차이점은 우리가 이전에 기대했던 것과는 다릅니다! (나는 어젯밤에 내부 실험을 수행했고 내 "두려움"이 확인되었습니다-변환은 계산의 정확도를 증가시킬 것입니다-그러나 그것은 결과를 치명적으로 바꾸지 않을 것입니다! 네 번째 또는 다섯 번째의 불일치 영역에서 무언가 숫자 ... 그러나 이미 두 번째에서 불일치가 있습니다(예: 모두 동일한 RSI).
그 이유는 다른 데 있습니다!!!
내가 확인한 것:
1. 처음에는 Digits 테마에 하드 바인딩이 있는지 생각했습니다(5개의 문자가 있는 도구가 있습니다. 상기시켜 드리겠습니다) ... 도구 속성 에서 4개의 문자를 강제하는 것은 도움이 되지 않았습니다 (그런데 - 공장!)
2. 지표 자체의 코드... 흠... 글쎄요, 불평할 것이 없습니다! 이제 double은 어디에나 있고, 코드 자체(내가 보기에는)는 변경되지 않았습니다... 코드는 매우 간단합니다(매우 자주 덧셈과 뺄셈만으로 작동함) - 그런 오류는 거기에 누적될 수 없습니다 !!! (자신감이 덜하지만... ;))
3. 마지막 생각(확인 못 하겠음) - 이게 뭐야 :)?! :
바 마감/개방 값 (???) (및 기타, 잠재적으로?)
이 숫자는 어디에서 왔습니까??? :))) (이 "postscripts"는 무엇입니까 :D?)
내가 이해하는 것처럼 여기 어딘가에서(Bar Closing.cs):
결과적으로 내 첫 번째 작업 가정은 (어쩌면) 이것이 사실입니까? ("잘못된"(또는 "정확한", 하지만 정확히 이와 같은 이유는 무엇입니까?) 함수에서 따옴표 값 반환?)
부분적으로, 분명히 동시에 원하는 기능에서 얻은 값(표시기를 계산할 때 작동 중인 버퍼를 채우기 위해)에 대한 질문 protected static float [ ] Price ( BasePrice price )
일반적으로 Miroslav - "공은 당신 편입니다" :). 지금까지 내가 전송한 귀하의 지표 코드는 MT 지표와 값 측면에서 완벽하게 호환된다는 것을 알 수 있습니다.
동일한 막대, 첫 번째 지표는 변환이고 두 번째 지표는 MT에 고유합니다.
생각, 제안??? (6시간 후에 갈게)
Частично, видимо, заодно к вопросу получаемых значений (для заполнения оперируемых буферов при расчете индикатора) из искомой функции protected static float [ ] Price ( BasePrice price )
모든 기본 클래스, 메서드 및 속성은 이제 모든 거래 기능 과 함께 이중 값을 반환합니다(저는 지난 6개월 전에 변경했습니다).
RSI의 공식에 차이가 있는 것 같습니다. 그것은 두 번째 기호에 있을 수 없습니다. "하지만 우리는 이미 두 번째 기호에 차이가 있습니다!". :) FSB에서 기존의 MT RSI 공식을 채택하려고 합니다.
**편집하다:
이미 수정:
기본 매개변수: RSI(종가, 14, 평활화) == MT RSI
곧 다운로드할 프로그램입니다.
Miroslav - 예, 수식에는 차이가 없습니다. RSI 논의의 맨 처음에 이미 말했듯이, 당신은 EXTRA 평균화 주기를 사용합니다. :).
일반적으로 마지막 주어진 코드로 판단하면 모든 것이 제자리에 놓 였습니다(이제 RSI는 일반적으로 다른 평균 모드를 계산합니다) :)! 야후!
(이전에 저장한 표시기 코드에는 이미 이 변경 사항이 포함되어 있습니다. ;) - 이를 확인하려면 다음 매개변수를 사용하여 fsbRSI를 호출하는 것으로 충분합니다.
indLogic = 신경 안 써
maMethod = 2 (! MT 측면에서 중요한 MODE_SMMA)
basePrice = 0(MT 기준 PRICE_CLOSE)
iPeriod = 14
fLevel = 중요하지 않음
iPrvs = 중요하지 않음
기본 상대 강도 지수 (MT와 함께 제공)와 결과의 정확한 일치를 얻으십시오.
그러나 fsbRSI 및 iRSI는 FSB와 동일 하지 않습니다 .
따라서 주요 문제로 돌아가십시오 .
"모든 기본 클래스, 메서드 및 속성은 이제 모든 거래 기능과 함께 이중 값을 반환합니다(저는 지난 6개월 전에 변경했습니다)."
아주 잘! 이 논문이 어떤 영향을 미치는지 이해하지 못했습니다.
바의 시가와 바의 종가는 ? 위의 예에서.
나는 질문을 반복합니다: 왜 원하는 가격이 견적과 다른가요??? (나는 6,7,8, ... 숫자에 대해 이야기하고 있습니다)
더블 은 그것과 전혀 관련이 없습니다! 따옴표 안의 값은 정규화되어 변수 간 단순 복사의 경우 보존(서로 완전히 동일해야 함)해야 합니다.
지표를 계산할 때 이러한 값이 나타나기 시작하면( 보호된 정적 부동 소수점 [ ] Price ( BasePrice price ) 견적 값을 기반으로 계산을 위한 버퍼가 채워질 때) 목표에 가깝습니다(이상하게 보일 수 있음). 즉. 다른 소스처럼(이전 float 외에) "약간" 비정규화된 데이터 :)
일부 지표를 MT의 표준 지표처럼 보이도록 약간 변경했습니다.
변경된 FSB 표시기:
RSI
RSI의 발진기
RSI MA 오실레이터
볼린저 밴드
표준 편차
확률론
다음 지표에는 차이가 있습니다.
기세
시장 촉진 지수
다른:
MT 이동 평균 오실레이터 == FSB MACD 히스토그램
MT 모멘텀 == FSB 변화율
상대 활력 지수 - FSB에 포함되지 않음
이제 FSB와 MT 지표는 어느 정도 같아야 합니다.
할 것:
스토캐스틱 - 신호 수정
시장 촉진 지수 - 공식 개정;
FSB에 포함될 MT와 같은 모멘텀 - "모멘텀 MT"
FSB에 "상대 활력 지수" 포함.