나는 때때로 인디케이터나 어드바이저의 입력 매개변수에 잘못된 시간 프레임을 쉽게 지정할 수 있다는 것을 발견한 후 이 함수를 작성했습니다. 이는 정수 분과 같습니다. 예를 들어, 나는 60시간 대신에 50시간을 입력했습니다. 음... 일종의 놓쳤습니다. 따라서 iRSI() 함수는 잘못된 시간 프레임에 대해 0을 반환합니다. 다른 기능에 대해서는 확인하지 않았기 때문에 아무 말도 하지 않겠습니다. 그리고 부주의로 인한 내 자신의 실수로 인한 성가신 오해를 피하기 위해이 기능을 "바보"에 대한 기본 보호 기능으로 작성했습니다. 올바른 시간 프레임과 일치하는 "가장 가까운" 입력 매개변수를 조정하고 해당 값을 반환합니다.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 02.03.2008 |//| Описание : Корректирует таймфрейм под ближайший поддерживаемый МТ4. |//+----------------------------------------------------------------------------+//| Параметры: |//| TimeFrame - таймфрейм (количество секунд) (0 - текущий ТФ) |//+----------------------------------------------------------------------------+intCorrectTF(intTimeFrame=0){if(TimeFrame==0)TimeFrame=Period();
if(TimeFrame< PERIOD_M5)return(PERIOD_M1);
if(TimeFrame>=PERIOD_M5 && TimeFrame<PERIOD_M15)return(PERIOD_M5);
if(TimeFrame>=PERIOD_M15 && TimeFrame<PERIOD_M30)return(PERIOD_M15);
if(TimeFrame>=PERIOD_M30 && TimeFrame<PERIOD_H1)return(PERIOD_M30);
if(TimeFrame>=PERIOD_H1 && TimeFrame<PERIOD_H4)return(PERIOD_H1);
if(TimeFrame>=PERIOD_H4 && TimeFrame<PERIOD_D1)return(PERIOD_H4);
if(TimeFrame>=PERIOD_D1 && TimeFrame<PERIOD_W1)return(PERIOD_D1);
if(TimeFrame>=PERIOD_W1 && TimeFrame<PERIOD_MN1)return(PERIOD_W1);
if(TimeFrame>=PERIOD_MN1)return(PERIOD_MN1);
}
이 함수는 숫자로 분기의 시작 날짜를 반환합니다. 예를 들어, 지금이 2008년 8월 27일이면 현재 분기의 시작 날짜는 2008년 7월 1일입니다. 이 함수는 현재 매개변수를 기준으로 한 분기의 수인 하나의 매개변수만 사용합니다. 예를 들어, 0 은 현재 분기, 1 은 다음 분기, -1 은 이전 분기입니다. 즉, 분기의 양수는 미래의 날짜를 요청하고 0과 음수는 과거의 날짜를 요청합니다. 반환 값은 1970년 1월 1일 00:00 이후 경과된 시간(초)입니다.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 12.05.2008 |//| Описание : Возвращает дату начала квартала |//+----------------------------------------------------------------------------+//| Параметры: |//| (-2 - позапрошлый) |//| (-1 - прошлый) |//| nq - номер квартала ( 0 - текущий) |//| ( 1 - следующий) |//| ( 2 - последующий) |//+----------------------------------------------------------------------------+datetimeDateBeginQuarter(intnq=0){intye=Year()-MathFloor(nq/4);
nq=MathMod(nq, 4);
intmo=Month()-MathMod(Month()+2, 3)+3*nq;
if(mo<1){mo+=12;
ye--;
}if(mo>12){mo-=12;
ye++;
}return(StrToTime(ye+"."+mo+".01"));
}
PS Attached는 DateBeginQuarter() 함수를 테스트하기 위한 스크립트입니다.
이 함수는 해당 주의 시작 날짜(월요일 날짜)를 숫자로 반환합니다. 예를 들어 지금이 2008년 8월 29일이면 현재 주의 시작 날짜는 2008년 8월 25일이 됩니다. 이 함수는 현재 매개변수에 상대적인 주의 수인 하나의 매개변수만 사용합니다. 예를 들어, 0 은 현재 주, 1 은 다음 주, -1 은 이전 주입니다. 즉, 양수 주 번호는 미래의 날짜를 요청하고 과거의 0 및 음수 날짜를 요청합니다. 반환 값은 1970년 1월 1일 00:00 이후 경과된 시간(초)입니다.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 13.05.2008 |//| Описание : Возвращает дату понедельника по номеру недели |//+----------------------------------------------------------------------------+//| Параметры: |//| (-2 - предпредыдущая неделя) |//| (-1 - предыдущая неделя) |//| nn - номер недели ( 0 - текущая неделя) |//| ( 1 - следующая неделя) |//| ( 2 - последующая неделя) |//+----------------------------------------------------------------------------+datetimeDateOfMonday(intnn=0){datetimedt=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE));
while(TimeDayOfWeek(dt)!=1)dt-=24*60*60;
dt+=nn*7*24*60*60;
return(dt);
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 07.08.2008 |//| Описание : Возвращает элемент ряда Фибоначчи по его порядковому номеру. |//+----------------------------------------------------------------------------+//| Параметры: |//| n - номер элемента ряда |//+----------------------------------------------------------------------------+intFibonacci(intn){inta=0, b=0, i=1, s=0;
if(n==1)s=1;
if(n>1){s=1;
while(i<n){i++;
a=b;
b=s;
s=a+b;
}}return(s);
}
이 함수는 식별자로 MA 방법(이동 평균)의 이름을 반환합니다. 이 기능은 댓글, 지표의 메시지, 조언자에서 사용하기 편리합니다.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 01.09.2005 |//| Описание : Возвращает наименование метода МА. |//+----------------------------------------------------------------------------+//| Параметры: |//| mm - идентификатор метода МА |//+----------------------------------------------------------------------------+stringGetNameMA(intmm){switch(mm){caseMODE_SMA : return("SMA");
caseMODE_EMA : return("EMA");
caseMODE_SMMA: return("SMMA");
caseMODE_LWMA: return("LWMA");
default : return("Unknown Method");
}}
이 함수는 숫자로 주어진 두 막대 사이의 가격 차이를 반환합니다. 이 기능을 개발한 목적은 코스 이동의 크기와 방향을 결정하는 것이었습니다. GetPriceDiffInPoint() 함수는 고려할 막대의 피벗 포인트(Open 또는 High 또는 Low 또는 Close)를 독립적으로 결정합니다. 이 함수는 다음과 같은 선택적 매개변수를 허용합니다.
sy - 도구 이름. "" 또는 NULL 은 현재 문자입니다. 기본값은 NULL 입니다.
tf - 기간. 기본값 0 은 현재 문자입니다.
n2 - 왼쪽 막대의 번호입니다. 기본값은 2 입니다.
n1 - 오른쪽 막대의 번호입니다. 기본값은 1 입니다.
반환 값:
양수 - 막대 N2와 N1 사이에 비율이 증가했습니다.
음수 - 막대 N2와 N1 사이에 비율이 감소했습니다.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 01.09.2005 |//| Описание : Возвращает ценовую разницу в пунктах между двумя барами. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" или NULL - текущий символ) |//| tf - таймфрейм ( 0 - текущий таймфрейм) |//| n2 - номер левого бара ( 2 - второй бар) |//| n1 - номер правого бара ( 1 - первый бар) |//| Возвращаемое значение: |//| положительное - между барами N2 и N1 был рост курса |//| отрицательное - между барами N2 и N1 было снижение курса |//+----------------------------------------------------------------------------+intGetPriceDiffInPoint(stringsy="0", inttf=0, intn2=2, intn1=1){if(sy=="" || sy=="0")sy=Symbol();
doublep=MarketInfo(sy, MODE_POINT);
intd=MarketInfo(sy, MODE_DIGITS);
intdd=0, k=iBars(sy, tf);
if(n1>k || n2>k)Print("GetPriceDiffInPoint(): Недостаточно баров для ",sy,"",GetNameTF(tf));
else{if(n1>0 && n2>0){intd1=NormalizeDouble((iHigh(sy, tf, n1)-iLow(sy, tf, n2))/p, d);
intd2=NormalizeDouble((iLow(sy, tf, n1)-iHigh(sy, tf, n2))/p, d);
if(MathAbs(d1)>MathAbs(d2))dd=d1;
if(MathAbs(d1)<MathAbs(d2))dd=d2;
if(MathAbs(d1)==MathAbs(d2)){if(iOpen(sy, tf, n2)>iClose(sy, tf, n1))dd=d2; elsedd=d1;
}}}return(dd);
}
GetNearestDownFractal() 함수 사용의 예.
추신. GetNearestUpFractal() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.
올바른TF() 함수.
나는 때때로 인디케이터나 어드바이저의 입력 매개변수에 잘못된 시간 프레임을 쉽게 지정할 수 있다는 것을 발견한 후 이 함수를 작성했습니다. 이는 정수 분과 같습니다. 예를 들어, 나는 60시간 대신에 50시간을 입력했습니다. 음... 일종의 놓쳤습니다. 따라서 iRSI() 함수는 잘못된 시간 프레임에 대해 0을 반환합니다. 다른 기능에 대해서는 확인하지 않았기 때문에 아무 말도 하지 않겠습니다. 그리고 부주의로 인한 내 자신의 실수로 인한 성가신 오해를 피하기 위해이 기능을 "바보"에 대한 기본 보호 기능으로 작성했습니다. 올바른 시간 프레임과 일치하는 "가장 가까운" 입력 매개변수를 조정하고 해당 값을 반환합니다.
추신. 첨부된 것은 CorrectTF() 함수를 테스트하기 위한 스크립트입니다.DateBeginQuarter() 함수.
이 함수는 숫자로 분기의 시작 날짜를 반환합니다. 예를 들어, 지금이 2008년 8월 27일이면 현재 분기의 시작 날짜는 2008년 7월 1일입니다. 이 함수는 현재 매개변수를 기준으로 한 분기의 수인 하나의 매개변수만 사용합니다. 예를 들어, 0 은 현재 분기, 1 은 다음 분기, -1 은 이전 분기입니다. 즉, 분기의 양수는 미래의 날짜를 요청하고 0과 음수는 과거의 날짜를 요청합니다. 반환 값은 1970년 1월 1일 00:00 이후 경과된 시간(초)입니다.
PS Attached는 DateBeginQuarter() 함수를 테스트하기 위한 스크립트입니다.
DateOfMonday() 함수.
이 함수는 해당 주의 시작 날짜(월요일 날짜)를 숫자로 반환합니다. 예를 들어 지금이 2008년 8월 29일이면 현재 주의 시작 날짜는 2008년 8월 25일이 됩니다. 이 함수는 현재 매개변수에 상대적인 주의 수인 하나의 매개변수만 사용합니다. 예를 들어, 0 은 현재 주, 1 은 다음 주, -1 은 이전 주입니다. 즉, 양수 주 번호는 미래의 날짜를 요청하고 과거의 0 및 음수 날짜를 요청합니다. 반환 값은 1970년 1월 1일 00:00 이후 경과된 시간(초)입니다.
PS Attached는 DateOfMonday() 함수를 테스트하기 위한 스크립트입니다.
피보나치() 함수.
이 함수는 일련 번호로 피보나치 수열의 요소를 반환합니다.
PS Attached는 Fibonacci() 함수를 테스트하기 위한 스크립트입니다.
GetNameMA() 함수.
이 함수는 식별자로 MA 방법(이동 평균)의 이름을 반환합니다. 이 기능은 댓글, 지표의 메시지, 조언자에서 사용하기 편리합니다.
GetNameMA() 함수.
이 함수는 식별자로 MA 방법(이동 평균)의 이름을 반환합니다. 이 기능은 댓글, 지표의 메시지, 조언자에서 사용하기 편리합니다.
쪼꼬미라고 하지마세요....
쪼꼬미로 받아들이지 마세요....
안 돼요... 감사합니다! 결정된!
안녕하세요 !
특급이 조금 수송하는 데 도움이됩니다.
그것은 주문의 감염을 열고 조건에 따라이 팩을 닫지 않습니다.
저것들. 거래가 하나뿐이면 그는 포즈에서 나올 것이고, 거래가 2개라면 그는 실속할 것입니다.
GetPriceDiffInPoint() 함수.
이 함수는 숫자로 주어진 두 막대 사이의 가격 차이를 반환합니다. 이 기능을 개발한 목적은 코스 이동의 크기와 방향을 결정하는 것이었습니다. GetPriceDiffInPoint() 함수는 고려할 막대의 피벗 포인트(Open 또는 High 또는 Low 또는 Close)를 독립적으로 결정합니다. 이 함수는 다음과 같은 선택적 매개변수를 허용합니다.
반환 값: