Bu işlevi, bazen bir göstergenin veya danışmanın giriş parametrelerinde, tam bir dakika sayısına eşit olan yanlış zaman dilimini kolayca belirleyebildiğimi keşfettikten sonra yazdım. Örneğin, saat için 60 yerine 50 yazdım. Şey... bir nevi kaçırdım. Böylece, iRSI() işlevinin yanlış zaman çerçevesi için sıfır döndürdüğü ortaya çıktı. Diğer işlevler hakkında hiçbir şey söylemeyeceğim çünkü kontrol etmedim. Ve dikkatsizlikten kaynaklanan kendi hatalarımdan kaynaklanan can sıkıcı yanlış anlamaları önlemek için, bu işlevi "aptallara" karşı temel bir koruma olarak yazdım. Girdi parametresini "en yakın" doğru zaman dilimine göre ayarlar ve değerini döndürür.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. 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);
}
not. Ekli, CorrectTF() işlevini test etmek için bir komut dosyasıdır.
Bu fonksiyon, çeyreğin başlangıç tarihini numarasına göre döndürür. Örneğin, şimdi 08/27/2008 ise, mevcut çeyreğin başlangıç tarihi 07/01/2008 olacaktır. İşlev yalnızca bir parametre alır - mevcut olana göre çeyreğin sayısı. Örneğin, 0 geçerli çeyrek, 1 sonraki ve -1 önceki çeyrektir. Yani, pozitif çeyrek sayıları gelecekten, sıfır ve negatif sayılar geçmişten tarih isteyecektir. Dönüş değeri, 1 Ocak 1970 00:00'dan bu yana geçen saniye sayısıdır.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. 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 Ekli, DateBeginQuarter() işlevini test etmek için bir komut dosyasıdır.
Bu işlev, numarasına göre haftanın başlangıç tarihini (Pazartesi tarihi) döndürür. Örneğin, şimdi 08/29/2008 ise, mevcut haftanın başlangıç tarihi 08/25/2008 olacaktır. İşlev yalnızca bir parametre alır - geçerli olana göre haftanın sayısı. Örneğin, 0 geçerli hafta, 1 sonraki hafta ve -1 önceki haftadır. Yani, pozitif hafta sayıları gelecekten, sıfır ve negatif olanlar geçmişten tarihler isteyecektir. Dönüş değeri, 1 Ocak 1970 00:00'dan bu yana geçen saniye sayısıdır.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. 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);
}
PS Ekli, DateOfMonday() işlevini test etmek için bir komut dosyasıdır.
Bu fonksiyon, Fibonacci serisinin elemanını seri numarasına göre döndürür.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. 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);
}
PS Ekli, Fibonacci() işlevini test etmek için bir komut dosyasıdır.
Bu işlev, tanımlayıcısına göre MA yönteminin adını (Hareketli Ortalamalar) döndürür. Bu işlev yorumlarda, gösterge mesajlarında, danışmanlarda kullanım için uygundur.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. 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");
}}
Bu işlev, tanımlayıcısına göre MA yönteminin adını (Hareketli Ortalamalar) döndürür. Bu işlev yorumlarda, gösterge mesajlarında, danışmanlarda kullanım için uygundur.
Bunu saçmalık olarak algılamayın....
default : return("Unknown Method");
Sadece tutarlı olacaksan, o zaman sonuna kadar ...
Bu fonksiyon, sayılarına göre verilen iki çubuk arasındaki fiyat farkını döndürür. Bu işlevi geliştirmenin amacı, parkur hareketinin büyüklüğünü ve yönünü belirlemekti. GetPriceDiffInPoint() işlevi, çubukların hangi pivot noktalarının (Açık veya Yüksek veya Düşük veya Kapalı) dikkate alınacağını bağımsız olarak belirler. İşlev, aşağıdaki isteğe bağlı parametreleri kabul eder:
sy - Araç adı. "" veya NULL geçerli karakterdir. Varsayılan değer NULL'dur .
tf - Zaman çerçevesi. Varsayılan değer 0 , geçerli karakterdir.
n2 - Sol çubuğun numarası. Varsayılan değer 2'dir .
n1 - sağ çubuğun numarası. Varsayılan değer 1'dir .
Geri dönüş değeri:
pozitif - N2 ve N1 çubukları arasında oranda bir artış oldu.
negatif - N2 ve N1 çubukları arasında oranda bir düşüş oldu.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. 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() işlevini kullanma örnekleri.
not. GetNearestUpFractal() işlevini test etmek için bir komut dosyası ektedir.
CorrectTF() işlevi.
Bu işlevi, bazen bir göstergenin veya danışmanın giriş parametrelerinde, tam bir dakika sayısına eşit olan yanlış zaman dilimini kolayca belirleyebildiğimi keşfettikten sonra yazdım. Örneğin, saat için 60 yerine 50 yazdım. Şey... bir nevi kaçırdım. Böylece, iRSI() işlevinin yanlış zaman çerçevesi için sıfır döndürdüğü ortaya çıktı. Diğer işlevler hakkında hiçbir şey söylemeyeceğim çünkü kontrol etmedim. Ve dikkatsizlikten kaynaklanan kendi hatalarımdan kaynaklanan can sıkıcı yanlış anlamaları önlemek için, bu işlevi "aptallara" karşı temel bir koruma olarak yazdım. Girdi parametresini "en yakın" doğru zaman dilimine göre ayarlar ve değerini döndürür.
not. Ekli, CorrectTF() işlevini test etmek için bir komut dosyasıdır.DateBeginQuarter() işlevi.
Bu fonksiyon, çeyreğin başlangıç tarihini numarasına göre döndürür. Örneğin, şimdi 08/27/2008 ise, mevcut çeyreğin başlangıç tarihi 07/01/2008 olacaktır. İşlev yalnızca bir parametre alır - mevcut olana göre çeyreğin sayısı. Örneğin, 0 geçerli çeyrek, 1 sonraki ve -1 önceki çeyrektir. Yani, pozitif çeyrek sayıları gelecekten, sıfır ve negatif sayılar geçmişten tarih isteyecektir. Dönüş değeri, 1 Ocak 1970 00:00'dan bu yana geçen saniye sayısıdır.
PS Ekli, DateBeginQuarter() işlevini test etmek için bir komut dosyasıdır.
DateOfMonday() işlevi.
Bu işlev, numarasına göre haftanın başlangıç tarihini (Pazartesi tarihi) döndürür. Örneğin, şimdi 08/29/2008 ise, mevcut haftanın başlangıç tarihi 08/25/2008 olacaktır. İşlev yalnızca bir parametre alır - geçerli olana göre haftanın sayısı. Örneğin, 0 geçerli hafta, 1 sonraki hafta ve -1 önceki haftadır. Yani, pozitif hafta sayıları gelecekten, sıfır ve negatif olanlar geçmişten tarihler isteyecektir. Dönüş değeri, 1 Ocak 1970 00:00'dan bu yana geçen saniye sayısıdır.
PS Ekli, DateOfMonday() işlevini test etmek için bir komut dosyasıdır.
Fibonacci() işlevi.
Bu fonksiyon, Fibonacci serisinin elemanını seri numarasına göre döndürür.
PS Ekli, Fibonacci() işlevini test etmek için bir komut dosyasıdır.
GetNameMA() işlevi.
Bu işlev, tanımlayıcısına göre MA yönteminin adını (Hareketli Ortalamalar) döndürür. Bu işlev yorumlarda, gösterge mesajlarında, danışmanlarda kullanım için uygundur.
GetNameMA() işlevi.
Bu işlev, tanımlayıcısına göre MA yönteminin adını (Hareketli Ortalamalar) döndürür. Bu işlev yorumlarda, gösterge mesajlarında, danışmanlarda kullanım için uygundur.
Bunu saçmalık olarak algılamayın....
Bunu saçmalık olarak algılamayın....
mümkün değil... teşekkürler! Sabit!
Tünaydın !
Deneyimin biraz taşınmasına yardımcı olun.
Siparişlerin enfeksiyonunu açar ve duruma göre bu paketi kapatmaz.
onlar. sadece bir anlaşma varsa, o zaman pozdan çıkar ve eğer 2 anlaşma varsa, o zaman durur.
GetPriceDiffInPoint() işlevi.
Bu fonksiyon, sayılarına göre verilen iki çubuk arasındaki fiyat farkını döndürür. Bu işlevi geliştirmenin amacı, parkur hareketinin büyüklüğünü ve yönünü belirlemekti. GetPriceDiffInPoint() işlevi, çubukların hangi pivot noktalarının (Açık veya Yüksek veya Düşük veya Kapalı) dikkate alınacağını bağımsız olarak belirler. İşlev, aşağıdaki isteğe bağlı parametreleri kabul eder:
Geri dönüş değeri: