Orders Execution
0
Views
0
Downloads
0
Favorites
Profitability Reports
AUD/USD
Oct 2024 - Jan 2025
18.00 %
Total Trades
2
Won Trades
0
Lost trades
0
Win Rate
0.00 %
Expected payoff
-22.50
Gross Profit
10.00
Gross Loss
-55.00
Total Net Profit
-45.00
-100%
-50%
0%
50%
100%
GBP/USD
Oct 2024 - Jan 2025
18.00 %
Total Trades
10
Won Trades
5
Lost trades
5
Win Rate
0.50 %
Expected payoff
-22.50
Gross Profit
50.00
Gross Loss
-275.00
Total Net Profit
-225.00
-100%
-50%
0%
50%
100%
Noah10pips2006
/*-----------------------------+
| |
| Shared by www.Aptrafx.com |
| |
+------------------------------*/
//+------------------------------------------------------------------+
//| noah10pips2006.mq4 |
//| Copyright © 2005, Nick Bilak, beluck[AT]gmail.com |
//| http://metatrader.50webs.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, Nick Bilak"
#property link "http://metatrader.50webs.com/"
#include <stdlib.mqh>
extern int MAGICNUM=1;
extern double Lots = 0.1;
extern int StopLoss = 55;
extern int TakeProfit = 100;
extern int TrailingStop = 0;
extern int slippage = 3;
extern double MaximumRisk = 7.0;
extern double MaxLot = 100.0;
extern double MinLot = 1.0;
extern bool FixedLot = true;
extern int TimeZoneOfData=0; // NY 7,15;
extern int StartHour=2; // 9:00 PM EST
extern int StartMinute=0;
extern int EndHour=23;
extern int EndMinute=0;
extern int FridayEndHour=21;
extern int SecureProfit=10;
extern int TrailSecureProfit=16;
extern int TradeFriday=1; // 0- dont open trades on friday, 1- Trade on friday
extern int DontReverse=1;
extern int StartYear=2005;
extern int StartMonth=6;
extern int TradesSet=2;
extern int TypeSet=0; // 0 = NONE, 1 = SELL, 2 = BUY
extern int ReverseSet=0; // 0=False, 1=True
int Today, RefDate, LastBarOfDay, FirstBarOfDay, Loop;
double pre_lo, pre_hi, myC, myO, lotsi;
int Cnt;
int OpenTrades, FilledOrders;
double BuyPrice, SellPrice;
int TimetoOpen, TimetoClose, tmp, i;
int Trades=2; string Type="NONE"; bool Reverse=False;
int mode,tr;
int myEndHour, myFridayEndHour, myStartHour;
bool FirstTime=True;
double range;
double hi_pass;
double lo_pass;
double MP;
double er_hi;
double er_lo;
double erange,erange2;
double r3;
double diffs,diffb;
int res; bool bres;
int start() {
if (TimeYear(Time[0])<StartYear) return;
lotsi=LotsRisk(StopLoss);
if (FirstTime) {
if (TradesSet!=2 || TypeSet!=0 || ReverseSet!=0) {
Trades = TradesSet;
if (TypeSet == 0) Type = "NONE";
if (TypeSet == 1) Type = "SELL";
if (TypeSet == 2) Type = "BUY";
if (ReverseSet ==0) Reverse = False;
if (ReverseSet ==1) Reverse = True;
}
FirstTime=False;
}
Today=MathFloor(CurTime()/86400)*86400;
Cnt=1;
if (Today!=RefDate) {
RefDate=Today;
while ( Cnt<(Bars-1) && (Time[Cnt]-TimeZoneOfData*3600>=RefDate) ) {
Cnt++;
}
LastBarOfDay=Cnt;
if (DayOfWeek()==1) RefDate=Today-86400*3;
else RefDate=Today-86400;
while ( Cnt<(Bars-1) && (Time[Cnt]-TimeZoneOfData*3600>=RefDate) ) {
Cnt++;
}
FirstBarOfDay=Cnt-1;
}
pre_hi=High[Highest(NULL,0,MODE_HIGH,FirstBarOfDay-LastBarOfDay+1,LastBarOfDay)];
pre_lo=Low[Lowest(NULL,0,MODE_LOW,FirstBarOfDay-LastBarOfDay+1,LastBarOfDay)];
myC=Close[LastBarOfDay];
//pre_hi=High[lookback];
//pre_lo=Low[lookback];
// *** calculate all the 10pip numbers ***
hi_pass = pre_hi + 0.002 ;
lo_pass = pre_lo - 0.002 ;
MP = (((pre_hi - pre_lo) / 2.0) + pre_lo);
MP = NormalizeDouble(MP,Digits);
hi_pass = NormalizeDouble(hi_pass,Digits);
lo_pass = NormalizeDouble(lo_pass,Digits);
erange = (pre_hi - pre_lo);
//erange2= (pre_hi - pre_lo)*10000;
// *** which entry range amount to use? ***
// *** less than 160 range ***
if (erange <= 0.016)
r3 = 0.004;
else
r3 = erange * 0.25;
// *** set entry range ***
er_hi = (pre_hi - r3);
er_lo = (pre_lo + r3);
erange2= (er_hi - er_lo)*10000.0;
// *** print the numbers on the chart for reference ***
//Comment("BUY @ ", er_hi,"\nSELL @ ", er_lo);
// *** draw the lines on the chart ***
// *** special case for ER if range < 80 ***
// *** Prints an advisory message on the screen ***
if (erange <= 0.008) {
ObjectDelete("LT80_txt");
ObjectCreate("LT80_txt",OBJ_TEXT,0,Time[35],MP);
ObjectSetText("LT80_txt","RANGE<80 ",10,"Arial",White);
//SetObjectText("LT80_txt","RANGE<80 ","Arial",10,Black);
//MoveObject("LT80_txt",OBJ_TEXT,time[35],mp,time[35],mp,Black);
}
// *** Draw lines ***
ObjectDelete("MP");
ObjectCreate("MP", OBJ_HLINE,0,Time[25],MP);
ObjectSetText("MP","MP Range ",8,"Arial",White);
ObjectSet("MP",OBJPROP_COLOR,Blue);
ObjectSet("MP",OBJPROP_STYLE,STYLE_DOT);
//MoveObject("MP",OBJ_HLINE,time[25],mp,Time[25],mp,Blue,1,STYLE_DOT);
//SetObjectText("MP_txt","MP Range ","Arial",8,Black);
//MoveObject("MP_txt",OBJ_TEXT,time[25],mp,time[25],mp,Black);
ObjectDelete("ER_Hi");
ObjectCreate("ER_Hi", OBJ_HLINE,0,Time[25],er_hi);
ObjectSetText("ER_Hi","Below Here BUYZONE ->MP ",8,"Arial",White);
ObjectSet("ER_Hi",OBJPROP_COLOR,Green);
ObjectSet("ER_Hi",OBJPROP_STYLE,STYLE_DASH);
//MoveObject("ER_Hi",OBJ_HLINE,time[25],er_hi,Time[25],er_hi,Green,1,STYLE_DASH);
//SetObjectText("ER_Hi_txt","Below Here BUYZONE ->MP ","Arial",8,Black);
//MoveObject("ER_Hi_txt",OBJ_TEXT,time[25],er_hi,time[25],er_hi,Black);
ObjectDelete("ER_Lo");
ObjectCreate("ER_Lo", OBJ_HLINE,0,Time[25],er_lo);
ObjectSetText("ER_Lo","Above Here SELLZONE ->MP ",8,"Arial",White);
ObjectSet("ER_Lo",OBJPROP_COLOR,Red);
ObjectSet("ER_Lo",OBJPROP_STYLE,STYLE_DASH);
//MoveObject("ER_Lo",OBJ_HLINE,time[25],er_lo,Time[25],er_lo,red,1,STYLE_DASH);
//SetObjectText("ER_Lo_txt","Above Here SELLZONE ->MP ","Arial",8,Black);
//MoveObject("ER_Lo_txt",OBJ_TEXT,time[25],er_lo,time[25],er_lo,Black);
ObjectDelete("Hi_Pass");
ObjectCreate("Hi_Pass", OBJ_HLINE,0,Time[25],hi_pass);
ObjectSetText("Hi_Pass","HiPASS ",8,"Arial",White);
ObjectSet("Hi_Pass",OBJPROP_COLOR,Green);
ObjectSet("Hi_Pass",OBJPROP_STYLE,STYLE_DOT);
//MoveObject("Hi_Pass",OBJ_HLINE,time[25],hi_pass,time[25],hi_pass,Green,1,STYLE_DOT);
//SetObjectText("Hi_Pass_txt","HiPASS ","Arial",8,Black);
//MoveObject("Hi_Pass_txt",OBJ_TEXT,time[25],hi_Pass,time[25],hi_pass,Black);
ObjectDelete("Lo_Pass");
ObjectCreate("Lo_Pass", OBJ_HLINE,0,Time[25],lo_pass);
ObjectSetText("Lo_Pass","LoPASS ",8,"Arial",White);
ObjectSet("Lo_Pass",OBJPROP_COLOR,Red);
ObjectSet("Lo_Pass",OBJPROP_STYLE,STYLE_DOT);
//MoveObject("Lo_Pass",OBJ_HLINE,time[25],lo_pass,Time[25],lo_pass,red,1,STYLE_DOT);
//SetObjectText("Lo_Pass_txt","LoPASS ","Arial",8,Black);
//MoveObject("Lo_Pass_txt",OBJ_TEXT,time[25],lo_pass,time[25],lo_pass,Black);
ObjectDelete("Pre_Hi");
ObjectCreate("Pre_Hi", OBJ_HLINE,0,Time[25],pre_hi);
ObjectSetText("Pre_Hi","PreHI ",8,"Arial",White);
ObjectSet("Pre_Hi",OBJPROP_COLOR,Blue);
ObjectSet("Pre_Hi",OBJPROP_STYLE,STYLE_DASH);
//MoveObject("Pre_Hi",OBJ_HLINE,time[25],pre_hi,Time[25],pre_hi,Blue,1,STYLE_DASH);
//SetObjectText("Pre_Hi_txt","PreHI ","Arial",8,Black);
//MoveObject("Pre_Hi_txt",OBJ_TEXT,time[25],pre_hi,time[25],pre_hi,Black);
ObjectDelete("Pre_Lo");
ObjectCreate("Pre_Lo", OBJ_HLINE,0,Time[25],pre_lo);
ObjectSetText("Pre_Lo","PreLO ",8,"Arial",White);
ObjectSet("Pre_Lo",OBJPROP_COLOR,Blue);
ObjectSet("Pre_Lo",OBJPROP_STYLE,STYLE_DASH);
//MoveObject("Pre_Lo",OBJ_HLINE,time[25],pre_lo,Time[25],pre_lo,Blue,1,STYLE_DASH);
//SetObjectText("Pre_Lo_txt","PreLO ","Arial",8,Black);
//MoveObject("Pre_Lo_txt",OBJ_TEXT,time[25],pre_lo,time[25],pre_lo,Black);
if ( (Ask > MP) && (Ask < er_hi) ) {
Comment("Entry Price In BUYZONE");
} else {
if ( (Bid < MP) && (Bid > er_lo) ) {
Comment("Entry Price In SELLZONE");
}
}
OpenTrades=0;
for (Cnt=0; Cnt<OrdersTotal(); Cnt++) {
if (!OrderSelect(Cnt,SELECT_BY_POS,MODE_TRADES)) continue;
if ( OrderSymbol()==Symbol() ) {
OpenTrades++;
if (OrderType()==OP_SELL || OrderType()==OP_BUY)
FilledOrders++;
}
}
// We calculate the endHour based on the TimeZoneofData value
Cnt=0;
i=TimeZoneOfData;
while (Cnt<=EndHour) {
if (i>23) i=0;
myEndHour=i;
i++;
Cnt++;
}
// Friday end of day offset
//cnt=0;
//i=TimeZoneofData;
//While (cnt<=FridayEndHour)
//{
// if (i>23) then i=0;
// myFridayEndHour=i;
// i++;
// cnt++;
//};
myFridayEndHour=FridayEndHour;
if ( (Hour()==myEndHour && Minute()>=EndMinute) || (DayOfWeek()==6 && Hour()==myFridayEndHour && Minute()>=EndMinute) ) {
//cnt=0;While cnt<=10000 { cnt++; };
for (Cnt=OrdersTotal()-1; Cnt>=0; Cnt--) {
if (!OrderSelect(Cnt,SELECT_BY_POS,MODE_TRADES)) continue;
if ( OrderSymbol()==Symbol() ) {
mode = OrderType();
Trades=2;
Type="NONE";
Reverse=False;
tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Sleep(5000); }
if (mode == OP_BUYSTOP) bres=OrderDelete(OrderTicket());
if (mode == OP_SELLSTOP) bres=OrderDelete(OrderTicket());
if (mode == OP_BUYLIMIT) bres=OrderDelete(OrderTicket());
if (mode == OP_SELLLIMIT) bres=OrderDelete(OrderTicket());
if (mode == OP_BUY) bres=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Blue); //CloseOrder(ord(cnt,VAL_TICKET),ord(cnt,VAL_LOTS),bid,Slippage,Blue);
if (mode == OP_SELL) bres=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Blue); //CloseOrder(ord(cnt,VAL_TICKET),ord(cnt,VAL_LOTS),ask,Slippage,red);
if (!bres) Print("Error closing or deleting order : ",ErrorDescription(GetLastError()));
}
}
}
// We get the StartHour offset
Cnt=0;
i=TimeZoneOfData;
while (Cnt<=StartHour) {
if (i>23) i=0;
myStartHour=i;
i++;
Cnt++;
}
if (TradeFriday ==1 || DayOfWeek()!=5) {
if (Hour()==myStartHour && Minute()>=StartMinute) {
if (OpenTrades<1 && erange2 > 40) {
if ( (Close[1] > MP) && (Close[1] < hi_pass) ) {
Trades=1;
Type="NONE";
Reverse=True;
tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Sleep(5000); }
res=OrderSend(Symbol(),OP_SELLSTOP,lotsi,MP,slippage,MP+StopLoss*Point,MP-TakeProfit*Point,"N10",MAGICNUM,0,Red);
if (res<=0) Print("Error opening order : ",ErrorDescription(GetLastError()));
//SetOrder(OP_SELLSTOP,Lotsi,MP,Slippage,MP+StopLoss*Point,MP-TakeProfit*Point,RED);
//return;
}
if ( (Close[1] > lo_pass) && (Close[1] < MP) ) {
Trades=1;
Type="NONE";
Reverse=True;
tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Sleep(5000); }
res=OrderSend(Symbol(),OP_BUYSTOP,lotsi,MP,slippage,MP-StopLoss*Point,MP+TakeProfit*Point,"N10",MAGICNUM,0,Blue);
if (res<=0) Print("Error opening order : ",ErrorDescription(GetLastError()));
//SetOrder(OP_BUYSTOP,Lotsi,MP,Slippage,MP-StopLoss*Point,MP+TakeProfit*Point,BLUE);
//return;
}
return;
}
}
}
// if we only have one Stop order we place the another one to always have ready both sides
if (OpenTrades==1 && Trades>=1) {
for (Cnt=OrdersTotal()-1; Cnt>=0; Cnt--) {
if (!OrderSelect(Cnt,SELECT_BY_POS,MODE_TRADES)) continue;
if ( OrderSymbol()==Symbol() ) {
if (OrderType()==OP_SELLSTOP) {
if ( (Close[1] > MP) && (Close[1] < hi_pass) ) {
Trades=1;
Type="NONE";
Reverse=True;
tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Sleep(5000); }
res=OrderSend(Symbol(),OP_BUYSTOP,lotsi,hi_pass,slippage,hi_pass-StopLoss*Point,hi_pass+TakeProfit*Point,"N10",MAGICNUM,0,Blue);
if (res<=0) Print("Error opening order : ",ErrorDescription(GetLastError()));
//SetOrder(OP_BUYSTOP,Lotsi,HI_PASS,Slippage,HI_PASS-StopLoss*Point,HI_PASS+TakeProfit*Point,blue);
return;
}
}
if (OrderType()==OP_BUYSTOP) {
if ( (Close[1] > lo_pass) && (Close[1] < MP) ) {
Trades=1;
Type="NONE";
Reverse=True;
tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Sleep(5000); }
res=OrderSend(Symbol(),OP_SELLSTOP,lotsi,lo_pass,slippage,lo_pass+StopLoss*Point,lo_pass-TakeProfit*Point,"N10",MAGICNUM,0,Red);
if (res<=0) Print("Error opening order : ",ErrorDescription(GetLastError()));
//SetOrder(OP_SELLSTOP,Lotsi,LO_PASS,Slippage,LO_PASS+StopLoss*Point,LO_PASS-TakeProfit*Point,Red);
return;
}
}
}
}
}
if (DontReverse==1) Reverse=False;
// if one order was closed we reverse (only once in a day)
if ( OpenTrades<1 && Trades==1 && Reverse ) {
if (Type=="BUY") {
Trades=0;
Type="NONE";
Reverse=False;
tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Sleep(5000); }
res=OrderSend(Symbol(),OP_BUY,lotsi,Ask,slippage,Ask-StopLoss*Point,Ask+TakeProfit*Point,"N10",MAGICNUM,0,Blue);
if (res<=0) Print("Error opening order : ",ErrorDescription(GetLastError()));
return;
//SetOrder(OP_BUY,Lotsi,Ask,Slippage,Ask-StopLoss*Point,Ask+TakeProfit*Point,Blue);
}
if (Type=="SELL") {
Trades=0;
Type="NONE";
Reverse=False;
tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Sleep(5000); }
res=OrderSend(Symbol(),OP_SELL,lotsi,Bid,slippage,Bid+StopLoss*Point,Bid-TakeProfit*Point,"N10",MAGICNUM,0,Red);
if (res<=0) Print("Error opening order : ",ErrorDescription(GetLastError()));
return;
//SetOrder(OP_SELL,Lotsi,Bid,Slippage,Bid+StopLoss*Point,Bid-TakeProfit*Point,Red);
}
}
// if we have opened positions we take care of them
for (Cnt=OrdersTotal()-1; Cnt>=0; Cnt--) {
if (!OrderSelect(Cnt,SELECT_BY_POS,MODE_TRADES)) continue;
if ( OrderSymbol()==Symbol() ) {
if (OrderType() == OP_BUY) {
for (i=OrdersTotal()-1; i>=0; i--) {
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if ( OrderSymbol()==Symbol() ) {
if (OrderType()==OP_SELLSTOP || OrderType()==OP_BUYSTOP) {
Trades=1;
Type="SELL";
Reverse=True;
tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Sleep(5000); }
bres=OrderDelete(OrderTicket());
if (!bres) Print("Error deleting order : ",ErrorDescription(GetLastError()));
//return;
}
}
}
if (!OrderSelect(Cnt,SELECT_BY_POS,MODE_TRADES)) continue;
//We secure SecureProfit (10) pips after TrailSecureProfit (16) pips
if ( OrderStopLoss()<=OrderOpenPrice()+SecureProfit*Point
&& Bid-OrderOpenPrice()>=TrailSecureProfit*Point ) {
tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Sleep(5000); }
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+SecureProfit*Point,0,0,DeepSkyBlue);
//ModifyOrder(Ord(cnt,VAL_TICKET),Ord(cnt,VAL_OPENPRICE),((Ord(cnt,VAL_OPENPRICE))+SecureProfit*Point),0,DeepSkyBlue);
Trades=0;
Type="NONE";
Reverse=False;
tmp=OrderOpenPrice()+SecureProfit*Point;
Print("BUY Stoploss trailed to Openprice+SecureProfit=",tmp);
//Exit;
}
// Trailing stop after profit secured
if (TrailingStop>0) {
if ( OrderStopLoss()>=OrderOpenPrice()+SecureProfit*Point && OrderStopLoss()<Bid-TrailingStop*Point ) {
tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Sleep(5000); }
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*Point,0,0,Yellow);
//ModifyOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_OPENPRICE),Bid-Point*(SecureProfit+TrailingStop),0,Yellow);
Trades=0;
Type="NONE";
Reverse=False;
//Exit;
}
}
}
if (OrderType() == OP_SELL) {
for (i=OrdersTotal()-1; i>=0; i--) {
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if ( OrderSymbol()==Symbol() ) {
if (OrderType()==OP_SELLSTOP || OrderType()==OP_BUYSTOP) {
Trades=1;
Type="BUY";
Reverse=True;
tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Sleep(5000); }
bres=OrderDelete(OrderTicket());
if (!bres) Print("Error deleting order : ",ErrorDescription(GetLastError()));
return;
}
}
}
if (!OrderSelect(Cnt,SELECT_BY_POS,MODE_TRADES)) continue;
//We secure SecureProfit (10) pips after TrailSecureProfit (16) pips
if ( OrderStopLoss()>=OrderOpenPrice()-SecureProfit*Point
&& OrderOpenPrice()-Ask>=TrailSecureProfit*Point ) {
tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Sleep(5000); }
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-SecureProfit*Point,0,0,DeepSkyBlue);
//ModifyOrder(Ord(cnt,VAL_TICKET),Ord(cnt,VAL_OPENPRICE),((Ord(cnt,VAL_OPENPRICE))-SecureProfit*Point),0,DeepSkyBlue);
Trades=0;
Type="NONE";
Reverse=False;
tmp=OrderOpenPrice()-SecureProfit*Point;
Print("SELL Stoploss trailed to Openprice-SecureProfit=",tmp);
//Exit;
}
if (TrailingStop>0) {
if ( OrderStopLoss()<=OrderOpenPrice()-SecureProfit*Point && OrderStopLoss()>Ask+TrailingStop*Point ) {
tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Sleep(5000); }
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*Point,0,0,Purple);
//ModifyOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_OPENPRICE),Ask+Point*(TrailingStop+SecureProfit),0,Purple);
Trades=0;
Type="NONE";
Reverse=False;
//Exit;
}
}
}
}
}
//Alert(StrToTime("2005.11.30"));
return;
}
double LotsRisk(int StopLoss) {
double lot=Lots;
//---- select lot size
if (!FixedLot)
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk*0.001/StopLoss,1);
else
lot=Lots;
//---- return lot size
if(lot<MinLot) lot=MinLot;
if(lot>MaxLot) lot=MaxLot;
return(lot);
}
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---