Initial commit: MQL5 Scripts Collection (MetaTrader 5)
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
# 🚀 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
|
||||
- `mn1_w1_levels.mq5`
|
||||
|
||||
---
|
||||
> Made with ❤️ for the trading community.
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 4.3 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.6 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.6 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
@@ -0,0 +1,241 @@
|
||||
//+------------------------------------------------------------------+
|
||||
//| MN1_W1_Levels.mq4 |
|
||||
//| © Tecciztecatl |
|
||||
//+------------------------------------------------------------------+
|
||||
#property copyright "© Tecciztecatl 2016"
|
||||
#property link "113411@bk.ru"
|
||||
#property version "1.00"
|
||||
#property description "The script shows the highs and lows of weeks and months."
|
||||
#property script_show_inputs
|
||||
#property strict
|
||||
|
||||
input int days=200; //Number of days
|
||||
extern string comm0=""; //- - -- ---- Weeks ---- -- - -
|
||||
extern color W1_Color=LimeGreen; //W1 Color of lines
|
||||
input int W1_Width=3; //W1 Line Width
|
||||
extern ENUM_LINE_STYLE W1_style=STYLE_SOLID; //W1 Style of lines
|
||||
extern string comm1=""; //- - -- ---- Months ---- -- - -
|
||||
extern color MN1_Color=Orange; //MN1 Color of lines
|
||||
input int MN1_Width=3; //MN1 Line Width
|
||||
extern ENUM_LINE_STYLE MN1_style=STYLE_SOLID;//MN1 Style of lines
|
||||
|
||||
enum choice0 {Trend_Line=0,Horizontal_Line=1};
|
||||
input choice0 object=Trend_Line; //Trend or Horizontal line
|
||||
|
||||
datetime ArrDate[1];
|
||||
double ArrDouble[1];
|
||||
MqlDateTime time;
|
||||
//+------------------------------------------------------------------+
|
||||
//| Script program start function |
|
||||
//+------------------------------------------------------------------+
|
||||
void OnStart()
|
||||
{
|
||||
DelObject();
|
||||
|
||||
int weeks=(int)MathCeil(days/7)+1;
|
||||
if(weeks>Bars(_Symbol,PERIOD_W1)) weeks=Bars(_Symbol,PERIOD_W1)-1;
|
||||
if(weeks<0) {Alert("No historical data!"); return;}
|
||||
for(int i=weeks; i>=0; i--)
|
||||
{
|
||||
datetime w1=iTime(_Symbol,PERIOD_W1,i);
|
||||
TimeToStruct(w1,time);
|
||||
if(object==Trend_Line)
|
||||
{
|
||||
SetTrendLine("W1_High_"+(string)i+"_ln",
|
||||
w1+86400,
|
||||
iHigh(_Symbol,PERIOD_W1,i),
|
||||
w1+7*86400,
|
||||
W1_Color,
|
||||
W1_Width,
|
||||
W1_style,
|
||||
0x0007ffff);
|
||||
SetTrendLine("W1_Low_"+(string)i+"_ln",
|
||||
w1+86400,
|
||||
iLow(_Symbol,PERIOD_W1,i),
|
||||
w1+7*86400,
|
||||
W1_Color,
|
||||
W1_Width,
|
||||
W1_style,
|
||||
0x0007ffff);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetHLine("W1_High_"+(string)i+"_ln",
|
||||
iHigh(_Symbol,PERIOD_W1,i),
|
||||
W1_Color,
|
||||
W1_Width,
|
||||
W1_style);
|
||||
SetHLine("W1_Low_"+(string)i+"_ln",
|
||||
iLow(_Symbol,PERIOD_W1,i),
|
||||
W1_Color,
|
||||
W1_Width,
|
||||
W1_style);
|
||||
}
|
||||
}
|
||||
|
||||
TimeToStruct(TimeCurrent(),time);
|
||||
int month=(int)MathCeil((days-time.day)/30)+1;
|
||||
if(month>Bars(_Symbol,PERIOD_MN1)) month=Bars(_Symbol,PERIOD_MN1)-1;
|
||||
if(month<0) {Alert("No historical data!"); return;}
|
||||
for(int i=month; i>=0; i--)
|
||||
{
|
||||
|
||||
datetime mn=iTime(_Symbol,PERIOD_MN1,i);
|
||||
TimeToStruct(mn,time);
|
||||
|
||||
if(object==Trend_Line)
|
||||
{
|
||||
SetTrendLine("MN1_High_"+(string)i+"_ln",
|
||||
mn,
|
||||
iHigh(_Symbol,PERIOD_MN1,i),
|
||||
mn+DayMonth(time.mon,mn)*86400,
|
||||
MN1_Color,
|
||||
MN1_Width,
|
||||
MN1_style,
|
||||
0x000fffff);
|
||||
SetTrendLine("MN1_Low_"+(string)i+"_ln",
|
||||
mn,
|
||||
iLow(_Symbol,PERIOD_MN1,i),
|
||||
mn+DayMonth(time.mon,mn)*86400,
|
||||
MN1_Color,
|
||||
MN1_Width,
|
||||
MN1_style,
|
||||
0x000fffff);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetHLine("MN1_High_"+(string)i+"_ln",
|
||||
iHigh(_Symbol,PERIOD_MN1,i),
|
||||
MN1_Color,
|
||||
MN1_Width,
|
||||
MN1_style);
|
||||
SetHLine("MN1_Low_"+(string)i+"_ln",
|
||||
iLow(_Symbol,PERIOD_MN1,i),
|
||||
MN1_Color,
|
||||
MN1_Width,
|
||||
MN1_style);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ChartRedraw();
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
//| |
|
||||
//+------------------------------------------------------------------+
|
||||
int DayMonth(int mon,datetime ttime)
|
||||
{
|
||||
int leap_year;
|
||||
TimeToStruct(ttime,time);
|
||||
switch(mon)
|
||||
{
|
||||
case 1:
|
||||
case 3:
|
||||
case 5:
|
||||
case 7:
|
||||
case 8:
|
||||
case 10:
|
||||
case 12:
|
||||
return(31);
|
||||
case 2:
|
||||
leap_year=time.year;
|
||||
if(time.year%100==0)
|
||||
leap_year/=100;
|
||||
return((leap_year%4==0)? 29 : 28);
|
||||
case 4:
|
||||
case 6:
|
||||
case 9:
|
||||
case 11:
|
||||
return(30);
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
//// Ñîçäà¸ì ëèíèþ
|
||||
void SetTrendLine(
|
||||
const string name,
|
||||
datetime time1,
|
||||
double price1,
|
||||
datetime time2,
|
||||
color cvet,
|
||||
int widthL,
|
||||
ENUM_LINE_STYLE styleL,
|
||||
int hide_TF
|
||||
)
|
||||
{
|
||||
if(ObjectFind(0,name)<0) ObjectCreate(0,name,OBJ_TREND,0,time1,price1,time2,price1);
|
||||
ObjectMove(0,name,0,time1,price1);
|
||||
ObjectMove(0,name,1,time2,price1);
|
||||
ObjectSetInteger(0,name,OBJPROP_COLOR,cvet);
|
||||
ObjectSetInteger(0,name,OBJPROP_STYLE,styleL);
|
||||
ObjectSetInteger(0,name,OBJPROP_WIDTH,widthL);
|
||||
ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);
|
||||
ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
|
||||
ObjectSetInteger(0,name,OBJPROP_BACK,false);
|
||||
ObjectSetInteger(0,name,OBJPROP_ZORDER,1);
|
||||
ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,false);
|
||||
ObjectSetInteger(0,name,OBJPROP_HIDDEN,true);
|
||||
ObjectSetInteger(0,name,OBJPROP_TIMEFRAMES,hide_TF);
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
//| |
|
||||
//+------------------------------------------------------------------+
|
||||
datetime iTime(string symbol,ENUM_TIMEFRAMES timeframe,int index)
|
||||
{
|
||||
if(index<0) index=0;
|
||||
if(CopyTime(symbol, timeframe, index, 1, ArrDate)>0) return(ArrDate[0]);
|
||||
else return(-1);
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
//| |
|
||||
//+------------------------------------------------------------------+
|
||||
double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int index)
|
||||
{
|
||||
if(index < 0) return(-1);
|
||||
if(CopyLow(symbol, timeframe, index, 1, ArrDouble)>0) return(ArrDouble[0]);
|
||||
else return(-1);
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
//| |
|
||||
//+------------------------------------------------------------------+
|
||||
double iHigh(string symbol,ENUM_TIMEFRAMES timeframe,int index)
|
||||
{
|
||||
if(index < 0) return(-1);
|
||||
if(CopyHigh(symbol, timeframe, index, 1, ArrDouble)>0) return(ArrDouble[0]);
|
||||
else return(-1);
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
//| |
|
||||
//+------------------------------------------------------------------+
|
||||
void SetHLine(
|
||||
const string name,
|
||||
double price1,
|
||||
color cvet,
|
||||
int widthL,
|
||||
ENUM_LINE_STYLE styleL,
|
||||
)
|
||||
{
|
||||
if(ObjectFind(0,name)<0) ObjectCreate(0,name,OBJ_HLINE,0,0,price1);
|
||||
ObjectSetDouble(0,name,OBJPROP_PRICE,price1);
|
||||
ObjectSetInteger(0,name,OBJPROP_COLOR,cvet);
|
||||
ObjectSetInteger(0,name,OBJPROP_STYLE,styleL);
|
||||
ObjectSetInteger(0,name,OBJPROP_WIDTH,widthL);
|
||||
ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);
|
||||
ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
|
||||
ObjectSetInteger(0,name,OBJPROP_BACK,false);
|
||||
ObjectSetInteger(0,name,OBJPROP_ZORDER,1);
|
||||
ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,false);
|
||||
ObjectSetInteger(0,name,OBJPROP_HIDDEN,true);
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
//| |
|
||||
//+------------------------------------------------------------------+
|
||||
void DelObject()
|
||||
{
|
||||
for(int i=ObjectsTotal(0,0,-1)-1;i>=0;i--)
|
||||
{
|
||||
string temp=ObjectName(0,i,0,-1);
|
||||
if(StringFind(temp,"_ln",0)>=0)
|
||||
ObjectDelete(0,temp);
|
||||
}
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 2.4 KiB |
Reference in New Issue
Block a user