Programming - editing - modification EA, Script or Indicator for MT4 OR MT5 ---- Trading on the Forex market involves substantial risks, including complete possible loss of funds and other losses and is not suitable for all members. Client should make an independent judgments as to whether trading is appropriate for him/her in light of his/her financial condition, investment experience, risk tolerance and other factors.
Tuesday, 27 November 2012
It's bollinger Brand MQL Code
//+------------------------------------------------------------------+
//| Bollinger MA Price.mq4 |
//| Paladin80 |
//| forevex@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Paladin80"
#property link "forevex@mail.ru"
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 LightSeaGreen
#property indicator_color2 LightSeaGreen
#property indicator_color3 LightSeaGreen
//---- indicator parameters
extern int BandsPeriod=20;
extern int BandsShift=0;
extern double BandsDeviations=2.0;
extern int MA_method=0;
extern int Applied_price=0;
bool error=false;
/* MA_method: 0 - Simple moving average,
1 - Exponential moving average,
2 - Smoothed moving average,
3 - Linear weighted moving average.
Applied_price: 0 - Close price,
1 - Open price,
2 - High price,
3 - Low price,
4 - Median price,
5 - Typical price,
6 - Weighted close price,
*/
//---- buffers
double MovingBuffer[];
double UpperBuffer[];
double LowerBuffer[];
Function to calculate total lots opened
Function to calculate total lots opened
Here is the code fuction which will return the total number of lots which are currently running in open trades :
Parameters: key is magic number, and type is the type of trades .Code:double gettotallot(int _key, int type) { double _lot=0; for(int k=OrdersTotal(); k>=0; k--) { if (OrderSelect(k,SELECT_BY_POS,MODE_TRADES)&& OrderSymbol()==Symbol()&& OrderMagicNumber()==_key && OrderType()==type) _lot+=OrderLots(); } return(_lot); }
day of the week
Here is code function which can be used say when ea needs to trade only during certain hours of the day and skip of certain day of the week :
Code:
bool ValidTime() { if (DayOfWeek()==1 && Hour()<=6) return(false); return(true); }
CloseAllTrade Script
Here is a code which can be saved as a script file in the Scripts Folder.
To execute the script, drage and drop the script on the current chart, this will close all open trades and also pending orders of all symbols.
int start()
{ double total; int cnt; while(OrdersTotal()>0) { // close opened orders first total = OrdersTotal(); for (cnt = total ; cnt >=0 ; cnt--) { if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) { switch(OrderType()) { case OP_BUY : RefreshRates(); OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,Violet);break; case OP_SELL : RefreshRates(); OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),3,Violet); break; } } } // and close pending total = OrdersTotal(); for (cnt = total ; cnt >=0 ; cnt--) { if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) { switch(OrderType()) { case OP_BUYLIMIT :OrderDelete(OrderTicket()); break; case OP_SELLLIMIT :OrderDelete(OrderTicket()); break; case OP_BUYSTOP :OrderDelete(OrderTicket()); break; case OP_SELLSTOP :OrderDelete(OrderTicket()); break; } } } } return(0); }
Code to take Screenshot of Chart and save it to local drive
Here is the Code that you can put in any EA to take a screenshot of the Chart and save it to disk, you can call this on any event like if there is any new trade taken, you can save the screenshot.
the system function to take screenshot is:Code:WindowScreenShot(filename,size_x,size_y)
Here is the example usage:Code:string filename= "Chart"+Symbol(); WindowScreenShot(filename,570,428)
The above will save the chart with name "ChartEURUSD". You can make the filename very dynamic so every time screenshot is taken, it would save it with different name.
Numeric Chart Period to Text String Format
Here is the code function that will return the chart period in the nicely formation text line.
Example: (if EA is running on 1hour chart)
chartperiod = periodToString(Period()) // will return 1 Hour
Code:string periodToString(int tf) { string tfString; switch (tf) { case 1: tfString = "1 Min"; break; case 5: tfString = "5 Min"; break; case 15: tfString = "15 Min"; break; case 30: tfString = "30 Min"; break; case 60: tfString = "1 Hour"; break; case 240: tfString = "4 Hour"; break; case 1440: tfString = "Daily"; break; case 10080: tfString = "Weekly"; break; case 40320: tfString = "Monthly"; break; default: tfString = "Unknown"; } return (tfString); }
Close All Function
This function will close All open trades for a particual MagicNumber of EA.Code:void CloseAll() { int total = OrdersTotal(); for(int i=total-1;i>=0;i--) { OrderSelect(i, SELECT_BY_POS); int type = OrderType(); if (OrderSymbol()==Symbol() && (OrderMagicNumber() == MagicNumber)) { //-- Close open BUYs if (type == OP_BUY) OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),Slippage,CornflowerBlue); //-- Close open SELLS if (type == OP_SELL) OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),Slippage,CornflowerBlue); } } return; }
Count All Open Trades
Following is a custom function which when called will return total of active trades for a particular magic number:Code:int CountAllTrades(int magic) { int c=0; for (int j=OrdersTotal()-1;j>=0;j--) { OrderSelect(j,SELECT_BY_POS,MODE_TRADES); if (OrderSymbol()==Symbol() && OrderMagicNumber()==magic) c++; } return(c); }
the Broker is 4 digits or 5 digits pricing
Here is a code which you can use in an Expert Advisors to automatically adjust variables depending on if the Broker is 4 digits or 5 digits pricing.
following code should be inside the int Init() function
following code should be inside the int Init() function
Code:
if(Digits==5 || Digits==3){ StopLoss= Stoploss * 10; // this adjusts Stoploss variable for 5digit broker }
Subscribe to:
Posts (Atom)