Skip to content

Instantly share code, notes, and snippets.

View currencysecrets's full-sized avatar

Ryan currencysecrets

View GitHub Profile
@currencysecrets
currencysecrets / getLastSwingPrice.mq4
Created July 6, 2012 08:28
MQL4: Get Last Swing Price
/*
* Get the price of the Stop Loss according to last swing price.
* @param sym string Symbol of currency being analysed
* @param TF int TimeFrame of the currency being analysed
* @param ord int OrderType() = OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT, OP_SELLSTOP
* @param entry double Entry price of the order
* @return double Last swing point
*/
double getLastSwingPrice(string sym, int TF, int ord, double entry) {
int bars = iBars(sym,TF);
@currencysecrets
currencysecrets / checkManualOrders.mq4
Created July 7, 2012 04:39
MQL4: Check Manually Entered Pending Orders
// this procedure checks all manually placed orders
void checkManualOrders() {
for ( int i = 0; i < OrdersTotal(); i++ ) {
if ( OrderSelect(i, SELECT_BY_POS, MODE_TRADES) ) {
// the assumption will be that new manually placed pending orders have a MagicNumber of 0
// check with your MT4 broker that they allow MagicNumbers, some brokers do NOT!
// if your broker doesn't then you'll have to remove "OrderMagicNumer() == 0 &&"
if ( OrderMagicNumber() == 0 && OrderCloseTime() == 0 ) {
if ( OP_BUYLIMIT || OP_BUYSTOP || OP_SELLLIMIT || OP_SELLSTOP ) {
// okay you're now here on an active PENDING order, what do you want to do?
@currencysecrets
currencysecrets / rorAnalysis.mq4
Created July 17, 2012 21:00
MQL4: RoR Analysis
//+------------------------------------------------------------------+
//| Trades Analysis.mq4 |
//| Ryan Sheehy, CurrencySecrets.com |
//| http://www.currencysecrets.com |
//+------------------------------------------------------------------+
#property copyright "Ryan Sheehy, CurrencySecrets.com"
#property link "http://www.currencysecrets.com"
/*
* With this script we will be running through all trades that have
@currencysecrets
currencysecrets / CS period_converter.mq4
Created January 11, 2013 03:41
Commenting out of the update in the period_converter script in MetaTrader.
//+------------------------------------------------------------------+
//| Period_Converter.mq4 |
//| Copyright © 2005-2007, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
#property show_inputs
#include <WinUser32.mqh>
@currencysecrets
currencysecrets / CS Auto Trend Lines (Offline).mq4
Last active December 11, 2015 00:28
This Expert Advisor plots the historical trend lines on the offline charts.
//+------------------------------------------------------------------+
//| CS Auto Trend Lines (Offline).mq4 |
//| Ryan Sheehy |
//| http://www.currencysecrets.com |
//| Version: 1.0 |
//| Released: 12 Jan 13 |
//+------------------------------------------------------------------+
#property copyright "Ryan Sheehy"
#property link "http://www.currencysecrets.com"
@currencysecrets
currencysecrets / checkOpenTrades.mq4
Last active December 14, 2015 11:18
Silent orders with reversable positions.
/*
* checkOpenTrades
* This function checks open trades and compares them to risk levels.
* @param sym
* @return int -1 = error
*/
int checkOpenTrades( string sym ) {
int type, revType, tradeReady, tkt, dir;
double p, revP, profit, trailingStop;
for ( int i = 0; i < OrdersTotal(); i++ ) {
@currencysecrets
currencysecrets / getOpenBar.mq4
Last active December 16, 2015 04:29
This function returns the bar number according to the currency and datetime being passed in. This function is good for trailing stop methods that need to know when the entry of the bar occurred.
int getOpenBar( string sym, datetime openTime ) {
// each bar has the opening time at the start of the bar
// eg if openTime is 12:01PM we will know at 4:00PM (when the
// bar is greater than the opening time of trade)
for ( int i = 0; i < Bars; i++ ) {
if ( openTime >= Time[i] ) {
return( i );
}
}
}
@currencysecrets
currencysecrets / getSpread.mq4
Created April 13, 2013 07:29
This function returns the spread in double digit form, eg 0.00030 rather than 30.
// this function returns the spread of the currency in double form
double getSpread( string sym ) {
return( MarketInfo( sym, MODE_SPREAD ) * MarketInfo( sym, MODE_POINT ) );
}
@currencysecrets
currencysecrets / alertMe.mq4
Last active December 16, 2015 06:58
Using the SendEmail function to alert me of potential problems in my MetaTrader live code.
// This function provides a boilerplate type template for sending email alerts about your MetaTrader code.
// param subject (optional) => Usually a short description of what the email is alerting you about
// param body (optional) => As the email already contains many bits of information I just use the body for detailing a reason
// param systemTag (optional) => The name/tag of your expert advisor
//
// Example usage within my EA:
// alertMe( "CLOSE long order failed", "Reason: Closing a pending buystop order in function XYZ has failed", "My Sys (v1.0)" );
void alertMe( string subject = "", string body = "", string systemTag = "" ) {
SendMail( subject + " " + Symbol() + " " + systemTag ,
@currencysecrets
currencysecrets / removeOldOrders.mq4
Created April 17, 2013 01:40
Removing pending orders when they do not match the new trading system's version number. It does assume that the system tag is placed in the OrderComment area of a new order.
void removeOldOrders( string sym, string systemTag ) {
int tot = OrdersTotal();
for( int i = 0; i < tot; i++ ) {
if ( OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) ) {
if ( OrderSymbol() == sym ) {
if ( OrderType() != OP_BUY || OrderType() != OP_SELL ) {
if ( OrderComment() != systemTag ) { // don't forget your new order must contain the systemTag!
OrderDelete( OrderTicket() );
}
}