Initial commit: MQL5 Scripts Collection (MetaTrader 5)
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 71 KiB |
@@ -0,0 +1,23 @@
|
||||
# 🚀 Unlock the Power of Trading!
|
||||
|
||||
Welcome to this open-source trading project. Here you will find powerful tools to enhance your trading journey. If you find this project useful, please consider starring ⭐, sharing, or donating to support further development!
|
||||
|
||||
---
|
||||
|
||||
**Support the project:**
|
||||
- Star this repository on GitHub
|
||||
- Share it with your trading friends
|
||||
- [Donate here](https://www.paypal.com/donate/?hosted_button_id=YOUR_BUTTON_ID) to help us grow!
|
||||
|
||||
---
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
## Source Files
|
||||
- `keyfinder.mq5`
|
||||
|
||||
---
|
||||
> Made with ❤️ for the trading community.
|
||||
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
@@ -0,0 +1,147 @@
|
||||
//+------------------------------------------------------------------+
|
||||
//| KeyFinder.mq5 |
|
||||
//| Trofimov Pavel |
|
||||
//| trofimovpp@mail.ru |
|
||||
//+------------------------------------------------------------------+
|
||||
#property copyright "Trofimov Pavel"
|
||||
#property link "trofimovpp@mail.ru"
|
||||
#property version "1.00"
|
||||
#property description "Âíèìàíèå! Äàííûé àëãîðèòì èñïîëüçóåò â ðàñ÷åòàõ öèêëû!"
|
||||
#property description "Íàñòîÿòåëüíî ðåêîìåíäóåòñÿ çàäàâàòü äëÿ îáðàáîòêè íå áîëåå 1000 áàðîâ!"
|
||||
#property script_show_inputs
|
||||
//--- input parameters
|
||||
input int MinDimesion=5;//Ìèíèìàëüíàÿ ðàçìåðíîñòü òî÷åê
|
||||
input int MaxBars=300;//Êîëè÷åñòâî îáðàáàòûâàåìûõ áàðîâ
|
||||
//+------------------------------------------------------------------+
|
||||
//| Script program start function |
|
||||
//+------------------------------------------------------------------+
|
||||
void OnStart()
|
||||
{
|
||||
//---
|
||||
//ïðîâåðêà äîñòóïíîñòè èñòîðèè äëÿ óñòàíîâëåííîãî êîëè÷åñòâà áàðîâ
|
||||
int SMaxBars=Bars(Symbol(),0),iMaxBars=MaxBars;
|
||||
if(SMaxBars<MaxBars)
|
||||
{
|
||||
iMaxBars=SMaxBars;
|
||||
Comment("Ïàðàìåòð MaxBars çàäàí ñëèøêîì áîëüøèì."+"\n"+"Äëÿ ðàñ÷åòîâ áóäåò èñïîëüçîâàíî "+IntegerToString(SMaxBars)+" áàðîâ.");
|
||||
};
|
||||
int clean=CleanChart();//÷èñòèì ãðàôèê ïðè ïîâòîðíîì ïðèìåíåíèè
|
||||
MqlRates rates_array[];
|
||||
string Com="";
|
||||
int iCod=CopyRates(Symbol(),Period(),0,iMaxBars,rates_array);//êîëè÷åñòâî ýëåìåíòîâ ìàññèâà
|
||||
iCod=iCod-1;//Èíäåêñ ìàêñèìàëüíîãî ýëåìåíòà â ìàññèâå
|
||||
Com="Ðàáîòàþ...Æäèòå!";
|
||||
Comment(Com);
|
||||
if(iCod>0)
|
||||
{
|
||||
FindUpKeyPoints(iCod,rates_array);//Ïîèñê âåðõíèõ êëþ÷åâûõ òî÷åê
|
||||
Com=Com+"\n"+"Îáðàáîòàíû âåðõíèå òî÷êè."+"\n";
|
||||
Comment(Com);
|
||||
FindLowKeyPoints(iCod,rates_array);//Ïîèñê íèæíèõ êëþ÷åâûõ òî÷åê
|
||||
Comment("Îáðàáîòêà çàâåðøåíà");
|
||||
}
|
||||
else Comment("Îòñóòñòâóþò áàðû äëÿ îáðàáîòêè!!!");
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
//| Ïîèñê âåðõíèõ êëþ÷åâûõ òî÷åê |
|
||||
//+------------------------------------------------------------------+
|
||||
void FindUpKeyPoints(int temp_iCod,MqlRates &temp_rates[])
|
||||
{
|
||||
int HD=1;
|
||||
for(int i=temp_iCod-MinDimesion; i>(MinDimesion-1); i--)//öèêë ïî áàðàì îò êîíå÷íîãî - MinDimension äî íóëåâîãî + MinDimension
|
||||
{
|
||||
HD=getHighDimension(temp_rates,i,temp_iCod);//ïîëó÷àåì ðàçìåðíîñòü òî÷åê
|
||||
if((HD>=MinDimesion) || (HD==-1))
|
||||
{//ñîçäàåì ìàðêó åñëè ïîïàäàåò ïîä óñëîâèÿ MinDimension
|
||||
string Ob_Name="KF_Label"+IntegerToString(i);
|
||||
if(HD!=-1)
|
||||
{
|
||||
ObjectCreate(0,Ob_Name,OBJ_TEXT,0,temp_rates[i].time,temp_rates[i].high);
|
||||
ObjectSetInteger(0,Ob_Name,OBJPROP_ANCHOR,0,ANCHOR_LOWER);
|
||||
ObjectSetString(0,Ob_Name,OBJPROP_TEXT,0,IntegerToString(HD));
|
||||
ObjectSetInteger(0,Ob_Name,OBJPROP_COLOR,clrRed);
|
||||
}
|
||||
else
|
||||
{ //Åñëè íå ìîæåì îïðåäåëèòü ðàçìåðíîñòü ìàðêèðóåì øàðèêîì
|
||||
ObjectCreate(0,Ob_Name,OBJ_ARROW,0,temp_rates[i].time,temp_rates[i].high);
|
||||
ObjectSetInteger(0,Ob_Name,OBJPROP_ARROWCODE,0,159);
|
||||
ObjectSetInteger(0,Ob_Name,OBJPROP_ANCHOR,0,ANCHOR_BOTTOM);
|
||||
ObjectSetInteger(0,Ob_Name,OBJPROP_COLOR,clrRed);
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
//| Ïîèñê íèæíèõ êëþ÷åâûõ òî÷åê |
|
||||
//+------------------------------------------------------------------+
|
||||
void FindLowKeyPoints(int temp_iCod,MqlRates &temp_rates[])
|
||||
{
|
||||
int LD=1;//èíèöèàëèçèðóåì ðàçìåðíîñòè òî÷åê
|
||||
bool iCreate;
|
||||
for(int i=temp_iCod-MinDimesion; i>(MinDimesion-1); i--)
|
||||
{
|
||||
LD=getLowDimension(temp_rates,i,temp_iCod);
|
||||
if((LD>=MinDimesion) || (LD==-1))
|
||||
{
|
||||
string Ob_Name="KF_Label"+IntegerToString(i)+"_1";//Ñòðàõóåìñÿ îò áàðîâ ãäå ëîé è õàé ìîãóò áûòü êëþ÷åâûìè òî÷êàìè
|
||||
if(LD!=-1)
|
||||
{
|
||||
iCreate=ObjectCreate(0,Ob_Name,OBJ_TEXT,0,temp_rates[i].time,temp_rates[i].low);
|
||||
if(iCreate)
|
||||
{
|
||||
ObjectSetInteger(0,Ob_Name,OBJPROP_ANCHOR,0,ANCHOR_UPPER);
|
||||
ObjectSetString(0,Ob_Name,OBJPROP_TEXT,0,IntegerToString(LD));
|
||||
ObjectSetInteger(0,Ob_Name,OBJPROP_COLOR,clrGreen);
|
||||
}
|
||||
else Comment("Íå ìîãó ñîçäàòü îáúåêò");
|
||||
}
|
||||
else
|
||||
{
|
||||
iCreate=ObjectCreate(0,Ob_Name,OBJ_ARROW,0,temp_rates[i].time,temp_rates[i].low);
|
||||
if(iCreate)
|
||||
{
|
||||
ObjectSetInteger(0,Ob_Name,OBJPROP_ARROWCODE,0,159);
|
||||
ObjectSetInteger(0,Ob_Name,OBJPROP_ANCHOR,0,ANCHOR_TOP);
|
||||
ObjectSetInteger(0,Ob_Name,OBJPROP_COLOR,clrGreen);
|
||||
}
|
||||
else Comment("Íå ìîãó ñîçäàòü îáúåêò");
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
//| Îïðåäåëåíèå ðàçìåðíîñòè âåðõíåé òî÷êè |
|
||||
//+------------------------------------------------------------------+
|
||||
int getHighDimension(MqlRates &tmpRates[],int tmp_i,int tmp_iCod)
|
||||
{
|
||||
int k=1;
|
||||
while((tmpRates[tmp_i].high>tmpRates[tmp_i+k].high) && (tmpRates[tmp_i].high>tmpRates[tmp_i-k].high) && ((tmp_i+k)<(tmp_iCod)) && ((tmp_i-k)>0)) k++;
|
||||
if(((tmp_i+k)==tmp_iCod) || ((tmp_i-k)==0)) k=-1;
|
||||
return(k);
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
//| Îïðåäåëåíèå ðàçìåðíîñòè íèæíåé òî÷êè |
|
||||
//+------------------------------------------------------------------+
|
||||
int getLowDimension(MqlRates &tmpRates[],int tmp_i,int tmp_iCod)
|
||||
{
|
||||
int k=1;
|
||||
while((tmpRates[tmp_i].low<tmpRates[tmp_i+k].low) && (tmpRates[tmp_i].low<tmpRates[tmp_i-k].low) && ((tmp_i+k)<(tmp_iCod)) && ((tmp_i-k)>0)) k++;
|
||||
if(((tmp_i+k)==tmp_iCod) || ((tmp_i-k)==0)) k=-1;
|
||||
return(k);
|
||||
}
|
||||
//+-------------------------------------------------------------------------------+
|
||||
//| Î÷èñòêà ãðàôèêà îò ñîçäàííûõ ñêðèïòîì îáúåêòîâ â ñëó÷àå ïîâòîðíîãî ïðèìåíåíèÿ |
|
||||
//+-------------------------------------------------------------------------------+
|
||||
int CleanChart()
|
||||
{
|
||||
string Label="KF_Label";
|
||||
int obj_total=ObjectsTotal(0,0,-1),n=0;
|
||||
for(int obj=obj_total-1; obj>=0; obj--)
|
||||
{
|
||||
string objname=ObjectName(0,obj,0,-1);
|
||||
if(StringFind(objname,Label)>=0) ObjectDelete(0,objname);
|
||||
n++;
|
||||
}
|
||||
return(n);
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 779 B |
|
After Width: | Height: | Size: 2.4 KiB |