m1v11(killerkhan)

Author: Copyright � 2005, MetaQuotes Software Corp.
0 Views
0 Downloads
0 Favorites
m1v11(killerkhan)
/*-----------------------------+
|			       |
| Shared by www.Aptrafx.com    |
|			       |
+------------------------------*/

//+------------------------------------------------------------------+
//|                                            m1v11(killerkhan).mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

extern int  slippage       =1;

int         BreakPeriod1   =27;
int         NumberOfBars1  =2700;
int         CountBars1,CurrentBar1,CurrentTrend1;
double      Value11,Value21,LowestBreak1,HighestBreak1;

int         BreakPeriod2   =9;
int         NumberOfBars2  =2700;
int         CountBars2,CurrentBar2,CurrentTrend2;
double      Value12,Value22,LowestBreak2,HighestBreak2;

datetime    vTime;
string      Period1Signal,Period2Signal;

int init(){return(0);}
int deinit(){return(0);}
int start(){


return(0);}//end start

/*

///////////////////////////////////////////////
// Main Script
///////////////////////////////////////////////
if CurTime - LastTradeTime < 5 then Exit;

if Period != 1 then
{
	Comment("This expert is for M1 Chart Only!!!");
	Exit;
};

If vTime != Time[0] then
{
///////////////////////////////////////////////
// Look for direction of Currency 1
///////////////////////////////////////////////
SetLoopCount(0);
If Bars > NumberOfBars1
then CountBars1 = NumberOfBars1
else CountBars1 = Bars;

For CurrentBar1 = CountBars1-1 Downto 1 Begin
	LowestBreak1 = Low[Lowest(MODE_LOW, CurrentBar1 + BreakPeriod1, BreakPeriod1)];
	HighestBreak1 = High[Highest(MODE_HIGH, CurrentBar1 + BreakPeriod1, BreakPeriod1)];
	
	If Close[CurrentBar1] < LowestBreak1 Then 
	{
		Value11 = Low[CurrentBar1];
		Value21 = High[CurrentBar1];
		CurrentTrend1 = -1;
	}
	Else If Close[CurrentBar1] > HighestBreak1 Then 
	{
		Value11 = High[CurrentBar1];
		Value21 = Low[CurrentBar1];
		CurrentTrend1 = 1;
	}
	Else 
	{
		If (CurrentTrend1 > 0) Then 
		{
			Value11 = High[CurrentBar1];
			Value21 = Low[CurrentBar1];
		}
		Else 
		{
			Value11 = Low[CurrentBar1];
			Value21 = High[CurrentBar1];
		}
	};
End;

///////////////////////////////////////////////
// Look for direction of Currency 2
///////////////////////////////////////////////
SetLoopCount(0);
If Bars > NumberOfBars2
then CountBars2 = NumberOfBars2
else CountBars2 = Bars;

For CurrentBar2 = CountBars2-1 Downto 1 Begin
	LowestBreak2 = Low[Lowest(MODE_LOW, CurrentBar2 + BreakPeriod2, BreakPeriod2)];
	HighestBreak2 = High[Highest(MODE_HIGH, CurrentBar2 + BreakPeriod2, BreakPeriod2)];
	
	If Close[CurrentBar2] < LowestBreak2 Then 
	{
		Value12 = Low[CurrentBar2];
		Value22 = High[CurrentBar2];
		CurrentTrend2 = -1;
	}
	Else If Close[CurrentBar2] > HighestBreak2 Then 
	{
		Value12 = High[CurrentBar2];
		Value22 = Low[CurrentBar2];
		CurrentTrend2 = 1;
	}
	Else 
	{
		If (CurrentTrend2 > 0) Then 
		{
			Value12 = High[CurrentBar2];
			Value22 = Low[CurrentBar2];
		}
		Else 
		{
			Value12 = Low[CurrentBar2];
			Value22 = High[CurrentBar2];
		}
	};
End;

};

///////////////////////////////////////////////
// Set Variables
///////////////////////////////////////////////
vSlippage = Slippage * Point;

///////////////////////////////////////////////
// Count Trades for current Symbol
///////////////////////////////////////////////
Opentrades = 0;
for i = 1 to TotalTrades 
{
	If OrderValue(i,Val_Symbol) == Symbol then
	{
		Opentrades++;
	};
};

///////////////////////////////////////////////
// Trailing Stop and Closing Trades
///////////////////////////////////////////////
if Opentrades != 0 then
{
	for i=1 to TotalTrades
 	{
   		If OrderValue(i,VAL_TYPE) == OP_BUY and OrderValue(i,VAL_SYMBOL) == Symbol then
     	{
     		if vTime != Time[0] and Value22 > Value12 then
     		{
       			CloseOrder(OrderValue(i,VAL_TICKET),Ord(i,VAL_LOTS),Ord(i,VAL_CLOSEPRICE),vSlippage,Teal);
       			Exit;
       		};
       		If vTime != Time[0] and Value12 > Value22 then
       		{
       			vTime = Time[0];
       		};
    	};
    	If OrderValue(i,VAL_TYPE) == OP_SELL and OrderValue(i,VAL_SYMBOL) == Symbol then
     	{
     		If vTime != Time[0] and Value12 > Value22 then
     		{
     			CloseOrder(OrderValue(i,VAL_TICKET),Ord(i,VAL_LOTS),Ord(i,VAL_CLOSEPRICE),vSlippage,Pink);
       			Exit;
       		};
       		if vTime != Time[0] and Value22 > Value12 then
     		{
       			vTime = Time[0];
       		};     		
    	};
    };
};

///////////////////////////////////////////////
// Open New Trades
///////////////////////////////////////////////
if Opentrades == 0 and vTime != Time[0] then 
{	
	if vTime == 0 then
	{
		vTime = Time[0];
		Exit;
	};
	If Value11 > Value21 and Value12 > Value22 then
	{
		If FreeMargin < 100 then Exit;
      	SetOrder(OP_BUY,Lots,Ask,vSlippage,ask-stoploss*point,ask+takeprofit*point,Blue);
      	vTime = Time[0];
		Exit;
	};
	If Value21 > Value11 and Value22 > Value12 then
	{
		If FreeMargin < 100 then Exit;
		SetOrder(OP_SELL,Lots,Bid,vSlippage,bid+stoploss*point,bid-takeprofit*point,Red);
		vTime = Time[0];
		Exit;
	};
};

///////////////////////////////////////////////
// Comments for testing purposes only
///////////////////////////////////////////////
If Value11 > Value21 then Period1Signal = "BUY"
else If Value21 > Value11 then Period1Signal = "SELL"
else Period1Signal = "NONE";

If Value12 > Value22 then Period2Signal = "BUY"
else If Value22 > Value12 then Period2Signal = "SELL"
else Period2Signal = "NONE";

Comment("Period1Signal: ",Period1Signal,"\nPeriod2Signal: ",Period1Signal);

Comments